-
Die
vorliegende Erfindung betrifft ein Verfahren zum Optimieren der
Verteilung von Dienstinstanzen zum Bereitstellen eines Dienstes
von einer Quelle zu einer Vielzahl von Clients in einem Netz. Eine Dienstinstanz
ist eine Einrichtung, die einem Client einen Dienst bereitstellen
kann. Im Falle von Internetdiensten ist die Dienstinstanz beispielsweise
ein Proxy Server; im Falle von Informationsdiensten ist die Dienstinstanz
beispielsweise eine Datenbank; im Falle der Logistik kann die Dienstinstanz
eine Übertragungsstation
sein. In einem Telekommunikationsnetz können die „Clients" beispielsweise Zugangsnetze oder Zugangsknoten
oder Benutzerendgeräte sein.
-
Die
Erfindung wird anhand eines nicht einschränkenden Beispieles in ihrer
Anwendung auf ein Telekommunikationsnetz des WAN-Typs (Wide Area Network)
für eine
Punkt-zu-Mehrpunkt-(Point-To-Multipoint – PTM)-Dienstverteilung beschrieben.
Allerdings kann sie in einer Reihe weiterer Bereiche angewendet
werden, z.B. Logistik, Verkehrsmanagement etc.
-
Je
nach der Netzwerktopologie kann sich das Anordnen von Dienstinstanzen
als ziemlich komplex erweisen.
-
Das
U.S.-Patent 6,167,438 offenbart beispielsweise ein Verfahren und
ein System zur Lastverteilung in einem verteilten Netz. Allerdings
kann das offenbarte Verfahren nicht für die Bestimmung einer optimierten
Verteilung von Dienstinstanzen verwendet werden.
-
Die
europäische
Patentanmeldung
EP 1 231 753 offenbart
ein Verfahren zum Bestimmen eines Dienstanbieters aus einer Vielzahl
von Dienstanbietern für
jeden Client aus einer Vielzahl von Clients. Allerdings wird die
Anzahl der Dienstanbieter durch das offenbarte Verfahren nicht notwendigerweise
optimiert.
-
In
einem verteilten System, wobei auf Dienste von mehreren geographisch
verteilten Clients gleichzeitig zugegriffen wird, sollte eine optimale Dienstverteilungsstrategie
in Abhängigkeit
der Erfordernisse einer Vielfalt von Endgeräten und Teilnetzen viele Faktoren
berücksichtigen.
Sie sollte auch die Dienstanforderungen in Betracht ziehen. Zusätzlich sollte
eine optimale Strategie die Anzahl der Dienstinstanzen (d.h. Ausstattung
oder Diensteinheiten, die den Clients den Dienst bereitstellen)
beschränken,
während
sämtlichen
Clients eine adäquate
Dienstgüte
zur Verfügung
gestellt wird. Jedoch gibt es für
derartige PTM-Szenarien derzeit keine klare Lösung.
-
Die
vorliegende Erfindung zielt darauf ab, diesen Nachteil zu überwinden.
-
Hierfür gibt die
vorliegende Erfindung ein Verfahren an zum Bestimmen von Orten von Dienstinstanzen
zum Optimieren der Verteilung eines Dienstes in einem Netz, von
einer Quelle zu einer Vielzahl von Clients mit jeweils vorbestimmten
Anforderungen, wobei das Netz mittels eines Graphs modelliert werden
kann, wobei das Verfahren dadurch gekennzeichnet ist, dass es die
Schritte umfasst:
Anordnen einer Dienstinstanz in jedem Blatt
in dem Graph; und, ausgehend von den Blättern, für jede Dienstinstanz:
Überprüfen, ob
die Dienstinstanz, wenn diese in einem Knoten der nächst höheren Ebene
angeordnet ist, die Anforderungen sämtlicher von der Dienstinstanz
zu bedienenden Clients erfüllen
kann; und
Bewegen oder nicht dieser Dienstinstanz eine Ebene nach
oben, in Abhängigkeit
des Ergebnisses der Überprüfungsschrittes.
-
Gemäß einem
besonderen Merkmal umfasst das Verfahren weiterhin die Schritte
des Bestimmens, dass sich mindestens zwei Dienstinstanzen in dem
obengenannten Knoten treffen, und des Kombinierens dieser Dienstinstanzen.
-
Somit
können
dank der vorliegenden Erfindung die minimale Anzahl von Dienstinstanzen,
die für
das Bereitstellen des Dienstes an die Clients in einem Netz erforderlich
sind, sowie die entsprechenden Orte dieser Dienstinstanzen bestimmt
werden.
-
Gemäß einem
besonderen Merkmal umfasst das Verfahren vor dem Schritt des Anordnens
weiterhin einen Schritt des Bestimmens von Ebenen in dem Graph.
-
Falls
der das Netz modellierende Graph keine Ebenen per se umfasst, ermöglicht es
dieser Schritt deshalb, eine aus Ebenen bestehende Struktur des
Graphs aufzubauen.
-
Der
Schritt des Überprüfens kann
einen tabellen-basierten Analyseschritt oder einen Petrinetz-Analyseschritt
umfassen.
-
Mit
demselben Gegenstand wie oben erwähnt gibt die vorliegende Erfindung
auch einen Knoten in einem ein Netz modellierenden Graph an, der dadurch
gekennzeichnet ist, dass er ein Verfahren, wie oben kurz beschrieben,
implementiert.
-
Mit
demselben Gegenstand wie oben erwähnt gibt die vorliegende Erfindung
auch einen Server in einem Telekommunikationsnetz an, der dadurch
gekennzeichnet ist, dass er eine Quelle darstellt, die ein Verfahren,
wie oben kurz beschrieben, implementiert.
-
Mit
demselben Gegenstand wie oben erwähnt gibt die vorliegende Erfindung
auch eine Vorrichtung zum Bestimmen von Orten von Dienstinstanzen
an, zum Optimieren der Verteilung eines Dienstes in einem Netz von
einer Quelle zu einer Vielzahl von Clients mit jeweils vorbestimmten
Anforderungen, wobei das Netz mittels eines Graphs modelliert werden
kann, wobei die Vorrichtung dadurch gekennzeichnet ist, dass sie
umfasst:
eine Aufnahmeeinheit zum Hosten einer Dienstinstanz;
eine Überprüfungseinheit
zum Überprüfen, ob
die Dienstinstanz, wenn diese in einem Knoten der nächst höheren Ebene
angeordnet ist, die Anforderungen sämtlicher von der Dienstinstanz
zu bedienenden Clients erfüllen
kann;
eine Verarbeitungseinheit zum Koordinieren der Aufnahmeeinheit
und der Überprüfungseinheit
und zum Steuern des Knotens; und
eine Eingabe-/Ausgabeeinheit
zum Senden und Empfangen von Nachrichten und Dienstinstanzen.
-
Gemäß einem
besonderen Merkmal umfasst die Vorrichtung ferner eine Kombiniereinheit
zum Bestimmen, dass sich mindestens zwei Dienstinstanzen in dem
Knoten treffen, und zum Kombinieren dieser Dienstinstanzen.
-
Mit
demselben Gegenstand wie oben erwähnt gibt die vorliegende Erfindung
auch einen Knoten in einem ein Netz modellierenden Graph an, der dadurch
gekennzeichnet ist, dass er eine wie oben kurz beschriebene Vorrichtung
umfasst.
-
Die
Vorteile der Knoten, des Servers und der Vorrichtung sind denen
des Verfahrens gemäß vorliegender
Erfindung ähnlich
und werden deshalb hier nicht wiederholt.
-
Weitere
Merkmale und Vorteile der vorliegenden Erfindung gehen aus der folgenden
ausführlichen
Beschreibung bevorzugter Ausführungsformen
anhand nicht beschränkender
Beispiele hervor.
-
Die
Beschreibung bezieht sich auf die beiliegenden Zeichnungen.
-
1 zeigt
schematisch ein Netz, wobei zwei sich überschneidende Mengen von Teilnetzen jeweils
zum Bereitstellen eines Dienstes von einem Server an zwei Clients
identifiziert werden, wobei die Mengen der Teilnetze derartige Teilnetze
umfassen, die den Dienst mit einer adäquaten Dienstgüte bereitstellen.
-
2 zeigt
schematisch die Komplexität
der Dienstverteilungstopologie im Fall einer höheren Anzahl von Clients;
-
3 zeigt
ein Beispiel für
einen Dienstverteilungsbaum;
-
4a, 4b, 4c, 4d sind
Flussdiagramme, die aufeinanderfolgende Schritte eines Optimierungsverfahrens
gemäß der vorliegenden
Erfindung in verschiedenen Ausführungsformen
zeigen, wobei das Netz mittels einer baum-basierten Topologie modelliert ist;
-
5 ist
ein Flussdiagramm, das aufeinanderfolgende Schritte eines Optimierungsverfahrens gemäß der vorliegenden
Erfindung in einer weiteren Ausführungsform
zeigt, wobei das Netz mittels einer vermaschten Topologie modelliert
ist;
-
6 zeigt
ein nicht einschränkendes
Beispiel einer Tabelle, die im Verlauf des Optimierungsverfahrens
gemäß einer
bestimmten Ausführungsform
der vorliegenden Erfindung die Analyse darstellt, welche für einen
Knoten in dem das Netz modellierenden Graph ausgeführt wird;
-
7 zeigt
schematisch eine Vorrichtung gemäß der vorliegenden
Erfindung in einer bestimmten Ausführungsform.
-
Im
folgenden wird von einem Telekommunikationsnetz des WAN-Typs ausgegangen.
-
Ein
Dienst soll von einer Quelle, z.B. einem Server, an eine Vielzahl
von Clients in dem Netz verteilt werden.
-
Vor
der Anwendung des Optimierungsverfahrens gemäß der Erfindung kann eine Reihe
von zu erfüllenden
Bedingungen wahlweise definiert werden. Es kann gemäß eines
nicht einschränkenden Beispiels
erforderlich sein, dass die maximale Anzahl von Dienstinstanzen
einen vorbestimmten Prozentsatz (z.B. 25%) der aktuellen Anzahl
an Clients, die bedient werden, nicht übersteigt. Ferner kann es erforderlich
sein, dass die mit der Verteilung des Dienstes an jeden Client verbundene
Verzögerung
einen vorbestimmten Wert (z.B. 500 ns bzw. ein Wert, der vom Dienst
festgelegt ist) nicht übersteigt.
-
Es
wird angenommen, dass das Netz mittels eines Graphs modelliert werden
kann, z.B. durch Verwenden einer baum-basierten Topologie (in diesem Fall
ist der Graph ein Baum) oder einer teilweise oder vollständig vermaschten
Topologie, wobei beide dem Fachmann bekannt sind.
-
Die „Zielpunkte" im Graph sind die
Teilnetze, die mit den Clients verbunden sind (d.h. mit den Blättern im
Baum). Die Zielpunkte kennen beispielsweise von herkömmlichen
Routing-Protokollen, wie dem BGP (Border Gateway Protocol), die
Entfernung zum Server, der den Dienst zuerst erbringt.
-
Erfindungsgemäß wird die
zwischen den Dienstinstanzen und den Zielpunkten erlaubte maximale
Entfernung aufgrund vordefinierter Metriken bestimmt.
-
„Netzmetrik" hat die Bedeutung
einer Funktion d(X,Y), die auf dem kartesischen Quadrat einer gegebenen
Menge, z.B. einer Menge von Netzknoten, definiert ist, die eine
Reihe von standardmäßigen Eigenschaften
erfüllt:
d ist nichtnegativ, es erfüllt
die Eigenschaft eines Dreiecks, d(X,Z) ≤ d(X,Y) + d(X,Z), und d(X,X)
= 0 für
jeden Knoten X, Y, Z. Um eine Metrik in einem Netz zu definieren,
ist es ausreichend, die Länger
jeder Verbindung zwischen zwei Knoten in dem Netz zu definieren.
Mit einer Anzahl von Metriken d1, d2,..., dk, die die
Entfernungen zwischen beliebigen Knoten X, Y im Netz definieren,
ist es möglich, diese
Metriken auf eine einzige kombinierte Metrik d(X,Y) zu verkleinern,
indem existierende, dem Fachmann geläufige Verfahren verwendet werden,
z.B. durch Verwenden des Maximums von d1,
d2,..., dk oder
deren Summe oder sogar deren Faltung mit einem gegebenen Gewicht,
in Abhängigkeit
der Teilnehmer- oder Kundenanforderungen, der Kosten etc.
-
Ein
typisches Beispiel für
Metriken betrifft die Dienstgüte,
z.B. die Bandbreite, Verzögerung,
Jitter, Zuverlässigkeit,
Sicherheit, Antwortzeit RTT (Round Trip Time – Umlaufzeit) oder eine Kombination
dieser Faktoren. Die erforderliche Metrik oder ein entsprechender
erforderlicher Minimum- und/oder Maximumwert wird mittels der Zielpunkte
(z.B. die Clients im Falle einer Dienstbereitstellung), der Quelle
(z.B. ein Dienst), dem Netzanbieter, dem Dienstanbieter oder einer
Kombination dieser Einrichtungen bestimmt.
-
Je
nach Kontext kann der Begriff „Metrik" deshalb entweder
die Bedeutung haben, dass sie ein bestimmtes Netz, eine Verbindung
oder eine Verbindungsstrecke darstellt, oder aber die Bedeutung, dass
sie eine Entfernung in Graphentheorie oder allgemeiner in metrischer
Raumtheorie darstellt.
-
Eine
Zielpunkt in dem Graph kann entweder eine einzige Einrichtung, z.B.
ein Client-Endgerät oder ein
Zugangsnetz, oder eine Ansammlung von Einrichtungen darstellen,
z.B. sämtliche
Clients in einem Zugangsnetz, sämtliche
Clients in einem bestimmten Bereich, sämtliche Clients mit denselben Kenndaten,
sämtliche
Kunden eines bestimmten Logistikdienstes etc. Es sei angemerkt,
dass die Clients in indirekter Weise mit den Zielpunkten verbunden sein
können,
z.B. über
ein Teilnetz, das nicht in dem Graph modelliert ist.
-
Wie
in 1 gezeigt, können
mehrere Netze oder Teilnetze (7 sich überschneidende Netze gemäß 1)
zwischen dem Server und dem (den) Client(s) verwendet werden, um
Dienstinstanzen zu hosten. Die als Si, i = 1,..., 32 in der Zeichnung
bezeichneten (Teil-) Netze befinden sich nicht notwendigerweise
auf einem einzigen Weg zwischen dem Server und dem (den) Client(s).
-
Im
Falle eines einzigen Clients ist es möglich, sämtliche Umgebungs-(Teil-)-Netze
zu bestimmen, in denen eine Dienstinstanz das Bereitstellen einer
adäquaten
Dienstgüte
ermöglichen,
d.h. die Anforderungen der Clients erfüllen würde. Eine derartige Analyse
kann auf Entfernungsvektor-Routing-Protokollen basieren, die eine
Tabelle mit den kürzesten
Wegen zu sämtlichen
Zielen, d.h. (Teil-) Netzen verwenden. Das Ergebnis eines derartigen Analyseschrittes
wäre eine
Tabelle pro Client (oder pro Zugangsnetz), die sämtliche (Teil-) Netze angibt, welche
Dienstinstanzen hosten und adäquate Dienstgüte bereitstellen
können.
Diese Tabelle kann dann aufgrund der Wegentfernung vom (von den)
Client(s) zu den entsprechenden (Teil-) Netzen sortiert werden,
wobei jedes (Teil-) Netz nur einmal in der Tabelle (pro Client)
dargestellt ist. Die Wegentfernung wird durch jede der obengenannten
Metriken oder Metrikkombinationen bestimmt.
-
Allerdings
existieren im allgemeinen in einer teilweise oder vollständig vermaschten
Topologie viele Wege zwischen dem (den) Client(s) und dem Server,
so dass die oben erwähnten
Tabellen viele (Teil-) Netze umfassen. In einer Situation mit einer
Dienstaufteilung an viele Kunden ist deshalb ein Optimierungsschritt
erforderlich, um aus den möglichen (Teil-)
Netzen pro Client die (Teil-) Netze zu bestimmen, die eine Dienstverteilung
mit der minimalen Anzahl von Dienstinstanzen vornehmen. Die 1 zeigt,
dass die Mengen der (Teil-) Netze, die eine adäquate Dienstgüte bereitstellen,
für beide
Clients C1 und C2 identifiziert wurden. Die (Teil-) Netze S10, S13,
S14, S21, S28 und S29 bilden einen Teil der Überschneidung zwischen den
beiden Netzen und können
eine Dienstbereitstellung für
beide Clients ausführen.
Obgleich es in diesem Szenario möglich ist,
ein optimales (Teil-) Netz aus der Überschneidung zu identifizieren,
wird das Problem komplex, wenn mehrere tausend Clients involviert
sind und eine optimale Dienstverteilung für viele Überschneidungen vieler Clients
bestimmt werden muss, wie der in der 2 gezeigte
Fall einer Vielzahl von Überschneidungsmengen
von (Teil-) Netzen zeigt. Ferner kann das Hinzufügen oder Entfernen von Clients
eine erheblichen Teil der Dienstverteilungstopologie beeinflussen.
-
Aus
diesem Grund wird eine vereinfachte Topologiedarstellung gebraucht.
Eine Übermittlungsbaumstruktur
kann verwendet werden, um die Topologie zu optimieren und die Anzahl
der erforderlichen Dienstinstanzen zu minimieren. Da die Dienstverteilung
mit einer einzigen Quelle und mehreren Clients stattfindet, kann
der Übermittlungsbaum
gemäß einem
nicht einschränkenden
Beispiel durch den RPM-(Reverse Path Multicast)-Algorithmus erzeugt werden,
der von Hersent et al. in „IP
Telephony: Packet-based multimedia communictions systems", Addison-Wesley,
Harlow, 2000 beschrieben ist.
-
Wie
der Fachmann weiß,
bildet der RPM-Algorithmus quellen-basierte Bäume, die (Teil-) Netze mit
Clients aufspannen. Andere Übermittlungsbäume wie
z.B. Erstreckungsbäume
für minimale
Kosten oder Steiner-Bäume,
können
ebenfalls Anwendung finden.
-
Der
RPM-Verteilungsbaumalgorithmus erzeugt einen Baum von (Teil-) Netzen
mit exakt einem kürzesten
Weg vom Server zu sämtlichen
Clients/Zugangsnetzen. Da ein eindeutiger Weg vom Server zu jedem
Zugangsnetz vorliegt, sind Schleifen nicht möglich.
-
Jeder
Weg vom Server endet in einem Zugangsnetz.
-
Somit
stellen die Zugangsnetze Blätter
im Dienstverteilungsbaum dar.
-
Die 3 zeigt
ein Beispiel eines Dienstverteilungsbaumes. Ein derartiger Baum
kann beispielsweise auf dem RPM-Algorithmus basieren. Das Dienstnetz/der
Server stellt die Wurzel des Baumes und die Zugangsnetze die Blätter dar.
-
Die
Verteilung eines Dienstes vom Dienstnetz auf S6 schränkt die
Dienstinstanzen ein, die in einem der (Teil-) Netze auf dem Weg
S1, S2, S3, S4, S5, S6 angeordnet werden sollen. Das Verteilen eines
Dienstes vom Dienstnetz auf S21 bedeutet, dass die Dienstinstanzen
in einem (Teil-) Netz auf dem Weg S1, S15, S16, S20, S21 angeordnet
werden.
-
Unterschiedliche
Dienstanforderungen können über einen
einzigen Baum abgewickelt werden, der auf der Basis einer Kombination
von Metriken für diese
gegebenen Anforderungen aufgebaut ist.
-
Unterschiedliche
Dienstverteilungsalgorithmen gemäß der Erfindung
existieren in Abhängigkeit der
Topologie des Netzes (baum-basiert oder vermascht), des Verarbeitungstyps
(zentral oder verteilt) und des Auslösemodus, d.h. der Startmodus
für die Analyse,
die zur Optimierung führt.
-
Die
Verarbeitung findet entweder in einer zentralen Einheit (z.B. der
Quelle, die beispielsweise den Standort des Servers darstellt) oder
verteilt in den verschiedenen Knoten (z.B. in denen die Teilnetze
angeordnet sind) statt.
-
Das
Auslösen,
d. h. der Beginn der Analysen in der Zentraleinheit oder in den
verschiedenen Knoten erfolgt entweder durch eine Zentraleinheit,
Ebene für
Ebene, oder ist knoten-implizit, d.h. die verschiedenen Knoten führen eine
unabhängige
Verarbeitung durch und lösen
lediglich den nächsten
Knoten aus (bei dem es sich – wie
später
beschrieben – um
einen Knoten einer höheren
Ebene handelt), indem eine Dienstinstanz an diesen gesendet wird.
-
Somit
gibt es mindestens vier mögliche
Ausführungsformen
für das
erfindungsgemäße Optimierungsverfahren:
- – eine
Dienstverteilungsoptimierungsprozedur mit einer baum-basierten Topologie,
einer verteilten Verarbeitung und einer zentralen Auslösung;
- – eine
Dienstverteilungsoptimierungsprozedur mit einer baum-basierten Topologie,
einer verteilten Verarbeitung und einer knoten-impliziten Auslösung;
- – eine
Dienstverteilungsoptimierungsprozedur mit einer baum-basierten Topologie,
einer zentralen Verarbeitung und einer zentralen Auslösung; und
- – eine
Dienstverteilungsoptimierungsprozedur mit einer vermaschten Topologie,
einer zentralen Verarbeitung und einer zentralen Auslösung.
-
Erfindungsgemäß besteht
der Wunsch, die Anzahl der Dienstinstanzen zu minimieren. Während der
unten beschriebenen Schritte ist die Anordnung von Dienstinstanzen
halb-permanent, da wahlweise eine zusätzliche Prozedur angewendet
werden kann, um zu versuchen, die Dienstinstanzen näher an die Clients
heranzubewegen, ohne dass die Dienstinstanzen repliziert werden
müssen.
Während
dieser optionalen Prozedur können
die Dienstinstanzen in anderen Knoten angeordnet werden. Selbstverständlich kann
dies nur erfolgen, wenn die Dienstinstanz auf einem nicht divergie
enden Weg zu den Kunden bewegt wird.
-
Je
nach gewählter
Strategie kann entschieden werden, Dienstinstanzen nicht näher an den
Clients, sondern näher
an der Quelle anzuordnen. Selbstverständlich findet die Erfindung
in beiden Fällen
Anwendung.
-
Zum
Ausführen
der Prozedur des Bewegens der Dienstinstanzen näher an die Clients heran gibt es
zwei Möglichkeiten:
- – Entweder
erinnert man sich bei jeder Dienstinstanz an die letzte Ebene, auf
d er zwei Dienstinstanzen zusammengeführt wurden, und die Dienstinstanz
wird nach unten bewegt, d.h. näher an
die Clients heran, bis diese Ebene erreicht ist;
- – oder
ein Knoten kennt die Anzahl seiner Zweige, und die Dienstinstanz
wird r ach unten bewegt, solange ein Knoten nur einen Zweig hat,
der zu den Clients führt
(d.h. bis die Dienstinstanz beim weiteren Abwärtsbewegen repliziert werden müsste).
-
Zunächst soll
vom Fall einer Dienstverteilungsoptimierungsprozedur mit einer baum-basierten Topologie,
einer verteilten Verarbeitung und einer zentralen Auslösung ausgegangen
werden. Diese Ausführungsform
ist in der 4a dargestellt.
-
Zunächst wird
eine Baumtopologie des Netzes aufgebaut, z.B. durch Verwenden eines
herkömmlichen
Routing-Protokolls (Schritt 40a). Es werden entweder eine
einzige Metrik oder Metrikkombinationen verwendet. Im Falle einer
Metrikkombination kann es vorteilhaft sein, verschiedene Metriken
zu einer einzigen Gesamtmetrik zu kombinieren, z.B. mittels Wägen.
-
Als
nächstes
werden Dienstinstanzen in sämtlichen
Blättern
des Baumes angeordnet (Schritt 42a). Zum Bestimmen der
Blätter
kennt entweder die Quelle (oder Wurzel) des Baumes die Blätter aus
der Routing-Protokollinformation, oder es wird eine Dienstinstanz
durch den Baum gesendet, wobei die Blätter diejenigen Punkte sind,
die die Dienstinstanz behalten (anstatt sie zu übertragen). Dienstinstanzen können eine
echte Dienstinstanz vertreten (z.B. über einen mobilen Agenten,
der ein Softwaremodul ist), oder die Dienstinstanz selbst kann verwendet
werden. Blätter
können
unterschiedliche Entfernungen zur Wurzel aufweisen, d.h. Blätter können auf
unterschiedlichen Ebenen im Baum angeordnet sein.
-
Als
(nicht dargestellte) Option wird dann überprüft, ob eine Dienstinstanz in
einem Knoten vorliegt, bevor der Auslöser auf diesen Knoten angewendet
wird. Anderenfalls wird der Auslöser
auf der entsprechenden Ebene an sämtliche Knoten gesendet (Schritt 44a),
z.B. der Auslöser
wird rundgesendet, und jeder Knoten überprüft, ob er sich auf der angeforderten
Ebene im Baum befindet (z.B. erhöht
jeder Knoten einen Ebenenzähler
und sendet die Meldung an sämtliche
seiner untergeordneten Knoten). Auch die Wurzel kann die Knoten
für eine
gegebene Ebene aus der Routing-Protokollinformation
kennen.
-
Gibt
es mehr als eine Dienstinstanz im selben Knoten (Test 46a),
so werden diese zusammengeführt.
Dies bedeutet, dass die Dienstinstanzen als eine einzige Dienstinstanz
behandelt werden.
-
Somit
muss die neue einzige Dienstinstanz sämtliche Anforderungen sämtlicher
Clients berücksichtigen,
die nunmehr von der neuen einzigen Dienstinstanz bedient werden.
Dies kann beispielsweise durch die Auswahl des niedrigsten bzw.
des höchsten
Wertes für
jede Metrik, die von einem der Clients angefordert wird, implementiert
werden.
-
Diese
Zusammenführungsprozedur
kann am Ende der Globalschleife erfolgen, die nach dem Auslösen einer
gegebenen Ebene durchgeführt
wird. Gemäß einer
vereinfachten Variante werden sämtliche Anforderungen
von sämtlichen
Clients kombiniert, jedoch nicht zusammengeführt.
-
Als
nächstes
wird die erforderliche Information vom Knoten der nächst höheren Ebene
abgerufen (Schritt 50a).
-
Wenn
es aufgrund der abgerufenen Information, d.h. unter gleichzeitiger
Berücksichtigung
der Kenndaten des Knotens der nächst
höheren
Ebene sowie der Client-, Dienst- etc. -anforderungen, möglich ist,
die Dienstinstanz zum Knoten der nächst höheren Ebene zu bewegen (Test 52a),
so wird die Dienstinstanz zum Knoten der nächst höheren Ebene bewegt (Schritt 54a).
Anderenfalls bedeutet dies, dass die Dienstinstanz nicht höher bewegt
werden kann, und der Dienstinstanz wird ein halbpermanenter Status
verliehen (Schritt 56a). Diese Information wird an die
Wurzel übertragen.
-
Die
Globalschleife endet, sobald sämtliche Dienstinstanzen
einen halb-permanenten Status erhalten haben (Test 58a).
-
Anschließend wird
wahlweise, wie oben erläutert,
die Prozedur zum Bewegen der Dienstinstanzen näher an die Clients ausgeführt (nicht
dargestellt).
-
Werden
Clients entfernt bzw. neue Clients hinzugefügt, so wird die Prozedur für sämtliche
Knoten wiederholt, es sei denn, dass sich die Knoten an die Zweige,
für die
sie verantwortlich sind, an die Clients, die sie bedienen, sowie
die entsprechenden Beschränkungen
erinnern.
-
Im
folgenden soll eine rekursive Variante dieses Verfahrens beschrieben
werden. Es wird angenommen, dass die Blätter die Anforderungen und
Beschränkungen
kennen, die von Clients, denen der Dienst erbracht werden soll,
auf der Dienstinstanz vorgesehen wurden. Dies Ausführungsform
ist in der 4b dargestellt.
-
Das
rekursive Verfahren verwendet zwei Meldungen, nämlich eine Anforderungsmeldung
und eine Antwortmeldung.
-
Ein
Knoten sendet eine Anforderungsmeldung an die benachbarten Knoten
innerhalb der nächst
niedrigeren Ebene in dem Baum (d.h. an seine untergeordneten Knoten).
Wird ein Blatt, welches einen mit mindestens einem Client direkt
verbundenen Knoten darstellt, erreicht, so wird eine Dienstinstanz
erzeugt.
-
Gemäß einer
weiteren Ausführungsform
der Erfindung werden Dienstinstanzen auf den Blättern angeordnet, bevor eine
Anforderungsmeldung gesendet wird.
-
In
beiden Ausführungsformen
führt ein
Blatt die folgenden Schritte durch:
- 1. Empfangen
einer Anforderungsmeldung;
- 2. Überprüfen, ob
die Dienstinstanz auf dem übergeordneten
Knoten angeordnet werden kann;
- – falls
ja, wird eine positive Antwort gesendet, die die Anforderungen des
mindestens einen Client enthält;
- – falls
nicht, wird eine negative Antwort gesendet, und der Dienstinstanz
wird ein halb-permanenter Status verliehen.
-
Es
sei angemerkt, dass eine Anforderungsmeldung Informationen über die
Kenndaten des übergeordneten
Knotens und der Verbindungsstrecke übertragen kann, die gebraucht
wird, um zu prüfen,
ob eine Dienstinstanz von der unteren Ebene aus in den Knoten bewegt
werden kann oder nicht.
-
Die
Antwortmeldung überträgt Dienstinstanzen
sowie die zugehörigen
Informationen, z.B. Anforderungen über die Dienstgüte und weitere
Beschränkungen.
Es kann auch eine negative Antwort gesendet werden, was bedeutet,
dass keine Dienstinstanz vom untergeordneten Knoten nach oben bewegt wird.
-
Wie
oben erwähnt,
wird die Baumtopologie aufgebaut und als bekannt vorausgesetzt.
Aufgrund von Routing-Protokollinformationen folgert beispielsweise
ein gegebener Knoten, wenn er eine Anforderungsmeldung empfängt, daraus
automatisch, dass es sich bei dem Knoten, der die Anforderungsmeldung
abgesendet hat, sein übergeordneter
Knoten ist, und dass der empfangende Knoten einen übergeordneten
Knoten für
verbleibende benachbarte Knoten darstellt, die dann als dessen untergeordnete Knoten
angesehen werden.
-
Gemäß dem rekursiven
Verfahren werden die folgenden Schritte durchgeführt.
- 1.
Um die Ausführung
der Prozedur zu starten, sendet der Server Anforderungsmeldungen
an seine untergeordneten Knoten (Schritt 40b).
- 2. Jeder Knoten wartet auf eine Anforderungsmeldung von seinem übergeordneten
Knoten.
- 3. Wird eine Anforderungsmeldung vom übergeordneten Knoten empfangen,
sendet der Knoten eine Anforderungsmeldung an sämtliche seiner untergeordneten
Knoten (Schritt 42b).
- 4. Nachdem die Anforderungsmeldungen gesendet sind, wartet der
Knoten auf Antwortmeldungen von sämtlichen seiner untergeordneten
Knoten.
- 5. Sind sämtliche
der Antwortmeldungen negativ (Test 44b), so sendet der
Knoten eine negative Antwort nach oben an seinen übergeordneten Knoten
und ordnet in diesem keine Dienstinstanz an (Schritt 46b).
- 6. Wird anderenfalls mindestens eine positive Antwort empfangen,
so führt
der Knoten die Dienstinstanzen, die er von seinen untergeordneten
Knoten empfangen hat, zusammen und bildet die akkumulierten Anforderungen
und Beschränkungen
für die
neue Dienstinstanz, die durch das Zusammenführen (Schritt 48b)
erhalten wird. Gemäß einer
vereinfachten Variante werden sämtliche
Anforderungen von sämtlichen
Clients kombiniert und nicht zusammengeführt.
- 7. Anschließend überprüft der Knoten,
ob die neue Dienstinstanz aufwärts
bewegt werden kann (Test 50b). Falls ja, sendet der Knoten
eine positive Antwort mit den Kenndaten der Dienstinstanz (Schritt 52b).
Anderenfalls wird eine negative Antwort gesendet, und der Dienstinstanz
in dem Knoten wird ein halb-permanenter Status verliehen (Schritt 54b).
- 8. Die Ausführung
dieser Prozedur ist beendet, wenn der Server Antwortmeldungen von
sämtlichen
seiner untergeordneten Knoten empfängt (Test 56b). Im
Falle mindestens einer positiven Antwortmeldung wird eine Dienstinstanz
mit einem halb-permanenten Status in dem Server angeordnet.
- 9. Wahlweise können
die Dienstinstanzen mit einem halb-permanenten Status, wie oben
erwähnt, näher an die
Clients heranbewegt werden.
-
Mit
geringfügigen
Abänderungen
funktioniert das rekursive Verfahren bei einer dynamischen Vorgehensweise,
wenn neue Clients hinzugefügt
oder Clients gelöscht
werden. Zu diesem Zweck behält
jeder Knoten seine letzte Antwortmeldung sowie die letzten Antwortmeldungen,
die er von seinen untergeordneten Knoten empfangen hat. Bei Ankunft
einer Antwortmeldung ist der Knoten dann in der Lage, die Kenndaten
der Dienstinstanz erneut zu bewerten und, falls erforderlich, eine
neue Antwortmeldung an seinen übergeordneten
Knoten zu senden. Bei einem dynamischen Aufbau sollten deshalb Knoten
nicht warten, bis sie sämtliche
der Antwortmeldungen von ihren untergeordneten Knoten empfangen
haben. Jeder Knoten sollte die Meldung, die er von seinem übergeordneten
Knoten empfangen hat, nach dem Ablauf eines vorbestimmten Zeitgebers
beantworten. Der Zeitgeber muss korrekt angepasst werden, um eine
zu häufige
Wiederbewertung der Dienstinstanz in dem Knoten sowie zu viele Neuantworten
zu vermeiden. Es sei angemerkt, dass ein Zeitgeber auch in dem oben
beschriebenen Verfahren verwendet werden kann, das bei einem nicht
dynamischen Aufbau ausgeführt
wird. Der Wert des Zeitgebers kann aus den Wegentfernungen bestimmt
werden, wobei diese Information beispielsweise aus den Routing-Protokollen
verfügbar
ist.
-
Im
folgenden soll der Fall einer Dienstverteilungsoptimierungsprozedur
mit einer baum-basierten Topologie, einer verteilten Verarbeitung
sowie einer knoten-impliziten
Auslösung
betrachtet werden. Diese Ausführungsform
ist in der 4c dargestellt.
-
Wie
in den vorherigen Fällen
wird zunächst eine
Baumtopologie des Netzes aufgebaut und die Dienstinstanzen in sämtlichen
Blättern
des Baumes angeordnet (Schritte 40c, 42c).
-
Daraufhin
wird eine Schleife für
jede Dienstinstanz durchgeführt.
Gibt es in dem Knoten weitere Dienstinstanzen, so werden diese zusammengeführt (Test 44c,
Schritt 46c). Wie bei den vorherigen Ausführungsformen
werden gemäß einer vereinfachten
Variante sämtliche
Anforderungen von sämtlichen
Clients kombiniert, jedoch nicht zusammengeführt. Die notwendige Information
wird dann, falls vorhanden, von dem Knoten der nächst höheren Ebene abgerufen (Schritt 48c).
Ist es möglich,
die Dienstinstanz an den Knoten der nächst höheren Ebene zu bewegen (Test 50c),
so wird die Dienstinstanz an den Knoten der nächst höheren Ebene bewegt (Schritt 52c),
und wahlweise wird im Knoten der niedrigeren Ebene ein Fußabdruck,
z.B. ein Zeiger, hinterlassen, der anzeigt, dass die Dienstinstanz
den entsprechenden Knoten zuvor passiert hat. Ist es nicht möglich, die
Dienstinstanz an den Knoten der nächst höheren Ebene zu bewegen, so
wird der Dienstinstanz ein halb-permanenter Status verliehen (Schritt 54c).
-
Befindet
sich ein Fußabdruck
in dem Knoten, so wird wahlweise eine entsprechende Meldung an die
Wurzel gesendet. Ein Knoten einer höheren Ebene, der diese Meldung
(auf deren Weg zur Wurzel) empfängt, überprüft, ob er
die Anforderungen der Clients, die von dem Absender der Meldung
bedient werden können,
erfüllt,
Falls ja, entfernt er diese Anforderungen und berechnet neue akkumulierte
Anforderungen für
die verbleibenden Clients.
-
Die
Schleife wird beendet, wenn sämtlichen Dienstinstanzen
ein halb-permanenter Status zugeordnet wurde (Test 56c).
-
Anschließend können die
Dienstinstanzen mit einem halb-permanenten Status, wie oben erwähnt, wahlweise
näher an
die Clients heranbewegt werden.
-
Bei
diesem Szenario kann ein Knoten seine Ebene in dem Baum aus den
Routing-Protokollinformationen
kennen. Wie im vorherigen Fall wird auch hier einer Ebene- zu-Ebene-Vorangehensweise
gefolgt (baum-basierte Topologie, verteilte Verarbeitung, zentrale
Auslösung),
jedoch ohne eine zentrale Steuer- und Auslöseeinheit.
-
Wie
oben erwähnt,
kann jeder Knoten anstelle der entsprechenden Dienstinstanzanforderungen einen
Fußabdruck
speichern, der der Dienstinstanz entspricht, wenn diese Dienstinstanz
diesen Knoten zuvor passiert hat. Wenn eine andere Dienstinstanz in
diesem Knoten ankommt, so kann sie sämtliche notwendigen Informationen
aus der Dienstinstanz mit dem Fußabdruck abrufen. Ein Fußabdruck
kann auch zum Optimieren der Prozedur verwendet werden: Ein Knoten
sendet eine Meldung nur aufwärts (d.h.
zur Wurzel), wenn eine neue halb-permanente Dienstinstanz in dem
Knoten angeordnet werden soll und dieser Knoten über einen Fußabdruck
verfügt. Entfernt
ein Knoten höherer
Ebene die Dienstinstanz (weil ein Knoten einer niedrigeren Ebene
keine Dienstinstanz angeordnet hat), so müssen sämtliche Fußabdrücke zwischen dem Knoten der
höheren Ebene
und dem Knoten, in dem die Dienstinstanz gerade angeordnet ist,
entfernt werden. Ferner informiert der Knoten der höheren Ebene
den Knoten der niedrigeren Ebene, der die Dienstinstanz für die zuvor
von dem Knoten bedienten Clients hostet, über die bedienten Kunden sowie
deren Anforderungen. Somit kennt jede Dienstinstanz die Clients
und deren Anforderungen an die Dienstinstanzfähigkeiten.
-
Dieses
Verfahren kann das Entfernen bzw. Hinzufügen von Clients auch dynamisch
vornehmen. Für
die neuen Clients wird eine Dienstinstanz in dem entsprechenden
Blattknoten angeordnet. Die Dienstinstanz wird dann gemäß dem zuvor
beschriebenen Verfahren zur Wurzel bewegt. Für entfernte Clients wird eine
Meldung aufwärts
gesendet, die vortäuscht,
dass eine Dienstinstanz für
diesen Client in einer niedrigeren Ebene angeordnet wurde. Der Knoten
der höheren
Ebene mit der Dienstinstanz, die diesen Client bedient hat, entfernt
dann die entsprechenden Anforderungen für den entfernten Client.
-
Im
folgenden soll der Fall einer Dienstverteilungsoptimierungsprozedur
mit einer baum-basierten Topologie, einer verteilten Verarbeitung
sowie einer zentralen Auslösung
betrachtet werden.
-
Dieser
Vorgang ist in den Zeichnungen nicht dargestellt, da er im wesentlichen
derselbe ist, wie die Prozedur, die im Falle einer (in 4a dargestellten)
baum-basierten Topologie,
einer verteilten Verarbeitung sowie einer zentralen Auslösung ausgeführt wird.
Der einzige Unterschied besteht darin, dass keine Auslöser erforderlich
sind. Weitere Optimierungen sind möglich, nämlich aufgrund der Tatsache,
dass sämtliche
der notwendigen Informationen zentral zur Verfügung stehen.
-
Es
sei angemerkt, dass eine Kombination der zentralen Verarbeitung
und des Abrufes verteilter Informationen (wobei die Wurzel oder
der Server Informationen durch Abfragen bei den verschiedenen Knoten
abruft) von derselben Prozedur abgewickelt werden würde.
-
Das
Flussdiagramm gemäß 4d fasst
die Reihenfolge der gemäß dem Optimierungsverfahren – welches
den Gegenstand der Erfindung darstellt – ausgeführten Schritte in einer ersten
bevorzugten Ausführungsform
zusammen, wobei das Netz mittels einer baum-basierten Topologie
modelliert ist.
-
Bevor
die optionale (nicht dargestellte) Prozedur ausgeführt wird,
die darin besteht, dass versucht wird, die Dienstinstanzen näher zu den
Clients zu bewegen, wird das Optimierungsverfahren gemäß der Erfindung
wie in 4d gezeigt durchgeführt.
-
Während eines
ersten Schrittes 40 wird eine Dienstinstanz in jedem Blatt
des Baumes angeordnet.
-
Ausgehend
von den Blättern
im Baum (Ebene N) und der Bewegung zur Wurzel (Ebene 0), wie dies
im Initialisierungsschritt 41 und im Abwärtsschritt 46 gezeigt
ist, wird als nächstes
die folgende Prozedur Ebene für
Ebene des Baumes ausgeführt:
Für jeden
Knoten der geprüften
Ebene, auf der eine Dienstinstanz angeordnet ist, wird überprüft (Test 42),
ob die Dienstinstanz weiter aufwärts
zur Wurzel des Baumes bewegt werden kann, vorausgesetzt, dass die
Wurzel noch nicht erreicht wurde (ein Test 47 folgt dem
Abwärtsschritt 46 und
besteht in der Überprüfung, ob
der die Ebene darstellende Index gleich 0 ist).
-
Um
zu erkennen, ob die Dienstinstanz im Baum weiter aufwärts bewegt
werden darf, kann der Knoten den nächsten, im Baum höher angeordneten Knoten
kontaktieren, z.B. den entsprechenden Betriebsmittel-Manager im
Falle eines Teilnetzes, um den Betriebsmittelstatus anzufordern.
Bei der Anforderung kann es sich entweder um ei ne allgemeine Anforderung
handeln, oder eine dedizierte Anforderung für die entsprechenden relevanten
Metriken.
-
Gemäß einer
Variante kann der Knoten Betriebsmittelinformationen verwenden,
die von höheren
Ebenen im Baum empfangen wurden, ohne eine Anforderung zu senden.
-
Somit
wird überprüft, ob die
im Knoten angeordnete Dienstinstanz die Anforderungen sämtlicher Clients
erfüllt.
-
Ist
das Ergebnis des Tests 42 positiv, so wird die Dienstinstanz
zur Ebene i-1 bewegt (Schritt 43). Anderenfalls bleibt
der Ort der Dienstinstanz gleich.
-
Die
beiden folgenden Schritte 44 und 45 basieren auf
der Berücksichtigung
der Möglichkeit, mehrere
Dienstinstanzen miteinander zu kombinieren, sowie auf der Berücksichtigung
deren möglicher akkumulierter
oder kombinierter Anforderungen. Schritt 45 ist optional.
-
Wann
immer zwei oder mehr Dienstinstanzen sich beispielsweise während des
Schrittes 44 im selben Knoten treffen, werden sie vorzugsweise
zu einer einzigen Dienstinstanz kombiniert, und der entsprechende
Metrikwert, der eine Anforderung beschreibt, ist entweder der minimale
oder der maximale Wert der Metrik der akkumulierten Anforderung,
je nach Art der Metrik. Stellt die Metrik beispielsweise eine Verzögerung dar,
so bildet die der akkumulierten Anforderung zugeordnete einzige
Metrik das Minimum für
beide vorherigen Metriken, während,
wenn die Metrik die Bandbreite darstellt, der der akkumulierten
Anforderung zugeordnete Metrikwert das Maximum der beiden vorherigen
Metriken bildet. Als ein Ergebnis der Kombination von Dienstinstanzen
stellt dann eine einzige kombinierte Dienstinstanz den Dienst an
mehrere Clients gleichzeitig bereit. Gemäß einer vereinfachten Variante
werden sämtliche
Anforderungen von sämtlichen
Clients kombiniert, jedoch nicht zusammengeführt.
-
Falls
unterschiedliche Metriken oder Kombinationen von Metriken während des
Schritts 45 für
individuelle Zweige des Baumes verwendet werden, werden diese vorzugsweise
zu einer größeren Menge
von Metriken kombiniert. Verwendet beispielsweise einer der Zweige
des Graphs lediglich eine auf einer Verzögerung basierte Metrik, während ein
anderer Zweig nur eine auf der Bandbreite basierende Metrik verwendet,
so kann der kombinierende Knoten sowohl die Verzögerung als auch die Bandbreite
für beide
Zweige verwenden, oder aber er kann jede Metrik individuell für jeden
der Zweige verwenden. Bei einem Video-Streaming-Dienst kann die
Kombination von Metriken beispielsweise eine vorbestimmte maximale
Verzögerung,
eine vorbestimmte minimale Bandbreite sowie ein vorbestimmtes minimales
Jitter (d.h. eine maximale Verzögerungsschwankung)
enthalten, um eine akzeptable Dienstgüte zu gewährleisten.
-
Gemäß einer
weiteren bevorzugten Ausführungsform
kann das Netz nicht von einer baum-basierten Topologie, sondern
von einer gemaschten Topologie modelliert sein.
-
Im
folgenden soll der Fall einer Dienstverteilungsoptimierungsprozedur
mit einer gemaschten Topologie, einer zentralen Verarbeitung und
einer zentralen Auslösung
betrachtet werden. Die Prozedur läuft wie folgt ab:
- 1. Ein Netz wird auf der Basis gegebener Anforderungen und Verzögerungsbeschränkungen
etc. aufgebaut.
- 2. Es wird eine aus Ebenen bestehende Netzstruktur aufgebaut,
so dass die erste Ebene aus dem Server besteht, während andere
Ebenen aus den Knoten bestehen, die dieselbe Entfernung zum Server
aufweisen. Mit Ausnahme der ersten Ebene können Clients in jeder Ebene
angeordnet sein. Die Ebenen sind nach ihrer Entfernung vom Server
geordnet (je größer die
Entfernung, desto höher
die Anzahl der Ebenen).
- 3. Eine Menge C sämtlicher
Clients, denen der Dienst bereitgestellt werden muss, wird aufgebaut.
- 4. Jeder Netzknoten wird als zur Bedienung eines Clients befähigt markiert,
für den
Fall, dass die existierenden Beschränkungen es dem Client ermöglichen,
von einer innerhalb dieses Knotens des Netzes angeordneten Dienstinstanz
bedient zu werden. Somit kann ein und derselbe Knoten mit mehreren
potentiellen Clients markiert sein.
- 5. Die Ebene mit der höchsten
Nummer, d.h. die Ebene, die am weitesten vom Server entfernt ist, wird
ausgewählt.
- 6. Eine Menge S sogenannter „verbotener" Clients wird aufgebaut,
wobei es sich um solche Clients handelt, die von der gegebenen Ebene
bedient werden können,
die jedoch nicht von jeder Dienstinstanz bedient werden können, falls
sie näher
am Server angeordnet sind.
- 7. Ist die Menge S leer, so ist der folgende Schritt der unten
beschriebene Schritt 11.
- 8. Der Knoten N der gegebenen Ebene, die mindestens einen verbotenen
Client bedienen und gleichzeitig die maximale Anzahl an Clients
bedienen kann, wird gesucht, und eine Dienstinstanz mit einem halb-permanenten
Staus wird in diesem Knoten angeordnet.
- 9. Sämtliche
Clients, die von dem Knoten N bedient werden können, werden aus den Mengen
S und C entfernt (die entfernten Clients bleiben in den weiteren
Schritten unbeachtet).
- 10. Ist die Menge S nicht leer, so ist der folgende Schritt
der Schritt 8.
- 11. Die Prozedur ist beendet, wenn die Menge C von Clients leer
ist oder wenn sämtliche
Ebenen berücksichtigt
wurden.
- 12. Es wird die Ebene ausgewählt,
die der Ebene, die gerade berücksichtigt
wurde, folgt und dem Serverknoten näher ist, und der folgende Schritt ist
Schritt 6.
-
Schritt
8, der einen sogenannten „gierigen" Schritt darstellt,
da er nicht notwendigerweise ein optimales Resultat liefert, kann
je nach Netz und existierenden Anforderungen in geeigneter Weise
modifiziert werden. Er kann beispielsweise darin bestehen, dass
er den Knoten N der gegebenen Ebene, die die maximale Anzahl verbotener
Clients bedienen kann, sucht und dort eine Dienstinstanz anordnet.
-
Die
Komplexität
des vorgeschlagenen Verfahrens kann je nach der Effektivität der Implementierung,
und insbesondere der für
die Netzwerkdarstellung verwendeten Datenstruktur variieren. Um
die Effizienz zu steigern, können
Abwandlungen des Verfahrens in Betracht gezogen werden. Beispielsweise können die
Schritte 2, 3, 4 in Schritt 6 im erforderlichen Umfang dynamisch
durchgeführt
werden.
-
Anschließend können die
Dienstinstanzen mit einem halb-permanenten Status wahlweise, wie oben
erwähnt,
näher an
die Clients heranbewegt werden.
-
Das
Flussdiagramm gemäß 5 fasst
die Reihenfolge der gemäß dem Optimierungsverfahren – welches
den Gegenstand der Erfindung darstellt – ausgeführten Schritte in einer derartigen
bevorzugten Ausführungsform
zusammen.
-
Wie
in 5 gezeigt, besteht ein vorläufiger Schritt 50 im
Aufbau einer kombinierten Netzmetrik auf der Basis gegebener Anforderungen
und Beschränkungen
hinsichtlich der Dienstgüte
und weiterer Kenndaten, die eine Dienstinstanz erfüllen soll.
-
Eine
aus Ebenen bestehende Netzstruktur wird durch Verwenden der gemäß dem oben
beschriebenen Schritt 2 kombinierten Metrik aufgebaut. Dies kann
durch Verwendung eines herkömmlichen Routing-Protokolls
erfolgen, welches die kürzesten Wege
zu den Netzknoten und deren Länge
kennt.
-
Die
nächsten
Schritte 52, 53, 54, 55, 56, 57, 58 ähneln den
Schritten 40, 41, 42, 43, 44, 45, 46, 47 gemäß der Ausführungsform
nach 4d, so dass deren Beschreibung
hier nicht wiederholt wird.
-
Bei
einer derartigen vermaschten Topologie sowie im Falle einer baum-basierten
Toppologie stellen die Zielpunkte in dem Graph die Quellen dar,
von wo aus die Dienstinstanzen ihren Weg zum Dienstanbieter beginnen.
Die unterschiedlichen Zielpunkte im Graph können in unterschiedlichen Entfernungen vom
Dienstanbieter angeordnet sein, d.h. die Anzahl der Teilnetze zwischen
jedem der Zielpunkte und dem Dienstanbieter können verschieden sein.
-
Da
die Adresse des Dienstanbieters bekannt ist, können die standardmäßigen Routing-Tabellen des
im Netz implementierten Routing-Protokolls verwendet werden, um
den nächsten
Hop zum Erreichen des Dienstanbieters zu bestimmen.
-
Die
Kenndaten sämtlicher
Netze sind entweder verfügbar,
z.B. in einer Tabelle, oder die Kenndaten des nächsten Teilnetzes des nächsten Teilnetzes müssen abgerufen
werden, wenn bekannt ist, welches Teilnetz das nächste auf dem Weg zum Dienstanbieter
ist. Die Auswahl des nächsten
Teilnetzes basiert auf der Routing-Metrik, die beispielsweise die
Verzögerung
als Kriterium für
das Routing verwendet. Da mehrere Metriken möglicherweise gleichzeitig berücksichtigt
werden müssen,
entweder für
einen Client oder, im Falle einer akkumulierten Metrik, für mehrere
Clients, müssen
die Routing-Protokolle dahingehend erweitert werden, dass sie Daten
auf der Basis mehrerer Metriken gleichzeitig weiterleiten, es sei
denn, die mehreren Metriken sind, wie oben beschrieben, zu einer
einzigen Metrik kombiniert.
-
Um
zu gewährleisten,
dass unterschiedliche Dienstinstanzen kombiniert werden, können Dienstinstanzen
einen als „Fußabdruck" bezeichneten Hinweis
in jedem der Teilnetze hinterlassen, die sie auf ihrem Weg zum Dienstanbieter
passiert haben, so dass diese Hinweise von den Dienstinstanzen benutzt
werden können,
die während
eines späteren
Analyseschrittes im selben Teilnetz ankommen. Hierdurch wird es
möglich,
die entsprechende Dienstinstanz zu verfolgen und mehrere Dienstinstanzen
zu kombinieren.
-
Der
Hinweis, der in jedem Teilnetz, in dem die Dienstinstanz bewegt
wird, hinterlassen wird, kann ein Zeiger auf dieses Teilnetz sein.
In diesem Fall kann die Dienstinstanz beim Bewegen zu einem neuen
Teilnetz möglicherweise
sämtliche
Zeiger aktualisieren. Allerdings sind Zeiger entweder direkt (d.h.
sie weisen auf das Teilnetz mit der Dienstinstanz hin) oder indirekt
(d.h. sie weisen auf das Teilnetz hin, das das nächste auf dem Weg zu dem Teilnetz
mit der Dienstinstanz ist). Nur im ersten Fall müssen sämtliche Zeiger aktualisiert
werden. Aus diesem Grund ist in keinem der Knoten eine Wegüberschreitung
oder Überprüfung notwendig,
da die endgültige Adresse
bekannt ist.
-
Gemäß einer
Variante kann die Dienstinstanz in einem Teilnetz, in dem sie sich
bewegt, zusätzlich
zu dem Zeiger sämtliche
notwendigen Informationen hinterlassen, z.B. die Werte der Metriken, die
vom Blatt zu Teilnetz akkumuliert wurden, sowie wahlweise den Zeitpunkt,
zu dem die Dienstinstanz das Teilnetz durchläuft.
-
Eine
Variante zum Kombinieren von Dienstinstanzen kann auf Entfernungsvektor-Routing-Protokollen
basieren, die eine Tabelle mit den kürzesten Wegen zu sämtlichen
Zielen enthält.
Eine Vielzahl von Tabellen sind zur Wiedergabe verschiedener Metriken
oder Metrikkombinationen notwendig, es sei denn, dass die Vielzahl
von Metriken, wie oben beschrieben, zu einer einzigen Metrik kombiniert
werden. Externe Gateway-Routing-Protokolle, z.B. das BGP (Border
Gateway Protocol), enthalten derartige Tabellen und werden zum Sicherstellen
der Konnektivität
zwischen Teilnetzen oder autonomen Systemen verwendet. Hierdurch
kennt jedes Teilnetz seine Entfernung zu der Wurzel, d.h. zum Dienstanbieter.
-
Die
Teilnetze tauschen daraufhin Informationen aus, um zu bestimmen,
welches Teilnetz seine Dienstinstanz im Baum aufwärts bewegen
soll. Ähnliche
Mechanismen, wie die Auswahl eines Masters, wie sie z.B. in vielen
der Routing-Protokolle oder Serverauswahlprozeduren in LANs angewendet
werden, können
zum Bestimmen des Teilnetzes verwendet werden, das mit dem Bewegen
seiner Dienstinstanz an ein nächst
höheres
Teilnetz beginnen kann. Berücksichtigt
man die metrik-basierten
Entfernungen, kann der sich ergebende Master derjenige sein, der am
weitesten von der Dienstursprungseinrichtung entfernt ist.
-
Die
Analyseimplementierung kann entweder auf einer Tabelle basieren,
wie in 6 dargestellt, oder auf Petrinetzen, wobei die
Voraussetzungen die Bedingungen und die Dienstinstanzen die Token
im Netz darstellen.
-
Die
Tabelle gemäß 6 kann
in dem Knoten gespeichert sein, der die Analyse durchführt. Sie zeigt
die Bereiche für
die unterschiedlichen Clients C1 bis C7. Aus der Ebene im Baum (die
in der rechten Spalte der Tabelle erwähnt ist) sowie aus dem entsprechenden
Bereich für
eine bestimmten Client, ist das Teilnetz Si (i = 1,..., 23) bekannt,
das der Wurzel am nächsten
ist und das diesem bestimmten Client die adäquate Dienstgüte bereitstellen
kann. Im gezeigten Beispiel ist die höchste Ebene im Baum mit 1 bezeichnet
(die Wurzel des Baumes ist das Teilnetz S1) und die niedrigste Ebene
(die Blätter
des Baumes) ist mit 6 bezeichnet. Das Teilnetz S2 erfüllt beispielsweise
die Anforderungen der Clients C1 und C2. Es sei angemerkt, dass
die Voraussetzungen, d.h. die Bedingungen, akkumulierte Voraussetzungen
wiedergeben kann. Die Analyse beginnt mit dem Überprüfen sämtlicher Teilnetze der Ebene
6, um zu bestimmen, ob die auf dieser Ebene angeordneten Dienstinstanzen
aufwärts
des Baumes bewegt werden dürfen.
Ist dies der Fall, so werden die betroffenen Dienstinstanzen eine
Ebene nach oben bewegt, und es wird eine Markierung in die Tabelle
eingefügt, die
angibt, dass eine Dienstinstanz das Teilnetz der höheren Ebene
erreicht hat.
-
Zusätzlich werden
die entsprechenden Metriken berücksichtigt
und möglicherweise
mit den Metriken anderer Dienstinstanzen, die von anderen Zweigen
stammen, kombiniert.
-
Nachdem
sämtliche
Teilnetze der Ebene 6 geprüft
wurden, werden sämtliche
Teilnetze der Ebene 5 in identischer Weise geprüft, usw.
-
Mehrere
Parameter und zusätzliche
Anzeiger können
wahlweise oben in der Tabelle enthalten sein, um die Analyse zu
verfeinern oder zu beschleunigen. Wie beispielsweise in der letzten
Reihe der Tabelle gezeigt, kann ein Hinweis über die Anzahl der sich überschneidenden
Teilnetze pro Client gegeben werden. Zwischenergebnisse der Analyse
können
in der Tabelle gespeichert werden, um den Vorgang zu beschleunigen.
-
Gemäß einer
Variante kann anstelle einer tabellen-basierten Analyse eine Petrinetz-analyse verwendet
werden.
-
Petrinetze
stellen einen graphischen Formalismus für Systemspezifikationen dar.
Sie werden aus einer endlichen Menge von Stellen, eine endlichen Menge
von Transitionen sowie einer endlichen Menge von Pfeilen, die entweder
Stellen mit Transitionen oder Transitionen mit Stellen verbinden,
gebildet. Graphisch gesehen werden Stellen gewöhnlich mit Kreisen und Transitionen
mit Balken dargestellt.
-
Einem
Petrinetz wird durch das Markieren seiner Stellen ein Zustand verliehen.
Eine Markierung eines Petrinetzes besteht aus der Zuordnung einer
nichtnegativen ganzen Zahl zu jeder Stelle. Graphisch wird dies
gewöhnlich
durch das Einsetzen einer Anzahl von Tokens in jede Stelle des Netzes
dargestellt.
-
Eine
Transition kann eine oder mehrere Eingabe- und Ausgabestellen aufweisen.
Geht ein Pfeil von einer Stelle zu einer Transition, so wird die
Stelle als eine der Ausgabestellen der Transition bezeichnet. Eine
Transition wird als aktiv bezeichnet, wenn sich mindestens ein Token
in jeder der Eingabestellen befindet. Eine aktivierte Transition
kann auslösen. Dies
bedeutet, dass ein Token aus jeder Eingabestelle entfernt wird,
während
ein Token in jeder Ausgabestelle der Transition eingesetzt wird.
Sind mehr als eine Transition aktiv, so ist das Modell nicht vorherbestimmbar,
in dem Sinne, dass bei einer ersten Markierung unterschiedliche
Entwicklungen des Petrinetzes möglich
sind.
-
In
einem Petrinetz wird von einer Transition gewöhnlich ein Ereignis oder ein
Vorgang modelliert, und ihre Auslösung bedeutet das Stattfinden
des Ereignisses oder die Ausführung
eines Vorgangs. Somit ist eine Transition aktiviert, wenn die Bedingungen
erfüllt
sind, die das Stattfinden des modellierten Ereignisses oder des
Vorganges erlauben. Das Vorliegen eines Tokens in einer Stelle kann
die Existenz einer Bedingung bezeichnen. Beispielsweise kann eine
Stelle ein Betriebsmittel modellieren, und die Existenz eines oder
mehrerer Tokens in dieser Stelle bedeutet die Verfügbarkeit
einer oder mehrerer Instanzen dieses Betriebsmittels. Um eine ausführlichere
Beschreibung der Grundprinzipien von Petrinetzen zu erhalten, kann
auf „Fundamentals
of Software Engineering" von
Ghezzi et al., Prentice Hall International, New Jersey 1991 verwiesen
werden.
-
Erfindungsgemäß wird der
Verteilungsbaum von einem Petrinetz derselben Form modelliert. Die Teilnetze
sind die Stellen, die Dienstinstanzen sind die Tokens, die die entsprechenden
Metrikwerte übertragen,
und die Transitionen haben zugehörige Bedingungen,
die sich auf die maximale Distanz beziehen, die die Dienstinstanz
von den Clients, d.h. von den Blättern,
entfernt sein darf. Die Entfernung kann auf jeder der entsprechenden
Metriken oder Metrikkombinationen basieren, die für die Clients wichtig
sind. Jedes Teilnetz wird von einer Stelle in dem Petrinetz wiedergegeben.
Eine Dienstanordnung in einem bestimmten Teilnetz (d.h. ein Knoten
in dem Verteilungsbaum oder in der vermaschten Topologie) wird durch
ein Token in einer Stelle im Petrinetz modelliert.
-
Tokens
werden zuerst in den Blattstellen angeordnet. Das Bewegen der Dienstinstanz
zur Wurzel erfolgt durch das Aufwärtsbewegen der Token durch
das Petrinetz. Um ein Token von einer Stelle zur nächsten zu
bewegen, muss eine Transition aktiviert und ausgelöst werden.
Die Auslösung
einer Transition erfolgt über
denselben Algorithmus, der oben beschrieben ist. Zu diesem Zweck
verfügt
das Token über
Werte, die von den Analysen verwendet und aktualisiert werden.
-
Das
Zusammenführen
von Dienstinstanzen erfolgt dadurch, dass Transitionen mit weniger
Ausgabetoken als Eingabetoken vorliegen.
-
Die
endgültige
Verteilung der Dienstinstanzen ist erreicht, wenn die Entwicklung
des Petrinetzes abbricht, d.h. wenn die Token nicht länger in
Bewegung sind und zusammengeführt
werden.
-
Petrinetze
können
sowohl bei baum-basierten als auch bei vermaschten Topologien angewendet
werden.
-
Auch
können
Richtlinien für
die Zeitsteuerung verwendet werden. Ist die reine Nichtvorherbestimmbarkeit
des Petrinetzmodells nicht ausreichend, so entsteht das Problem
mit Blick auf das Festlegen einer Richtlinie für die Auswahl einer auszulösenden Transition
unter sämtlichen
aktivierten Transitionen. Eine recht einfache Möglichkeit zur Lösung dieses
Problems besteht im Anhängen
von Prioritäten
an die Transitionen. Die Auslöseregel
wird dann wie folgt geändert:
Sind in einem Zustand mehrere Transitionen aktiviert, so dürfen lediglich
diejenigen mit der maximalen Priorität auslösen.
-
Prioritäten werden
gewöhnlich
statisch definiert. Übertragen
Tokens einen Wert, können
jedoch Prioritäten
definiert werden, deren Werte von den Werten der Tokens der Eingabestellen
der Transitionen abhängen.
-
Zeitlich
gesteuerte Petrinetze können
ebenfalls verwendet werden. Zeitlich gesteuerte Petrinetze sind
Petrinetze, in welchen jeder Transition ein Paar (tmin,
tmax) zugeordnet ist. Derartige Werte könnten wiederum
konstant sein oder als Funktionen der Werte von Token in den Eingabestellen
berechnet werden. Sobald eine Transition aktiviert ist, muss sie den
Ablauf mindestens einer Zeit tmin abwarten,
bevor sie auslösen
kann. Bei Aktivierung muss sie ebenso auslösen, bevor eine Zeit tmax abgelaufen ist, es sei denn, sie ist
durch das Auslösen
einer anderen Transition vor tmax deaktiviert.
Ein zeitlich gesteuertes Petrinetz entspricht eine ursprünglichen
Petrinetz, wenn für
jede Transition tmin = 0 und tmax =
unbestimmt.
-
Wie
in 7 gezeigt, umfasst eine Vorrichtung zum Bestimmen
von Orten von Dienstinstanzen zum Optimieren der Verteilung eines
Dienstes in einem Netz von einer Quelle zu einer Vielzahl von Clients
mit jeweils vorbestimmten Anforderungen, wobei das Netz mittels
eines Graphs modelliert werden kann, erfindungsgemäß:
Aufnahmemittel 70 zum
Hosten einer Dienstinstanz;
wie oben beschrieben, eine Überprüfungseinheit 72 zum Überprüfen, ob
die Dienstinstanz, wenn diese in einem Knoten der nächst höheren Ebene
angeordnet ist, die Anforderungen sämtlicher von der Dienstinstanz
zu bedienenden Clients erfüllen
kann;
eine Verarbeitungseinheit 74 zum Koordinieren
der Aufnahmeeinheit 70 und der Überprüfungseinheit 72 und
zum Steuern des Knotens; und
eine Eingabe-/Ausgabeeinheit 76 zum
Senden und Empfangen von Nachrichten und Dienstinstanzen.
-
In
der gemäß 7 dargestellten
besonderen Ausführungsform
umfasst die Vorrichtung ferner eine Kombiniereinheit 78 zum
Bestimmen, dass sich mindestens zwei Dienstinstanzen in dem Knoten
treffen, und zum Kombinieren dieser Dienstinstanzen.