-
Die
Erfindung betrifft ein Verfahren zum Suchen von Diensten, Ressourcen
und/oder Funktionalitäten
in einem Netzwerk, wobei das Netzwerk eine Vielzahl von Knoten umfasst,
denen routbare Netzwerkadressen zugeordnet sind, wobei die zu suchenden
Dienste, Ressourcen und/oder Funktionalitäten von Knoten des Netzwerks
bereitgestellt werden und wobei die zu suchenden Dienste, Ressourcen und/oder
Funktionalitäten
von einem Quellknoten festgelegt werden.
-
Verfahren
der hier in Rede stehenden Art gehören seit einiger Zeit zum Stand
der Technik. Angesichts einer starken Entwicklung dahingehend, dass spezielle
Dienste, Ressourcen und/oder Funktionalitäten, z. B. Firewalls, Speicherplatz,
Media Cache, Transcoder, etc., in zunehmendem Maße netzwerkseitig bereitgestellt
werden, kommt derartigen Verfahren eine stets wachsende Bedeutung
zu.
-
Im
Rahmen eines konkreten gattungsbildenden Verfahrens ist es bekannt,
verfügbare
Dienste oder Ressourcen an einem allgemein bekannten Directory-Dienst
anzumelden. Kunden bzw. Knoten, die bestimmte Dienste/Ressourcen
suchen, richten ihre Anfrage dann unmittelbar an diesen Directory-Dienst. Nachteilig
bei diesem Ansatz ist, dass die ständige Aktualisierung des Directory-Dienstes
extrem kostenintensiv ist. Dies gilt insbesondere im Fall von hochdynamischen
und/oder mobilen Umgebungen. Die Anzahl von Updates, die benötigt wird,
um den Directory-Dienst auf einem aktuellen Stand zu halten, steigt
insbesondere dann rapide an, wenn sich z. B. die Verfügbarkeit
eines Dienstes oder bestimmte zur Nutzung eines Dienstes benötigte Informationen häufig ändern. Gleiches
gilt, wenn es sich bei dem Knoten, der einen Dienst bereitstellt,
um einen mobilen Knoten handelt.
-
Ein
weiterer Nachteil, der mit der Nutzung eines Directory-Dienstes
einhergeht, besteht darin, dass ein auf einem Verzeichnis basierter
Dienst typischerweise nicht in der Lage ist, topologische Aspekte,
d. h. insbesondere den Ort einer Ressource oder eines Dienstes innerhalb
des Netzwerks, zu berücksichtigen.
-
Bei
einem anderen bekannten Ansatz wird auf der Suche nach bestimmten
netzwerkseitigen Diensten und/oder Ressourcen eine „Look-Up"-Anfrage in das Netzwerk
ausgesendet. Knoten, die bereit und in der Lage sind, den angefragten
Dienst bzw. die angefragte Ressource bereitzustellen, antworten
auf die Look-Up-Anfrage. Dieses Verfahren wird auch als „Flooding" bezeichnet.
-
Der
entscheidende Nachteil dieses Verfahrens besteht darin, dass es
nicht skaliert. In großen Netzwerken
produziert der beschriebene Ansatz eine enorme Menge an überflüssigem Verkehr
und möglicherweise
eine sehr hohe Anzahl von Antworten. Ohne einen entsprechenden Hinweis,
an welchem Ort innerhalb des Netzwerks ein angefragter Dienst positioniert
sein soll, hat eine derartige Suche Einfluss auf alle Knoten des
Netzwerks.
-
Aus
der
EP 1 387 535 A2 ist
für sich
gesehen ein Routing-Algorithmus für den Einsatz in pufferlosen
Netzwerken bekannt. Das pufferlose Netzwerk umfasst eine Vielzahl
von Knoten, die über
eine Reihe von Links („paths") miteinander verbunden
sind. Jeder Knoten der Vielzahl von Knoten führt den Routing-Algorithmus
aus, wobei der Algorithmus derart ausgestaltet ist, dass stets eine
möglichst
geringe Anzahl von Paketen zu sogenannten „ungünstigen" Knoten geleitet werden, die weiter
von dem avisierten Zielknoten entfernt sind als sogenannte „günstige” Knoten.
-
Aus
der
EP 0 637 152 A1 ist
ein Verfahren und Gerät
zur Beschleunigung der Wahl eines Weges zwischen einem Quellknoten
und einem Zielknoten in einem Paketvermittlungsnetz bekannt. Bei
dem dort beschriebenen Routing-Algorithmus werden unterschiedliche
Funktionen der einzelnen Knoten des Netzwerks berücksichtigt.
Dabei wird eine Beschleunigung der Festlegung eines Routing-Weges
erreicht, indem die Knoten des Netzwerks in Backbone-Knoten mit
einem hohen Grad an Vernetzung und in lokale Knoten mit einem niedrigen
Grad an Vernetzung eingeteilt werden. Der Routing-Algorithmus nutzt
die spezielle Netzwerktopologie, um die Komplexität der Pfadberechnung
zu reduzieren.
-
Der
vorliegenden Erfindung liegt nunmehr die Aufgabe zugrunde, ein Verfahren
der eingangs genannten Art derart auszugestalten und weiterzubilden,
dass eine effiziente Suche auch in dynamischen Umgebungen mit einfachen
Mitteln ermöglicht
ist. Darüber
hinaus soll das Verfahren skalieren.
-
Die
voranstehende Aufgabe ist durch ein Verfahren mit den Merkmalen
des Patentanspruchs 1 gelöst.
Danach ist ein Verfahren zum Suchen von Diensten, Ressourcen und/oder
Funktionalitäten
in einem Netzwerk der eingangs genannten Art dadurch gekennzeichnet,
dass mindestens ein Zielknoten festgelegt wird, wobei durch den
Zielknoten und/oder durch Knoten in der Nähe des Zielknotens jeweils
eine Suchrichtung innerhalb des Netzwerks vorgegeben ist, durch
die ein Routingpfad zwischen dem Quellknoten und dem jeweiligen
Zielknoten definiert wird, und dass die Suche entlang des zwischen dem
Quellknoten und dem jeweiligen Zielknoten ausgebildeten Routingpfades
durchgeführt
wird, wobei in die Suche nur vorgebbare Knoten in der Nähe des Routingpfades
einbezogen werden.
-
In
erfindungsgemäßer Weise
ist zunächst
erkannt worden, dass eine besonders effiziente Suche nach netzwerkseitigen
Diensten, Ressourcen und/oder Funktionalitäten, die im Folgenden der Einfachheit
halber kurz als Dienste zusammengefasst werden, dann ermöglicht ist,
wenn zunächst
durch mindestens einen Zielknoten und/oder Knoten in der Nähe des Zielknoten
jeweils eine Richtung innerhalb des Netzwerks vorgegeben wird. Bei
dem bzw. den Zielknoten kann es sich beispielsweise um ein Mobilgerät eines
gewünschten
Gesprächspartners
bzw. die Mobilgeräte
mehrerer Gesprächspartner
handeln. Die Richtung kann auch durch Knoten vorgegeben werden,
die sich in der Nähe
des Zielknotens befinden. Im angeführten Beispiel kann es sich
dabei beispielsweise um eine Basisstation des Gesprächspartners
handeln. Bei einer anderen Anwendung kann der Zielknoten beispielsweise
ein Server sein, von dem bestimmte Daten herunter geladen werden sollen.
Durch die Festlegung einer Richtung wird in weiter erfindungsgemäßer Weise
ein Routingpfad zwischen dem Quellknoten und dem jeweiligen Zielknoten
definiert, wobei der Routingpfad durch eine gewisse Anzahl von Knoten
des Netzwerks gebildet wird.
-
Erfindungsgemäß werden
in die Suche nur vorgebbare Knoten entlang des Routingspfades zwischen
dem Quellknoten und dem Zielknoten einbezogen. Auf diese Weise ist
eine effiziente Suche möglich,
bei der lediglich eine geringe Datenmenge generiert wird. Darüber hinaus
skaliert das erfindungsgemäße Verfahren,
da auch in großen
Netzwerken nur Knoten in die Suche einbezogen werden, die sich in
der Nähe
des Routingpfades zwischen dem Quellknoten und einem Zielknoten
befinden. Alle übrigen
Knoten des Netzwerkes werden von der Suche nicht beeinflusst.
-
Das
erfindungsgemäße Verfahren
lässt sich besonders
vorteilhaft beispielsweise in modernden mobilen Netzwerken einsetzen,
wo Teilnehmer oftmals vor der Aufgabe stehen, eine gute Adaption, Transcoding,
Caching, Web-Cache und/oder SIP- Proxy-Funktionalitäten/Server
zu finden. Durch eine gerichtete Suche in Richtung auf den Ursprung eines
Datenstroms, der beispielsweise aus dem Heimatnetz des Teilnehmers
kommt, lassen sich die gesuchten Funktionen nahe des Routingpfades
des Datenstromes finden. Je weiter der gesuchte Dienst dabei vom
Ursprung der Suche, d. h. von dem Mobilgerät des Teilnehmers, entfernt
ist, desto vorteilhafter stellt sich das erfindungsgemäße Suchmuster
im Vergleich zu bekannten Ansätzen
dar. Das erfindungsgemäße Verfahren
ist somit insbesondere für Roaming
zwischen UTRAN, WLAN, ADSL, Ethernet oder sonstigen Netzwerken geeignet.
-
In
Ad-Hoc Netzwerken die dadurch charakterisiert sind, dass stets neue
Knoten in das Netzwerk eintreten, während andere Knoten das Netzwerk
verlassen, kann weder das bekannte Service Location Protokoll (SLP)
noch eines der eingangs genannten Verfahren eingesetzt werden. Insbesondere
das sog. Flooding ist im Hinblick auf die geringe drahtlose Bandbreite
und die typischerweise sehr begrenzt zur Verfügung stehenden Energieressourcen
zu aufwendig. Mit einer Suche in eine bestimmte Richtung entsprechend
dem erfindungsgemäßen Verfahren
ist eine effektive Suche auch in derartigen Ad-Hoc Netzwerken möglich. In
einer geografischen Routing-Umgebung kann die Suche beispielsweise
in Richtung auf einen nächsten
drahtgebundenen Zugangspunkt vorgenommen werden, wobei der Zugangspunkt
beispielsweise in einer Fahrt- bzw. Bewegungsrichtung liegt.
-
Im
Rahmen einer besonders bevorzugten Ausführungsform ist die Vorgabe
eines Such-Parameters vorgesehen, mit dessen Hilfe diejenigen Knoten
in der Nähe
des Routingpfades bestimmt werden, die in die Suche einbezogen werden.
Weiter kann vorgesehen sein, dass der Such-Parameter an die Art
der konkret gesuchten Dienste angepasst wird. Auf diese Weise lässt sich
ein hohes Maß an
Flexibilität
erreichen. So kann beispielsweise bei der Suche nach einem Dienst,
der in einem Netzwerk bekanntermaßen nur äußerst selten zur Verfügung gestellt wird,
der Such-Parameter derart definiert werden, dass eine hohe Anzahl
an Knoten in die Suche eingebunden wird. Gleiches gilt umgekehrt
für häufig bereitstehende
Dienste.
-
In
einer besonders bevorzugten Ausführungsform
wird der Such-Parameter als eine seitliche Entfernung von Knoten
des Routingpfades, d. h. als eine „sideway expansion" definiert. Dabei
ist die Metrik, in der die seitliche Entfernung angegeben wird, beliebig
wählbar.
Im Konkreten kann der Such-Parameter bspw. eine ganze Zahl i = 1,
... n sein, welche die Anzahl von Hops in seitlicher Entfernung
von Knoten des Routingpfades angibt. Ein Such-Parameter i = 2 bedeutet
folglich, dass alle Knoten, die in seitlicher Richtung maximal 2
Hops von Knoten des Routingpfades entfernt sind, in die Suche einbezogen werden.
Alternativ kann der Such-Parameter beispielsweise auch als geographische
Distanz oder als zeitliche Verzögerung
definiert werden.
-
Alternativ
ist es denkbar, den Such-Parameter als eine von der Entfernung von
dem Quellknoten abhängige
Funktion zu definieren. So könnte
beispielsweise die seitliche Entfernung, in der Knoten in die Suche
einbezogen werden, mit wachsendem Abstand vom Quellknoten kleiner
gewählt
werden. Eine derartige Festlegung bietet sich beispielsweise bei einer
Cache-Suche an, da eine Positionierung des Cache nahe beim Client,
d. h. beim Quellknoten, erwünscht
ist.
-
Zur
Initiierung der Suche kann vorgesehen sein, dass der Quellknoten
eine Nachricht an den einen Hop von ihm entfernten Knoten des Routingpfades
sendet. Die Nachricht kann dabei zum einen Angaben bezüglich der
gesuchten Dienste und zum anderen den Such-Parameter umfassen. Des
Weiteren kann die Nachricht sonstige Angaben umfassen, die für die Suche
relevant sind, so beispielsweise Funktionen, die z. B. eine Änderung
der seitlichen Ausdehnung der Suche beschreiben.
-
Zur
Fortpflanzung der Nachricht entlang des Routingpfades in Richtung
auf den Zielknoten leitet jeder Knoten des Routingpfades die Nachricht,
wenn er sie zum ersten Mal empfängt,
an den nächsten
einen Hop entfernten Knoten auf dem Routingpfad weiter.
-
Zur
Ausdehnung der Suche in seitliche Richtungen kann vorgesehen sein,
dass jeder Knoten des Routingpfades die Nachricht nicht nur an den
nächsten
Knoten auf dem Routingpfad, sondern auch an einen Hop entfernte
Knoten in seitlicher Richtung vom Routingpfad sendet. Voraussetzung
hierfür
ist, dass der Such-Parameter dies zulässt. Für den Fall, dass der Such-Parameter
in Form einer Anzahl i von Hops wie oben beschrieben definiert ist,
darf i somit nicht gleich Null sein. Zur Begrenzung der seitlichen
Ausdehnung der Suche entsprechend dem vorgegebe nen Such-Parameter
kann vorgesehen sein, dass jeder Knoten seitlich vom Routingpfad,
der die Nachricht zum ersten Mal empfängt, den Such-Parameter verändert, d.
h. beispielsweise die Anzahl i an Hops um 1 dekrementiert. Ggf.,
d. h. wenn i nach der Dekrementierung noch größer als Null ist, kann der
Knoten eine Nachricht mit dem veränderten Such-Parameter an einen
Hop weiter vom Routingpfad entfernte Knoten senden.
-
In
einer konkreten Implementierung ist vorgesehen, dass die Suche abgebrochen
wird, sobald ein Knoten gefunden worden ist, der den gesuchten Dienst
zur Verfügung
stellen kann. Ein derartiges Abbrechen der Suche ist insbesondere
dann vorteilhaft, wenn das Hauptinteresse nicht einer bestimmten Güte des Dienstes,
sondern einer Minimierung des Suchaufwandes gilt. Alternativ ist
es denkbar, die Suche erst dann abzubrechen, wenn Knoten gefunden worden
sind, die die gesuchten Dienste in einer vorgebbaren Güte zur Verfügung stellen
können.
Die Güte
kann sich dabei auf unterschiedliche Eigenschaften des Dienstes
beziehen, insbesondere auf dessen Verfügbarkeit, Auslastung, Kapazität, Kosten,
etc.
-
Für bestimmte
Anwendungen hat es sich als besonders vorteilhaft erwiesen, die
Suche in mehreren Durchläufen
durchzuführen,
wobei für
einen ersten Durchlauf der Such-Parameter als eine kleine Entfernung
vom Routingpfad definiert wird. Beispielsweise kann der Such-Parameter
zu i = 1 festgelegt werden, so dass zusätzlich zu den Knoten des Routingpfades
nur diejenigen Knoten in die Suche einbezogen werden, die in seitlicher
Richtung genau einen Hop von Knoten des Routingpfades entfernt sind.
Für den
Fall, dass in einem derartigen ersten – schnellen – Durchlauf
keine der Suche entsprechenden Dienste gefunden worden sind, kann
der Such-Parameter für
einen weiteren Durchlauf als eine größere seitliche Entfernung vom
Routingpfad definiert werden, d. h. beispielsweise i = 2, 3, ....
-
Die
an den in die Suche einbezogenen Knoten gewonnenen Informationen
bezüglich
der Verfügbarkeit
der gesuchten Dienste können
in besonders vorteilhafter Weise am Quellknoten zusammengeführt werden.
Dazu können – angefangen
bei den äußersten
Knoten der Seitenpfade – entsprechende Nachrichten,
die im Folgenden als Echos bezeichnet werden, zu den Knoten des
Routingpfades und von dort – ausgehend
vom Zielknoten – in
Richtung zum Quellknoten gesendet werden. Mit anderen Worten sendet
jeder Knoten ein Echo an seinen jeweiligen Parent- Knoten, d. h. an
denjenigen Knoten, von dem er die ursprüngliche Nachricht empfangen
hat. Das Echo umfasst dabei sowohl die Information des Knoten selbst
als auch die – aggregierten – Informationen seiner
Child-Knoten, d. h. derjenigen Knoten, an die er die Nachricht mittelbar
oder unmittelbar gesendet hat.
-
Insbesondere
in mobilen Netzwerken oder in Ad-Hoc Netzwerken kann es vorkommen,
dass bestimmte Knoten kein Echo aussenden. Der Grund hierfür kann beispielsweise
sein, dass ein Knoten aufgrund seines Energiezustandes in einen
Schlafzustand übergegangen
ist, oder dass ein Knoten das Netzwerk zwischenzeitlich bereits
verlassen hat. Für diese
Fälle erweist
sich ein Mechanismus als vorteilhaft, welcher die Zusammenführung der
Informationen am Quellknoten sicherstellt. So kann beispielsweise
vorgesehen sein, dass ein Knoten, falls er kein Echo von einem oder
mehrerer seiner Child-Knoten empfangen hat, zunächst eine vorgebbare Zeitdauer – Timeout – wartet.
Hat er nach Ablauf der Zeitdauer noch immer kein Echo von den betreffenden
Knoten erhalten, so kann er sein Echo ohne die Informationen der
betreffenden Knoten an seinen Parent-Knoten senden. Da der mit einem
derartigen Echo einhergehende Informationsverlust für Knoten
nahe des Routingpfades größer ist
als für
weiter vom Routingpfad entfernte Knoten, kann das Timeout für einen Knoten
in vorteilhafter Weise umso länger
gewählt werden,
je näher
er am Routinpfad positioniert ist. Den Knoten des Routingpfades
wird demnach das längste
und den äußersten
Knoten der Seitenpfade das kürzeste
Timeout zugewiesen. Der festgelegte Wert des Timeouts kann den Knoten
bspw. zusammen mit der ursprünglich
vom Quellknoten gesendeten und an die in die Suche einbezogenen
Knoten weitergeleiteten Nachricht bekannt gemacht werden.
-
In
Bezug auf den Ausfall einzelner Knoten und den eingesetzten Timeout-Mechanismus
können zwei
Fälle unterschieden
werden. Zum einen ist es möglich,
dass der Ausfall eines Knotens bereits – wodurch auch immer – bekannt
ist. So kann beispielsweise in einem Schicht-Netzwerk von einer
unteren Schicht detektiert werden, dass bestimmte Knoten dauerhaft
oder temporär
nicht zur Verfügung
stehen. In einem solchen Fall kann vorgesehen werden, dass das Timeout
erst dann gestartet wird, wenn von allen aktiven Knoten ein Echo
zurückgekommen
ist. In einer anderen Konstellation kann es vorkommen, dass überhaupt
keine Informationen darüber
vorliegen, ob bestimmte Knoten ausgefallen sind bzw. nicht zur Verfügung stehen.
In einem derartigen Fall wird das Timeout in vorteilhafter Weise
dann ge startet, wenn die Nachricht an alle in die Suche einbezogenen
Knoten verteilt ist. Die Länge
der Timeouts kann für
die beiden beschriebenen Konstellationen unabhängig voneinander gewählt werden.
-
Nach
Abschluss der Suche kann vorgesehen sein, dass ein virtuelles Overlay-Netzwerk generiert wird,
in das Knoten auf der Grundlage der Suchergebnisse entsprechend
vorgebbarer Kriterien aufgenommen werden. Beispielsweise können die
Knoten unter dem Gesichtspunkt möglichst
niedriger Kosten oder möglichst
umfassender Kapazitäten
ausgewählt werden.
Das virtuelle Overlay-Netzwerk kann dann quasi als „Tunnel-Netzwerk" dienen, durch das
die mit der Nutzung des Dienstes in Zusammenhang stehenden Pakete
geleitet werden, ohne dass das Routing im eigentlichen Netzwerk
geändert
werden muss.
-
Es
gibt nun verschiedene Möglichkeiten,
die Lehre der vorliegenden Erfindung in vorteilhafter Weise auszugestalten
und weiterzubilden. Dazu ist einerseits auf die dem Patentanspruch
1 nachgeordneten Patentansprüche
und andererseits auf die nachfolgende Erläuterung eines Ausführungsbeispiels
der Erfindung anhand der Zeichnung zu verweisen. In Verbindung mit
der Erläuterung
des bevorzugten Ausführungsbeispiels
der Erfindung werden auch im Allgemeinen bevorzugte Ausgestaltungen und
Weiterbildung der Lehre erläutert.
In der Zeichnung zeigt die einzige Fig. in einer schematischen Ansicht
den Aufbau eines Netzwerks sowie die grundsätzliche Funktionsweise des
erfindungsgemäßen Verfahrens
zur Suche von Diensten, Ressourcen und/oder Funktionalitäten in dem
Netzwerk.
-
Die
einzige Fig. zeigt zunächst – schematisch – ein Netzwerk
mit einer Vielzahl von Knoten, wobei die Knoten jeweils als Kreuzungspunkte
zweier Graden angedeutet sind. Die Kommunikation innerhalb des Netzwerks
basiert auf einem Routing-Mechanismus. Dabei ist jedem Knoten innerhalb des
Netzwerks eine routbare Netzwerkadresse zugeordnet.
-
Als
schwarz ausgefülltes
Quadrat ist ein Quellknoten Q dargestellt, von dem die Suche eines netzwerkseitigen
Dienstes initiiert wird. Die Suche wird gerichtet durchgeführt, und
zwar in Richtung auf einen ebenfalls als schwarz ausgefülltes Quadrat dargestellten
Zielknoten Z. Zwischen dem Quellknoten Q und dem Zielknoten Z ist
ein Routingpfad ausgebildet. Die einzelnen Knoten des Routingpfades sind
durch weiße
Kreise mit schwarzem Punkt symbolisiert. Es sei an dieser Stelle
nochmals betont, dass die Suche auch in Richtung auf mehrere unterschiedliche
Zielknoten Z entlang einer entsprechenden Anzahl von Routingpfaden
durchgeführt
werden kann. In der Figur ist aus Gründen der Übersichtlichkeit lediglich
ein Zielknoten Z und entsprechend ein Routingpfad gezeigt.
-
Um
die Suche zu beginnen, wird zunächst ein
so genanntes „OnStart"-Verfahren ausgeführt. Im Rahmen
der „OnStart"-Routine ermittelt
der Quellknoten Q den Knoten des Routingpfades, der einen Hop von
ihm entfernt ist, und sendet sodann eine Nachricht an diesen Knoten.
Die Nachricht enthält eine
Steuerungsinformation bezüglich
des zu suchenden Dienstes sowie einen Such-Parameter. Der Such-Parameter
gibt an, wie weit die Suche in seitlichen Richtungen vom Routingpfad
ausgedehnt werden soll. Im Konkreten ist der Such-Parameter als ganze
Zahl i definiert, was bedeutet, dass Knoten, die in seitlicher Richtung
i Hops von Knoten des Routingpfads entfernt sind, in die Suche eingebunden
werden. Im dargestellten Beispiel ist i = 1 gewählt, was bedeutet, dass nur
die den Knoten des Routingpfades in seitlichen Richtungen unmittelbar
benachbartem Knoten in die Suche einbezogen werden. In der Fig.
sind alle in die Suche einbezogenen Knoten als weiße Kreise
veranschaulicht.
-
Sobald
der erste Knoten des Routingpfades die Nachricht vom Quellknoten
Q empfangen hat, führt
er eine „OnInitiate"-Routine aus. Im
Rahmen dieser Routine prüft
er zunächst
anhand der in der Nachricht enthaltenen Information, ob er ein Zwischenknoten
ist oder nicht. Wenn er ein Zwischenknoten ist, bestimmt er den
nächsten
benachbarten Knoten des Routingpfades, an den er die Nachricht weitersendet.
Des Weiteren analysiert er den ebenfalls in der Nachricht enthaltenen
Such-Parameter im Hinblick auf die seitliche Ausdehnung der Suche.
Im dargestellten Beispiel, d. h. mit i = 1, sendet der Knoten die
Nachricht zusätzlich
an in seitlicher Richtung benachbarte Knoten. Die seitlichen Knoten
empfangen die Nachricht und stellen fest, dass sie keine Zwischenknoten
sind, d. h. dass sie nicht auf dem Routingpfad liegen. Daraufhin
dekrementieren sie den Such-Parameter um den Wert 1. Falls das Ergebnis größer als
Null ist, warten sie für
eine vorgebbare Zeit und senden danach die Nachricht an weiter außen liegende
Knoten. Im dargestellten Beispiel ist das Ergebnis nach der Dekrementierung
gleich Null. Demzufolge wird die Nachricht nicht weiter gesendet,
d. h. die seitliche Ausdehnung der Suche wird abgebrochen.
-
In
einem nächsten
Schritt wird eine „OnAggregate"-Routine ausgeführt. Dabei
werden die an allen der in die Suche einbezogenen Knoten gewonnen Informationen
bezüglich
der Verfügbarkeit
des gesuchten Dienstes (und ggf. bezüglich dessen Güte) am Quellknoten
Q zusammengeführt.
Jeder Knoten führt
dabei eine Liste seiner Kinder, d. h. derjenigen Knoten, an die
er seine Nachricht gesendet hat sowie deren Kinder. Wenn ein Knoten
im Rahmen der „OnAggregate"-Routine eine Rückantwort
von allen seinen Kindern empfangen hat, führt er die so genannte „OnComplete"-Methode aus, d.
h. er beendet seine die Suche betreffenden Aktivitäten. Gleiches
gilt für Knoten,
die keine Kinder haben, d. h. für
die in seitlicher Richtung am weitesten vom Routingpfad entfernten
Knoten.
-
Sobald
der Quellknoten Q eine Rückantwort von
allen seinen Kindern empfangen hat, wird eine „OnTerminate"-Routine ausgeführt. Diese
Routine bildet den Abschluss der Suche.
-
Nach
Beendigung der Suche liegen am Quellknoten Q Informationen von allen
in die Suche einbezogenen Knoten bezüglich der Verfügbarkeit des
gesuchten Dienstes vor. Anhand von Zusatzinformationen, die beispielsweise
angeben, welchen Datendurchsatz ein Knoten für den gesuchten Dienst bewerkstelligen
kann und welche Kosten durch die Nutzung des Dienstes entstehen,
wird ein Overlay-Netzwerk
generiert. Dieses Overlay-Netzwerk umfasst diejenigen Knoten, die
vorgebbare Kriterien – beispielsweise
kostengünstigster
Weg, geringste Auslastung, etc. – am besten erfüllen. Die
für das Overlay-Netzwerk
ausgewählten
Knoten, die in der Fig. von einem grau unterlegten Quadrat umgeben sind,
bilden einen virtuellen Tunnel, durch den die Pakte geleitet werden
können,
ohne dass das Routing im Netzwerk verändert werden muss.
-
Abschließend sei
ganz besonders hervorgehoben, dass das zuvor rein willkürlich gewählte Ausführungsbeispiel
lediglich zur Erörterung
der erfindungsgemäßen Lehre
dient, diese jedoch nicht auf das Ausführungsbeispiel einschränkt.