-
Querverweis auf verwandte Anmeldungen
-
Die vorliegende Anmeldung beansprucht den Nutzen der vorbekannten provisorischen Anmeldung mit der laufenden Nummer 60/523,140, eingereicht am 19.11.2003, auf deren Inhalt hiermit ausdrücklich Bezug genommen wird.
-
Technisches Gebiet
-
Die Erfindung betrifft die Synchronisation von Zeit und Daten zwischen Netzwerkeinrichtungen in Kommunikationsnetzwerken, wie zum Beispiel in Peer-to-Peer-Netzwerken.
-
Hintergrund der Erfindung
-
Bei vielen bekannten leitungsvermittelten oder paketvermittelten Fernsprechlösungen stellt ein zentralisiertes Anlagenelement (z.B. eine Vermittlung oder Nebenstellenanlage (PBX)) Fähigkeiten von Rufabschluß, Rufverarbeitung, Vermittlung und/oder Rufabwicklung bereit. In großen Systemen kann es sich bei den zentralen Geräten um einen leistungsstarken Computer handeln, der eine Anzahl von Funktionen auf Leiterplatten steuert, die als Anschlußkarten bezeichnet werden, die Fernsprechapparate mit dem Computer verbinden. In kleinen Systemen (z.B. in Systemenmit zehn oder weniger Endapparaten) kann die zentrale Intelligenz tatsächlich in einem „goldenen“ Fernsprechapparat verankert sein, der speziell dafür ausgelegt ist, die Zentralverarbeitungsgeräte zu halten.
-
Ungeachtet der Form, die die zentralen Geräte annehmen, werden gewöhnlich mehrere Endapparate (z.B. verdrahtete öder drahtlose Fernsprechapparate) mit den zentralen Geräten verbunden. Die Endapparate sind im Vergleich zu den zentralen Geräten in der Regel „dumme“ Einrichtungen. Das heißt, Endapparate können einfach Gabelschalterinformationen und Tastenbetätigungen (z.B. Mehrfrequenz- oder DTMF-Töne) zu den zentralen Geräten senden und Signale von den zentralen Geräten, wie zum Beispiel Wählton, Rufton oder Voice-Signale in Schall (oder in bestimmten Fällen in Bilder oder Video) umsetzen. Die Endapparate sind sich in der Regel nicht über die Existenz etwaiger anderer Endapparate bewußt und besitzen keine naturgemäße Kapazität, sich selbst mit einem anderen Endapparat zu verbinden.
-
In zentralisierten Fernsprechsystemen wird die Administration und Entdeckung von Fernsprechapparaten in einem Netzwerk in der Regel durch die zentralen Geräte durchgeführt. Zum Beispiel kann in einem traditionellen leitungsvermittelten zeitlich gemultiplexten (Time Division Multiplexing, TDM-)Fernsprechsystem jeder Endapparat mit einem Port an den zentralen Rufverarbeitungsgeräten verbunden werden. Als Teil einer beim Herauffahren stattfindenden Initialisierungssequenz sagt in der Regel jeder Endapparat den zentralen Geräten seine Verfügbarkeit an. Die zentralen Geräte überwachen jeden Port auf solche Ansagen, während neue Endapparate verbunden werden, und können somit neu hinzugefügte Endapparate „entdecken“.
-
In zentralisierten VoIP-Fernsprechsystemen (voice-overinternet-protocol (IP)) wird eine sehr ähnliche, aber etwas kompliziertere Prozedur verwendet; ein Endapparat sagt jedoch immer noch über das Netzwerk den zentralen Rufverarbeitungsgeräten seine Verfügbarkeit an. Wie in der Technik bekannt ist, handelt es sich, bei VoIP um die Übertragung von Rufen über ein Datennetzwerk auf der Basis des IP. Die Kommunikation findet in Form von Paketdaten statt, so daß keine feste Verbindung besteht, wie im Fall von leitungsvermittelten Netzwerken. Bei der Kommunikation kann es sich um Text, Stimme (Voice), Graphik oder Video handeln. IP-Geräte können zur Interoperabilität Standards wie zum Beispiel H.323 und SIP (Session Initiation Protocol) genügen. Der Standard H.323 beschreibt im allgemeinen, wie Multimedia-Kommunikation zwischen Endgeräten, Netzwerkgeräten und Diensten stattfinden soll. Der SIP-Standard deckt die technischen Anforderungen zum Aufbauen, Modifizieren und Abbauen von Multimediasitzungen über das Internet ab. Im vorliegenden Gebrauch bedeutetder Begriff „Ruf“ eine Multimediakommunikation zwischen zwei Endpunkten und schließt eine Voice-Fernsprechverbindung ein.
-
Gleichgültig, ob die zentralen Geräte leitungsvermittelt oder paketvermittelt sind, werden während des Verlaufs des Entdeckens eines neuen Endapparats die zentralen Geräte gewöhnlich automatisch eine Rufnummer (DN, „Directory Number“), die eine Form von Netzwerkadresse ist, zuweisen und verwalten. Bei der DN kann es sich z.B. um eine PBX-Durchwahl handeln. Da DNs verschiedenen Apparaten zugewiesen werden, werden die DNs zu einer Liste von DNs hinzugefügt, die in den zentralen Geräten geführt wird. Häufig können die zentralisierten Geräte nur auf der Basis dieser zentralisierten Liste die Identität des physischen Endapparats bestimmen, der angerufen werden soll, wenn eine DN von einem anrufenden Endapparat weitergeleitet wird. DNs sind nur ein Beispiel für Daten, die zentral durch die zentralen Geräte zur möglichen Verwendung durch mehr als einen Endapparat geführt werden können. Andere Beispiele beinhalten z.B. Benutzernamen und Benutzer-Rufabwicklungsoptionen.
-
Eine andere Verantwortlichkeit der zentralen Geräte kann darin bestehen, Endapparate über das aktuelle Datum bzw. die aktuelle Uhrzeit zu informieren. Obwohl es sich bei jedem Endapparat um eine digitale Einrichtung handeln kann, die eine Zeitgeberschaltung enthält, die ein lokales Datum bzw. eine lokale Uhrzeit (auch einfach als „lokale Zeit“ bezeichnet) führen kann, kommt es bei solchen Zeitgeberschaltungen gewöhnlich mit der Zeit zu signifikanten Driften. Folglich werden mehrere Endapparate, die anfänglich dieselbe Zeit anzeigen, und die zum Vorrücken der Zeit unabhängig gelassen werden, wahrscheinlich immer mehr zueinander desynchronisiert. Aus diesem Grund kann man mit zentralen Geräten verbundene Endapparate periodisch synchronisieren, indem z.B. jeder Endapparat periodisch angewiesen wird, seine lokale Zeit mit der von den zentralen Geräten geführten Zeit, die als die korrekte „Netzwerkzeit“ betrachtet wird, zu synchronisieren.
-
Da die mit größerer Verarbeitungskapazität und größerem Speicher verbundenen Kosten weiter abnehmen, wird die Aufnahme einer Rufverarbeitungsmaschine in jeden mit einem Netzwerk verbundenen Fernsprechapparat machbar. In solchen Systemen kann es wünschenswert sein, die zentralen Geräte zu eliminieren. Ein solches dezentralisiertes System kann als verteiltes Fernsprechsystem bezeichnet werden.
-
Nachteiligerweise eignet sich der oben beschriebene Ansatz zum Synchronisieren der Zeit über mehrere Endapparate hinweg nur schlecht für ein dezentralisiertes oder verteiltes Fernsprechsystem, da möglicherweise keine zentralisierten Geräte existieren.
-
Ein Problem in bezug auf die Zeitsynchronisation ist das Aufrechterhalten der Synchronisation (d.h. Kohärenz) zwischen Kopien von Daten in mehreren Endapparaten. In einem verteilten Fernsprechsystem kann von jedem Endapparat gefordert werden, seine eigene lokale Kopie (d.h. Version) von Daten zu führen, die in einem zentralisierten System zentral geführt worden wären. Wenn in einem Endapparat (z.B. aufgrund von Benutzereingabe oder einer Aktualisierung durch einen Systemadministrator) eine Kopie von Daten verändert wird, wird die aktualisierte Kopie in diesem Endapparat nicht mehr mit den Kopien dieser Daten in anderen Endapparaten synchronisiert (d.h. übereinstimmen). Es wird deshalb gewöhnlich wünschenswert oder notwendig sein, die aktualisierte Kopie der Daten zu jedem anderen Endapparat zu verbreiten. Natürlich ist es möglich, daß eine weitere Kopie derselben Daten nahezu gleichzeitig mit der ersten Änderung an einem anderen Endapparat verändert wird. Ein zuverlässiges Verfahren zur Bestimmung, welcher der beiden in Konflikt stehenden Datenwerte vorzuziehen ist (d.h. welche Kopie oder Version der Daten aufrechterhalten oder verworfen werden soll) wird benötigt.
-
In bestimmten Systemen wurden Zeitstempel zur Auflösung von Datenkonflikten in diesen Situationen verwendet. Das Prinzip solcher Verfahren ist gewöhnlich „die neueste Kopie gewinnt“. Damit solche Verfahren zuverlässig arbeiten, erfordern Netzwerkeinrichtungen natürlich eine einheitliche Sicht der Zeit (die manchmal als „Netzwerkzeit“ bezeichnet wird). In verallgemeinerten Datenverarbeitungsumgebungen kann man dies durch Verwendung eines Zeitservers erreichen. Ein Zeitserver ist eine Datenverarbeitungseinrichtung, die eine präzisere Repräsentation von Datum/Uhrzeit als andere Netzwerkeinrichtungen führt. Klient-Netzwerkeinrichtungen können sich durch Verwendung.eines standardisierten Protokolls auf den Zeitserver beziehen, um die Netzwerkzeit abzufragen, und können dann ihre lokale Zeit (gegebenenfalls unter Anwendung von Zeitzoneneinstellungen) setzen. Nachteiligerweise sind solche Zeitserver in bestimmten Netzwerken möglicherweise nicht verfügbar.
-
Bei bestimmten synchronisierten Fernsprechnetzwerken wird durch Verwendung spezieller Zeitsignale, die über spezielle Strecken abgeliefert werden, eine millisekundenpräzise Netzwerkzeit geführt. Dieser Ansatz kann große Genauigkeit ergeben, aber solche Implementierungen sind komplex und die assoziierten Kosten können als zu groß betrachtet werden.
-
Ein weiteres Problem, das mit der Verwendung von Zeitstempeln zur Auflösung von Datensychronisationskonflikten verbunden ist, besteht darin, daß in bestimmten Situationen der Wert eines Zeitstempels, der mit einem veränderten Datenelement assoziiert ist, möglicherweise kein zuverlässiger Indikator des relativen Alters dieser Daten ist. Dies ist auf den Umstand zurückzuführen, daß in bestimmten Situationen Zeitgeber, aus denen Zeitstempel erzeugt werden, auf nichtlineare Weise zu „springen“ scheinen können. Wenn zum Beispiel Zeitgeber auf Sommerzeit umgestellt werden, kann die Zeit scheinbar um eine Stunde vor- oder zurückspringen. Alternativ dazu kann die Zeit scheinbar vor- oder zurückspringen, wenn ein Zeitgeber durch einen Systemadministrator zurückgesetzt wird. In diesen Situationen können Daten mit einem „neueren“ Zeitstempel tatsächlich eine ältere Kopie dieser Daten als eine Version mit einem „älteren“ Zeitstempel repräsentieren. Folglich sind herkömmliche Synchronisationstechniken auf Zeitstempelbasis möglicherweise für die Datensynchronisation in verteilten Netzwerken nicht geeignet.
-
Aus die
US 6 125 368 A ist ein Fehler-tolerantes Generieren von Zeitstempeln eines parallelen Mehrknoten-Datenbanksystems, bei welchem jeder Knoten eine logische Uhr zum Generieren von Zeitstempeln besitzt, bekannt. Im Einzelnen können die logischen Uhren synchronisiert werden, indem jeder Knoten, der eine Nachricht sendet, dieser Nachricht seinen aktuellen Zeitstempel hinzufügt. Wenn ein Knoten hierbei einen Zeitstempel empfängt, der größer ist als der Wert der zu dem Knoten gehörenden logischen Uhr, setzt der Knoten seine eigene logische Uhr zumindest auf den Wert des empfangenen Zeitstempels. Ferner sendet und empfängt jeder Knoten kontinuierlich eine Nachricht mit einem Zeitstempel, zumindest einmal in einem vorgegebenen Zeitraum. Um zu gewährleisten, daß eine Nachricht mit dem jüngsten Zeitstempel jeden Knoten innerhalb des vorgegebenen Zeitraums erreicht, kann dies erfordern, daß jeder Knoten in einem Rundlauf-Verfahren mit jedem anderen Knoten in dem System kommunizieren muss. Denn da einer der Knoten die schnellste logische Uhr besitzt, empfängt dann auch jeder andere Knoten den Zeitstempel von dieser schnellsten logischen Uhr und kann damit jeweils seine eigene logische Uhr synchronisieren. Dies bringt allerdings eine umfangreiche, quadratisch anwachsende Anzahl von erforderlichen Nachrichten mit sich.
-
In der
US 6 581 075 B1 wird vorgeschlagen, einen Datensatz einer Datenbank zu aktualisieren, wenn der Zeitstempel einer eingehenden Datensatz-Aktualisierungsanfrage wesentlich größer, d.h. aktueller, ist, als ein mit dem zu aktualisierenden Datensatz verknüpfter Zeitstempel. Ergänzend, alternativ kann auch eine Aktualisierung eines Datensatzes erfolgen, wenn eine, der Datensatz-Aktualisierungsanfrage beigeordnete Priorität oder eine dem Knoten beigeordnete Priorität, welcher die Datensatz-Aktualisierungsanfrage sendet, höher ist als eine mit dem zu aktualisierenden Datensatz verknüpfte Zeitstempel mit dem zu aktualisierenden Datensatz verknüpfter Priorität.
-
In einem verteilten Fernsprechsystem wäre folglich ein alternatives Verfahren zum Synchronisieren der Zeit zwischen Endapparaten und zum Aufrechterhalten der Datenkohärenz zwischen Endapparaten oder anderen Formen von Netzwerkeinrichtungen wünschenswert. Allgemeiner wäre in verteilten Systemen, wie zum Beispiel verteilten Peer-to-Peer-Multimedia-Kommunikationssystemen, ein Verfahren zum Synchronisieren der Zeit und zum Aufrechterhalten von Datenkohärenz zwischen Netzwerkeinrichtungen wünschenswert.
-
Die Lösung gemäß vorliegender Erfindung ist durch ein Verfahren mit den Merkmalen des anhängenden Anspruchs 1, durch ein Kommunikationsnetzwerk mit den Merkmalen des anhängenden Anspruchs 21 und durch eine Netzwerkeinrichtung mit den Merkmalen des anhängenden Anspruchs 41 gegeben. Bevorzugte Ausführungsformen sind Gegenstand der Unteransprüche.
-
Kurzfassung der Erfindung
-
Um die Zeit zwischen gleichermaßen zum präzisen Führen einer Anzeige der aktuellen Zeit fähigen Netzwerkeinrichtungen zu synchronisieren, wird eine der Netzwerkeinrichtungen als Referenz für die Zeit angesehen und die anderen Netzwerkeinrichtungen synchronisieren ihre Anzeigen der aktuellen Zeit mit der Referenz. Um Kopien von Daten in mehreren Netzwerkeinrichtungen zu synchronisieren, führt jede Netzwerkeinrichtung einen Zähler, der den Ablauf der Zeit, aber nicht unbedingt die aktuelle Zeit, repräsentiert. Der Zähler in jeder Einrichtung wird periodisch mit den Zählern anderer Netzwerkeinrichtungen synchronisiert. Wenn Daten in einer Netzwerkeinrichtung geändert werden, wird der Wert des Zählers zum Zeitpunkt der Änderung in Assoziation mit den geänderten Daten gespeichert. Mit gespeicherten Zählerwerten wird bestimmt, ob eine lokale Kopie oder eine abgesetzte Kopie der Daten wahrscheinlich neuer und deshalb vorzuziehen ist. Es kann eine weitere Prüfung angewandt werden, wenn ein Zählerwertvergleich nicht schlüssig ist.
-
Gemäß einem Aspekt der vorliegenden Erfindung wird in einer Netzwerkeinrichtung von mehreren Netzwerkeinrichtungen ein Verfahren mit den folgenden Schritten bereitgestellt: Führen eines ersten Zählers zum Repräsentieren des Ablaufs der Zeit dergestalt, daß die repräsentierte Dauer abgelaufener Zeit zu einem beliebigen gegebenen Zeitpunkt mindestens so groß wie die repräsentierte Dauer abgelaufener Zeit zu jedem beliebigen vorherigen Zeitpunkt ist; und wenn Daten verändert werden, um zu geänderten Daten zu werden: Speichern des Werts des ersten Zählers zum Zeitpunkt der Änderung der Daten in Assoziation mit den geänderten Daten; und Senden einer Anzeige der geänderten Daten zusammen mit dem Wert des ersten Zählers zum Zeitpunkt der Änderung der Daten zu einer anderen Netzwerkeinrichtung.
-
Gemäß einem anderen Aspekt der vorliegenden Erfindung wird in einer Netzwerkeinrichtung von mehreren Netzwerkeinrichtungen ein Verfahren mit den folgenden Schritten bereitgestellt: Empfangen von Anzeigen einer aktuellen Zeit von anderen Netzwerkeinrichtungen, wobei jede der Netzwerkeinrichtungen gleichermaßen zur Führung einer präzisen Repräsentation der aktuellen Zeit fähig ist; Bestimmen, welche der anderen Netzwerkeinrichtungen eine Referenz für Zeit ist; und Synchronisieren eines Zeitgebers mit einer von der Referenz für Zeit empfangenen Anzeige einer aktuellen Zeit.
-
Gemäß einem weiteren Aspekt der vorliegenden Erfindung wird eine Netzwerkeinrichtung bereitgestellt, die für folgendes ausgelegt ist: Führen eines ersten Zählers zum Repräsentieren des Ablaufs der Zeit dergestalt, daß die repräsentierte Dauer abgelaufener Zeit zu einem beliebigen gegebenen Zeitpunkt mindestens so groß wie die repräsentierte Dauer abgelaufener Zeit zu jedem beliebigen vorherigen Zeitpunkt ist; und wenn Daten verändert werden, um zu geänderten Daten zu werden: Speichern des Werts des ersten Zählers zum Zeitpunkt der Änderung der Daten in Assoziation mit den geänderten Daten; und Senden einer Anzeige der geänderten Daten zusammen mit dem Wert des ersten Zählers zum Zeitpunkt der Änderung der Daten zu einer anderen Netzwerkeinrichtung.
-
Gemäß noch einem weiteren Aspekt der vorliegenden Erfindung wird eine Netzwerkeinrichtung bereitgestellt, die für folgendes ausgelegt ist: Empfangen von Anzeigen einer aktuellen Zeit von anderen Netzwerkeinrichtungen, wobei jede der Netzwerkeinrichtungen gleichermaßen zur Führung einer präzisen Repräsentation der aktuellen Zeit fähig ist; Bestimmen, welche der anderen Netzwerkeinrichtungen eine Referenz für Zeit ist; und Synchronisieren eines Zeitgebers mit einer von der Referenz für Zeit empfangenen Anzeige einer aktuellen Zeit.
-
Gemäß noch einem weiteren Aspekt der vorliegenden Erfindung wird ein maschinenlesbares Medium bereitgestellt, das maschinenausführbaren Code zur Ausführung in einer Netzwerkeinrichtung von mehreren Netzwerkeinrichtungen enthält, umfassend: maschinenausführbaren Code zum Führen eines ersten Zählers zum Repräsentieren des Ablaufs der Zeit dergestalt, daß die repräsentierte Dauer abgelaufener Zeit zu einem beliebigen gegebenen Zeitpunkt mindestens so groß wie die repräsentierte Dauer abgelaufener Zeit zu jedem beliebigen vorherigen Zeitpunkt ist; und maschinenausführbaren Code zum, wenn Daten verändert werden, um zu geänderten Daten zu werden: Speichern des Werts des ersten Zählers zum Zeitpunkt der Änderung der Daten in Assoziation mit den geänderten Daten; und Senden einer Anzeige der geänderten Daten zusammen mit dem Wert des ersten Zählers zum Zeitpunkt der Änderung der Daten zu einer anderen Netzwerkeinrichtung.
-
Gemäß noch einem weiteren Aspekt der vorliegenden Erfindung wird ein maschinenlesbares Medium bereitgestellt, das maschinenausführbaren Code zur Ausführung in einer Netzwerkeinrichtung von mehreren Netzwerkeinrichtungen enthält, umfassend: maschinenausführbaren Code zum Empfangen von Anzeigen einer aktuellen Zeit von anderen Netzwerkeinrichtungen, wobei jede der Netzwerkeinrichtungen gleichermaßen zur Führung einer präzisen Repräsentation der aktuellen Zeit fähig ist; maschinenausführbaren Code zum Bestimmen, welche der anderen Netzwerkeinrichtungen eine Referenz für Zeit ist; und maschinenausführbaren Code zum Synchronisieren eines Zeitgebers mit einer von der Referenz für Zeit empfangenen Anzeige einer aktuellen Zeit.
-
Weitere Aspekte und Merkmale der vorliegenden Erfindung werden für Durchschnittsfachleute bei Durchsicht der folgenden Beschreibung spezifischer Ausführungsformen der Erfindung in Verbindung mit den beigefügten Figuren ersichtlich.
-
Figurenliste
-
Es werden nun Ausführungsbeispiele der Erfindung mit Bezug auf die beigefügten Zeichnungen beschrieben. Es zeigen:
- 1 ein Fernsprechsystem mit mehreren vernetzten Endapparaten („Peers“) mit der Fähigkeit zur Zeit- und Datensynchronisation gemäß einer Ausführungsform der Erfindung;
- 2 ein teilweises Blockschaltbild eines Endapparats des Fernsprechsystems von 1;
- 3 ein Funktionsblockschaltbild von in dem Endapparat von 2 wirkender Software;
- 4 eine Routing-Tabelle des Endapparats von 2;
- 5 eine von einem Endapparat während der Peer-Entdeckung implementierten Automaten;
- 6 ein Flußdiagramm der Funktionsweise eines Endapparats in dem in 5 gezeigten Anfangszustand;
- 7 ein Flußdiagramm der Funktionsweise eines Endapparats in einem in 5 gezeigten Rufnummer-Sondierungszustand;
- 8 ein Flußdiagramm der Funktionsweise eines Endapparats in einem in 5 gezeigten DN-Setzzustands;
- 9 ausführlicher ein in 3 gezeigtes Zeit- und Datensynchronisationsmodul;
- 10 einen Automaten, der die Zeitsynchronisation zwischen den Endapparaten von 1 regelt;
- 11 die Funktionsweise eines Endapparats in einem in 10 gezeigten Initialisierungszustand;
- 12 die Funktionsweise eines Endapparats in dem in 10 gezeigten Freilaufzustand;
- 13 die Funktionsweise eines Endapparats in einem in 10 gezeigten Aktivzustand;
- 14 einen beispielhaften Datenbank-Datensatz, der in einer Datenbank eines Endapparats gespeichert werden kann;
- 15 die Initialisierung eines Zählers für die Datensequenznummer (DSN), der zum Zwecke der Datensynchronisation verwendet wird;
- 16 die Funktionsweise zum Synchronisieren von DSN-Zählern zwischen Endapparaten zu Zwecken der Datensynchronisation;
- 17 die Funktionsweise zum Speichern veränderter Daten in einem Endapparate gemäß Datensynchronisationsoperation; und
- 18 die Funktionsweise zum Synchronisieren von Daten in einem Endapparat mit einer abgesetzten Kopie der Daten in einem anderen Endapparat.
-
Ausführliche Beschreibung
-
Als Übersicht, es ist wünschenswert, daß jeder Endapparat in einem beispielhaften verteilten Fernsprechsystem, welches kein zentrales Element von Routing- oder Vermittlungsausstattung aufweist (oder allgemeiner für jede Netzwerkeinrichtung in einer Gruppe vernetzter Netzwerkeinrichtungen), eine einheitliche Repräsentation der Zeit (die als „Netzwerkzeit“ bezeichnet wird) aufrechtzuhalten. Der Klarheit halber bedeutet „Netzwerkzeit“ eine einheitliche Sicht der Zeit, die sich mehrere Netzwerkeinrichtungen in einem Netzwerk teilen, die die tatsächliche Zeit präzise wiedergibt oder auch nicht. Außerdem ist es wünschenswert, daß die Zeitsynchronisation ohne zuviel Kommunikationsoverhead zwischen Endapparaten erzielt wird.
-
Um dieses Ergebnis zu erreichen, verwendet jeder Endapparat dieselbe Auswahltechnik zur Auswahl einer der Endapparate als Referenz für Zeit. Da die von jedem Endapparat verwendete Auswahltechnik dieselbe ist, wählt jeder Endapparat denselben Endapparat als Referenz für Zeit. Die Auswahl basiert nicht auf einer überlegenen Fähigkeit des gewählten Endapparats, präzise die Zeit zu führen. Es kann eine beliebige Technik verwendet werden, die zuverlässig einen Endapparat aus mehreren Endapparaten auswählt. Zum Beispiel kann der Endapparat mit der niedrigsten Hardwareadresse von allen anderen aktiven Endapparate ausgewählt werden.
-
Nachdem die Referenz für Zeit ausgewählt wurde, synchronisiert jeder Endapparat periodisch seinen Zeitgeber mit Zeitstempeln in von der Referenz für Zeit empfangenen Nachrichten. Zu Einheitlichkeitszwecken und um übermäßige Zeitsynchronisationsverarbeitung zu vermeiden, wird keine Synchronisation unter Verwendung von Zeitstempeln in von anderen Endapparaten empfangenen Nachrichten durchgeführt.
-
Außerdem ist die Aufrechterhaltung der Synchronisation (d.h. Kohärenz) zwischen Kopien von Daten, die in mehreren Endapparaten in einem verteilten Fernsprechsystem (oder allgemeiner zwischen mehreren Netzwerkeinrichtungen) gespeichert werden, wünschenswert. Wenn Daten in einem gegebenen Endapparat geändert werden, sollte die Änderung zuverlässig zu anderen Endapparaten verbreitet werden. In einer beliebigen gegebenen Situation, in der zwei verschiedene Versionen derselben Daten existieren, sollte einheitlich von jedem Endapparat eine zuverlässige Art und Weise der Bestimmung, welche Version „wahr“ (d.h. vorzuziehen) ist, angewandt werden.
-
Um dieses Ergebnis zu erreichen, führt jeder Endapparat einen Zähler, der das Ablaufen der Zeit repräsentiert, so daß die repräsentierte Dauer abgelaufener Zeit zu einem beliebigen gegebenen Zeitpunkt mindestens so groß wie die repräsentierte Dauer abgelaufener Zeit zu einem beliebigen vorherigen Zeitpunkt ist (d.h. der Zähler kann nicht zurückgesetzt werden, um einen früheren Zeitpunkt anzuzeigen). Der Zähler zeigt nicht die aktuelle Zeit an und wird somit nicht von solchen scheinbaren nichtlinearen Sprüngen der Zeitgebereinstellungen, wie zum Beispiel Sommerzeit oder Einstellung des lokalen Datums bzw. der lokalen Uhrzeit betroffen; in solchen Situationen verfolgt der Zähler einfach weiter das Ablaufen der Zeit.
-
Bei einer Ausführungsform ist der Zähler in jedem Endapparat ein monoton zunehmender Zähler, der zunimmt, um das Ablaufen der Zeit anzuzeigen (z.B. wird er jede Sekunde inkrementiert).
-
Der Zähler in einem Endapparat wird periodisch mit den Zählern anderer Endapparate synchronisiert. Die Synchronisation umfaßt ein Vergleichen der aktuellen Werte der Zähler in verschiedenen Endapparaten und ein Vorrücken des Zählers, dessen. Wert ein geringeres Ablaufen von Zeit repräsentiert (wobei es sich im Fall eines monoton zunehmenden Zählers um den kleineren Wert handelt), um mit dem Zähler übereinzustimmen, der ein größeres Ablaufen von Zeit repräsentiert (den größeren Wert).
-
Wenn Daten in einem Endapparat geändert werden, wird ein „Schnappschuß“ des Werts des Zählers zum Zeitpunkt der Änderung erfaßt und in Assoziation mit den geänderten Daten gespeichert. Kopien der geänderten Daten werden zusammen mit dem erfaßten Zählerwert zu anderen Endapparaten gesendet. Ein Empfänger-Endapparät, der eine lokale Kopie der Daten besitzt, besitzt dann auch einen assoziierten gespeicherten Zählerwert, der den Zeitpunkt der Erzeugung oder der letzten Aktualisierung der lokalen Kopie angibt. Der Empfänger vergleicht den empfangenen Zählerwert mit dem gespeicherten Zählerwert. Die Daten, die mit dem Zähler assoziiert sind, der ein längeres Ablaufen von Zeit wiedergibt (wobei es sich im Fall eines monoton zunehmenden Zählers um den höherwertigen Zähler handelt) werden als neuer und somit als vorzuziehen betrachtet; diese Daten werden vom Empfänger behalten. Wenn diese lokale Kopie als vorzuziehen befunden wird, wird eine Kopie zu dem sendenden Endapparat weitergeleitet, um es diesem Endapparat zu erlauben, die vorzuziehende Kopie zu speichern. Wenn die Zählerwerte gleich sind, kann eine weitere Prüfung (z.B. niedrigste Hardwareadresse) angewandt werden, um sich gleichförmig auf eine vorzuziehende Datenversion zu einigen.
-
Bei einer alternativen Ausführungsform ist der Zähler in jedem Endapparat ein monoton abnehmender Zähler, der abnimmt, um das Ablaufen von Zeit anzuzeigen (z.B. wird er jede Sekunde dekrementiert). In diesem Fall würden kleinere Werte ein größeres Ablaufen von Zeit und somit neuere Daten repräsentieren. Bei solchen Ausführungsformen würde die Zählersynchronisation zwischen Endapparaten umfassen, den Zähler mit dem größeren Wert auf den kleineren Wert zu setzen.
-
Zeit- und Datensynchronisationsfähigkeiten können in Verbindung mit Peer-Entdeckungsfähigkeiten bereitgestellt werden, wodurch die Netzwerkeinrichtung andere Netzwerkeinrichtungen (Peers) in einem Peer-to-Peer-Netzwerk erkennen und von diesen erkannt werden kann. Eine Übersicht über die Peer-Entdeckungsoperation in einer beispielhaften Ausführungsform folgt nun. Diese Übersicht liefert einen Kontext für die nachfolgende Beschreibung der Zeit- und Datensynchronisationsoperation.
-
PEER-ENTDECKUNG
-
In einem beispielhaften verteilten Fernsprechsystem, in dem ein zentrales Element von Routing- oder Vermittlungsausstattung fehlt, können bestimmte Merkmale wünschenswert sein. Ein wünschenswertes Merkmal kann die Fähigkeit sein, automatisch jedem Endapparat bei anfänglicher Verbindung des Endapparats mit einem Netzwerk eine eindeutige DN zuzuweisen, wobei vorzugsweise eine Bemühung erfolgt, Konflikte zwischen den von verschiedenen Endapparaten in dem Netzwerk gewählten DNs zu minimieren. Ein weiteres wünschenwertes oder obligatorisches Merkmal besteht darin, sicherzustellen, daß jedem Endapparat die DN jedes anderen mit dem Netzwerk verbundenen Endapparats bewußt gemacht wird, so daß jeder Endapparat Rufe zu anderen Endapparaten herstellen kann. Ein weiteres wünschenswertes Merkmal ist die Fähigkeit, eine einem Endapparat zugewiesene DN auch nach Trennung des Endapparats von dem Netzwerk oder bei Verlust der Stromversorgung des Endapparats zu erhalten (wobei beides dazu führt, daß ein Endapparat „inaktiv“ wird). Die Motivation für das Erhalten der DN kann darin bestehen, zu verhindern, daß die DN des inaktiven Endapparats als Folge der vorübergehenden Trennung des Endapparats von dem Netzwerk (z.B. aufgrund einer fehlerhaften Verbindung zwischen dem Endapparat und dem Netzwerk, eines einfachen Verlusts der Stromversorgung oder einer Herausbewegung eines drahtlosen Endapparats aus der Reichweite) neu zugewiesen wird, wobei diese Neuzuweisung zu Verwirrung seitens eines anrufenden Teilnehmers darüber, welcher Endapparat angerufen wurde, führen könnte.
-
Um diese Merkmale zu unterstützen, benachrichtigt ein Endapparat (z.B. ein Fernsprechapparat, ein PDA (Portable Digital Assistant), ein PC (Personal Computer), ein drahtloses Endgerät, eine TTI (Think Trunk Interface) oder eine anderweitige Netzwerkeinrichtung), der für eine Ausführungsform der vorliegenden Erfindung beispielhaft ist, bei der anfänglichen Verbindung mit einem Netzwerk in einem „fabrikfrischen“ Zustand (d.h. noch unkonfiguriert) die anderen Endapparate in dem Netzwerk (seine „Peers“) über seine Verbindung mit dem Netzwerk mittels einer Netzwerkverbindungsbenachrichtigung. Die Netzwerkverbindungsbenachrichtigung enthält eine mit dem Endapparat assoziierte eindeutige Kennung, wie zum Beispiel eine Adresse der Medienzugangssteuerung (MAC - „Media Access Control). Wie aus der Technik bekannt ist, ist eine MAC-Adresse eine eindeutige Hardwareadresse oder Hardwarenummer, die als eindeutige Kennung für eine Netzwerkeinrichtung dient. Die Netzwerkverbindungsbenachrichtigung kann die Form einer Nachricht „I_AM_HERE“ annehmen, die mehrmals gesendet wird, um die Wahrscheinlichkeit zu vergrößern, daß die Nachricht empfangen wird (mindestens im Fall, daß keine Bestätigung von anderen Peers für jede empfangene Nachricht gesendet wird, wie bei der vorliegenden Ausführungsform).
-
Der frisch verbundene Endapparat empfängt außerdem Existenzbenachrichtigungen von anderen Endapparaten. Eine Existenzbenachrichtigung ist eine Anzeige der Existenz eines Endapparats, der entweder zur Zeit Präsenz in dem Netzwerk hat (d.h. aktiv ist und mit dem Netzwerk verbunden ist) oder zuvor eine Präsenz in dem Netzwerk hatte (d.h. zuvor aktiv und verbunden war, aber nun getrennt und inaktiv geworden ist). Bei der vorliegenden Ausführungsform kann eine Existenzbenachrichtigung eine beliebige Nachricht der folgenden Typen sein: „I_AM_HERE“ (zuvor beschrieben), „PEER_ASSERT“ (nachfolgend beschrieben) oder „INACTIVE_PEER_ASSERT“ (nachfolgend beschrieben). Jede Existenzbenachrichtigung enthält die eindeutige Kennung des Endapparats in Bezug auf den die Nachricht gesendet wurde. Die beiden letzteren Arten von Nachrichten („PEER_ASSERT“ und „INACTIVE_PEER_ASSERT“) liefern zusätzlich eine Anzeige bereits beanspruchter DNs und werden nur empfangen, wenn der frisch verbundene Endapparat sich einem Netzwerk anschließt, in dem mindestens ein Endapparat bereits eine DN beansprucht hat.
-
Aus den Existenznachrichten wird eine Liste aller Endapparate in dem Netzwerk (die als Routing-Tabelle bezeichnet wird) erzeugt. Die Endapparate in der Liste werden nach ihren eindeutigen Netzwerkeinrichtungskennungen sortiert. Für etwaige Endapparate, die bereits DNs beansprucht haben, wird in der sortierten Liste die beanspruchte DN angegeben. Der frisch verbundene Endapparat weist dann eine Ordinalposition in der Liste auf.
-
Um eine voraussichtliche DN auszuwählen, kann der frisch verbundene Endapparat ein mit seiner Ordinalposition in der Liste assoziiertes Offset zu einer Basis-DN addieren. In einem System, bei dem die DN eine PBX-Durchwahl repräsentiert, kann zum Beispiel unter der Annahme, daß der neue Endapparat der dritte in einer Liste von fünf Endapparaten ist, die voraussichtliche DN als 203 bestimmt werden (ein Offset gleich der Ordinalposition des Endapparats, d.h. 3, plus einer Basis-DN von 200). Durch Basieren der Auswahl einer voraussichtlichen DN auf der mit dem Endapparat assoziierten eindeutigen Ordinalposition wird die Auswahl eindeutiger voraussichtlicher DNs durch verschiedene Endapparate gefördert. Dabei wird ein Szenario angenommen, bei dem sich mehrere fabrikfrische Endapparate gleichzeitig einem Netzwerk anschließen, das keine existierende Endapparate mit zuvor zugewiesenen DNs aufweist. Das Prinzip besteht darin, zu versuchen zu verhindern, daß verschiedene Endapparate anfänglich dieselbe voraussichtliche DN auswählen, was zu einer zeitaufwendigen Konfliktauflösungsverarbeitung führen kann.
-
Nach Auswahl seiner voraussichtlichen DN benachrichtigt der frisch verbundene Endapparat dann jeden anderen Endapparat über seine voraussichtliche DN. Dies wird als eine „DN-Sondierung“ bezeichnet. Wenn kein anderer Endapparat Einwände gegen die Beanspruchung der voraussichtlichen DN durch den frisch verbundenen Endapparat hat (wobei ein etwaiger Einwand möglicherweise auf einem existierenden Anspruch auf diese DN durch einen der anderen Endapparate basiert), beansprucht der frisch verbundene Endapparat die voraussichtliche DN als seine eigene. Der frisch verbundene Endapparat kann den Ablauf eines vorbestimmten Zeitintervalls erlauben, bevor er seine voraussichtliche DN beansprucht, um dem anderen Endapparat genug Zeit zu geben, um etwaige Einwände zu erheben. Unter der Annahme, daß die voraussichtliche DN erfolgreich beansprucht wurde, benachrichtigt der frisch verbundene Endapparat jeden anderen Endapparat über seinen Anspruch auf diese DN. Der frisch verbundene Endapparat speichert außerdem die beanspruchte DN im nichtflüchtigen Speicher, so daß die zugewiesene DN abgerufen werden kann, wenn der Endapparat die Stromversorgung verliert. Außerdem kann die Routing-Tabelle gespeichert werden.
-
Falls der frisch verbundene Endapparat sich einem etablierten Netzwerk anschließt, können die anderen Endapparate in dem Netzwerk bereits ihre DNs gewählt haben. In diesem Fall ist es möglich, daß die von dem frisch verbundenen Endapparat gewählte voraussichtliche DN bereits einem der existierenden Endapparate zugewiesen ist. Wenn zum Beispiel die Ordinalposition des frisch verbundenen Endapparats in der sortierten Liste von Endapparaten von dem Ende der Liste verschieden ist (z.B. wenn die eindeutige Kennung des neuen Endapparats diesen irgendwo in der Mitte der sortierten Liste plaziert), wird die voraussichtliche DN, die resultiert, wenn das mit der Ordinalposition des frisch verbundenen Endapparat assoziierte Offset zu der Basis-DN addiert wird, die DN eines der existierenden Endapparate repräsentieren.
-
Im Hinblick auf diese Möglichkeit konsultiert der frisch verbundene Fernsprecher, bevor er versucht, andere Endapparate über seine voraussichtliche DN zu benachrichtigen, zuerst seine Routing-Tabelle, um zu bestimmen, ob die voraussichtliche DN bereits von etwaigen anderen Endapparaten in dem Netzwerk beansprucht wird. Wenn die voraussichtliche DN bereits von einem anderen Apparat beansprucht wird, kann die frisch verbundene DN eine andere voraussichtliche DN wählen, z.B. durch Addieren eines Offset, wie zum Beispiel 1 zu der größten in der Liste gefundenen DN, bevor etwaige der anderen Endapparate über seine Wahl benachrichtigt werden. Dadurch wird möglicherweise ein unnötiges Kommunikationsoverhead in dem Netzwerk vermieden, das andernfalls resultieren könnte, wenn der frisch verbundene Endapparat jeden anderen Endapparat über seine voraussichtliche DN benachrichtigt, nur um einen Einwand von einem der anderen Endapparate zu empfangen, der diese DN bereits beansprucht hat.
-
Nachdem eine frisch verbundener Endapparat erfolgreich eine DN beansprucht hat, benachrichtigt der Endapparat periodisch die anderen Endapparate in dem Netzwerk über seinen Anspruch auf diese DN. Bei der vorliegenden Ausführungsform nimmt jede periodische Benachrichtigung die Form einer Nachricht „PEER_ASSERT“ an, die als „Herzschlag“ des frisch verbundenen Endapparats dient, wodurch fortgesetzte Netzwerkpräsenz und fortgesetzter Anspruch auf seine DN angezeigt wird. Die anderen Endapparate in dem Netzwerk überwachen die Benachrichtigungen. Bei der vorliegenden Ausführungsform erfolgen die periodischen Benachrichtigungen in zufälligen Zeitintervallen (z.B. zwischen 0 und 2 Sekunden). Wenn eine vorbestimmte Zeitdauer ohne Empfang einer Benachrichtigung von einem Endapparat verstreicht, wird angenommen, daß dieser Endapparat inaktiv geworden ist. Die periodische Benachrichtigung dient außerdem dazu, zu verhindern, daß ein nachfolgend hinzugefügter Endapparat versucht, diese DN als seine eigene zu beanspruchen. Wenn zum Beispiel ein anderer Endapparat diese DN als seine voraussichtliche DN gewählt hat und auf etwaige Einwände von anderen Endapparaten wartet, kann die Benachrichtigung als Einwand gegen den Anspruch dieser DN durch diesen Endapparat dienen. Außerdem können ausdrückliche Einwände (z.B. DN-CONFLICT-Nachrichten) gesendet werden.
-
Wenn ein Endapparat, der eine DN beansprucht hat, sich von dem Netzwerk trennt oder die Stromversorgung verliert, wird er wahrscheinlich nicht in der Lage sein, periodisch die anderen Endapparate in dem Netzwerk über seinen Anspruch auf seine DN zu benachrichtigen. Ein anderer Endapparat in dem Netzwerk, der sich über die Inaktivität des getrennten Endapparats bewußt geworden ist (z.B. durch Fehlen etwaiger neuerer PEER_ASSERT-Nachrichten von diesem Endapparat) schreitet in diesem Fall ein und beginnt damit, periodisch die anderen Endapparate in dem Netzwerk über den Umstand zu benachrichtigen, daß, obwohl der getrennte Endapparat inaktiv ist, seine DN bereits beansprucht wurde. Der Endapparat, der eingeschritten ist, der zweckmäßigerweise als „Surrogat“ bezeichnet wird, ist dafür verantwortlich, diese periodischen Benachrichtigungen (die die Form der nachfolgend beschriebenen „INACTIVE_PEER_ASSERT-Nachrichten“ annehmen können) zu senden, zusätzlich zu einer periodischen Benachrichtigung der anderen Endapparate über seinen Anspruch auf seine eigene DN. Es kann ein Algorithmus angewandt werden, um zu entscheiden, welcher Endapparat das Surrogat für einen inaktiven Endapparat sein soll. Die im Namen des inaktiven Endapparats gesendeten periodischen Benachrichtigungen des Surrogats können verhindern, daß ein nachfolgend hinzugefügter Endapparat versucht, die DN des getrennten Endapparats als seine eigene zu beanspruchen.
-
Wenn sich der getrennte Endapparat später wieder mit dem Netzwerk verbindet, kann er die Benachrichtigung der anderen Endapparate über seine DN (die er sich aus dessen nichtflüchtigen Speicher wieder abrufen kann) in seinem eigenen Namen wieder aufnehmen. Wenn der Surrogat-Endapparat die Wiederverbindung erkennt, kann er damit aufhören, die anderen Endapparate über die DN des wiederverbundenen Endapparats zu benachrichtigen, da der wiederverbundene Endapparat seine Verantwortung wieder aufgenommen hat.
-
Mit Bezug auf 1 ist ein Fernsprechsystem 10 (oder „Telefonsystem 10“) gezeigt, das die Peer-Entdeckung gemäß einer Ausführungsform der Erfindung ausnutzt. Das Fernsprechsystem 10 besitzt eine TTI (Thin-Trunk-Schnittstelle) 40 und mehrere Fernsprechapparate 100-1 bis 100-N (jeweils eine Form von Endapparat und eine Form von Netzwerkeinrichtung), die durch eine Vermittlung 20 mit einem lokalen Netzwerk (LAN) 30 verbunden sind. Als Alternative kann die Vermittlung 20 durch ein Netzwerk-Hub ersetzt werden. Der Klarheit halber sind nur vier Fernsprechapparate gezeigt, es können jedoch insgesamt N Fernsprechapparate mit N ≥ 2 vorliegen und ferner ist bei bestimmten Ausführungsformen der Erfindung N eine große Zahl, zum Beispiel im Bereich von tausenden. Die Thin-Trunk-Schnittstelle 40 ist zum Beispiel eine einfache analoge oder digitale T1/E1-Schnittstelle oder jede beliebige andere PSTN-Schnittstelle und liefert eine zwischenwirkende (im engl. „Interworking“-) Schnittstelle einer Ortsvermittlungsstellen oder des öffentlichen Fernsprechwählnetzes (PSTN, „Public Switched Telephone Network“) und ist an einer Anzahl von Fernsprech-„Leitungen“ 1, 2, 3, 4 angekoppelt. Die Leitungen 1, 2, 3, 4 sind Doppelleitungen, die Einrichtungen repräsentieren, die von einer Ortsvermittlungsstelle oder dem PSTN (nicht gezeigt) bereitgestellt werden. Bei bestimmten Ausführungsformen der Erfindung gibt es viele Leitungen, die mehrere Thin-Trunk-Schnittstellen erfordern. Wenn zum Beispiel 8 Leitungen zu dem PSTN erforderlich sind, kann eine zweite Thin-Trunk-Schnittstelle zu dem System 10 hinzugefügt. werden.
-
Im Gegensatz zu herkömmlichen zentralisierten Fernsprechsystemen besitzt das System 10 von 1 als Merkmal verteilte Rufverarbeitung. Diese verteilte Rufverarbeitung kann eine Anzahl von Fähigkeiten, einschließlich zum Beispiel verteilte Voice-Mail, als Merkmale besitzen.
-
Mit Bezug auf 2 ist ein teilweises Blockschaltbild eines beispielhaften Fernsprechapparats 100-X (mit X = 1 bis N) des Fernsprechsystems 10 von 1 gezeigt. Eine Zentralprozessoreinheit (CPU) 530, eine Speicherverwaltungseinheit (MMU) 545 und ein Direktzugriffsspeicher (RAM) 535 stellen die Grundlage einer rechnerischen Einrichtung bereit. Diese rechnerische Einrichtung ist zur Codierung und Decodierung von Audiosignalen mit einem digitalen Signalprozessor (DSP) 520 verbunden. Der DSP 520 ist an eine Audioschnittstelle 510 angeschlossen. Außerdem ist die rechnerische Einrichtung mit einer Dreiportvermittlung 525 verbunden, um eine Verbindung mit einem LAN und einem PC (Personal Computer) zu erlauben. Außerdem ist die rechnerische Einrichtung mit vielen Peripheriegeräten verbunden, wie zum Beispiel mit nichtflüchtigem Flash-Speicher 540, einer Infrarot-(IR)-Schnittstelle 550, einem Tastenfeld- und Tastenschnittstelle 555, einer Steuerung 560 für eine Flüssigkristallanzeige (LCD) und einer PCMCIA-Schnittstelle (Personal Computer Memory Card International Association) 565 zur Ermöglichung einer standardisierten Expansion des Endapparats 100. Obwohl eine spezifische Architektur gezeigt ist, kann allgemeiner jeder beliebige Fernsprecher auf der Basis von Paketen (z.B. des Internetprotokolls (IP)) verwendet werden, vorausgesetzt, daß genug Verarbeitungs- und Speicherkapazität zur Implementierung der nachfolgend beschriebenen Verfahren verfügbar ist. Zum Beispiel könnte ein massenproduziertes IP-Telefon wie zum Beispiel die von Mitel, Nortel Networks, Avaya, Siemens, NEC, Pingtel oder 3COM hergestellten verwendet werden (z.B. Nortel i2004, Siemens optiPoint 410 oder Avaya 4610).
-
Mit Bezug auf 3 ist ein Funktionsblockschaltbild von in dem Telefonapparat 100-X von 2 wirkender Software gezeigt. Die Software wird in der Regel in dem RAM 535 von 2 gespeichert und auf der CPU 530 ausgeführt und kann von einem maschinenlesbaren Medium 32 aus geladen werden, bei dem es sich um einen magnetischen oder optischen Datenträger, ein Band, einen Chip oder eine andere Form von Primär- oder Sekundärspeicherung handeln könnte. Allgemeiner kann die Software als eine beliebige geeignete Kombination von maschinenausführbarem Code implementiert werden, der im Speicher zur Ausführung durch allgemeine oder spezielle Prozessoren, Firmware, Hardware, anwendungsspezifische integrierte Schaltungen (ASICs), am Einsatzort programmierbare Gate-Arrays (FPGAs), allgemeine oder spezielle Logik, im Speicher gespeichert wird.
-
Ein System-Dispatcher 120 stellt Kommunikation und Ablaufplanung zwischen verschiedenen Funktionselementen bereit, darunter ein Ruf- bzw. Verbindungsverarbeitungsmodul 70, ein Voice-Mail-Modul 80, ein Wählregelmodul 90, ein Peer-Entdeckungsmodul 110, ein Zeit- und Datensynchronisationsmodul 122, ein Display-Handler 130, ein Audio-Handler 14,0 und ein Eingangs-Handler 150.
-
Das Verbindungsverarbeitungsmodul 70 tritt mit einem Protokollstapel 60 in Wechselwirkung, um einen Rufaufzubauen und abzubauen und um Voice-Kanäle aufzubauen. Die Verbindungsverarbeitungsmodule 70 einer Anzahl von Apparaten dienen zusammen zum Abliefern von PBX-artigen Rufverarbeitungsfähigkeiten auf verteilte Weise ohne Notwendigkeit zentralisierter Geräte.
-
Das Voice-Mail-Modul 90 stellt Voice-Mail-Dienste bereit, wenn ein Ruf angekommen ist und ein Benutzer die Verbindung nicht entgegennehmen kann.
-
Das Wählregelmodul 90 enthält eine Menge von Wählregeln für das Verbindungsverarbeitungsmodul 70, die steuern, wie Rufe bzw. Verbindungen hergestellt werden, und wendet diese an.
-
Das Peer-Entdeckungsmodul 110 ermöglicht Peer-Entdeckung, wenn ein Endapparat 100-X anfänglich mit einem Netzwerk verbunden ist, und ist der Mittelpunkt des vorliegenden Abschnitts („Peer-Entdeckung“).
-
Das Synchronisationsmodul 122 gibt dem Endapparat 100-X Zeit- und Datensynchronisationsfähigkeiten zum Synchronisieren seines (nicht gezeigten) Zeitgebers mit dem Zeitgeber eines anderen Endapparats, der eine Referenz für Zeit ist, und zur Förderung der Einheitlichkeit seiner Daten in bezug.auf andere Kopien derselben Daten in anderen Endapparaten in dem Netzwerk 30. Das Modul 122 wird in dem folgenden Abschnitt („ZEIT- UND DATENSYNCHRONISATION“) beschrieben.
-
Der Display-Handler 130 ist für das Formatieren und Anzeigen von Informationen für einen Benutzer verantwortlich.
-
Der Audio-Handler 140 ist so ausgelegt, daß er Audio-Töne abspielt, wie zum Beispiel Ruf-, Belegt-, Anruf-Wartetöne, oder ist so ausgelegt, daß er sich bei Empfang einer Audionachricht von dem System-Dispatcher 120 mit einem Voice-Kanal aus dem Netzwerk zu dem Handapparat-Lautsprecher (oder Lauthörfernsprecher) verbindet.
-
Der Eingangs-Handler 150 ist für die Überwachung von Funktionen wie zum Beispiel Tastenbetätigung, Gabelbetätigung, Lautstärketasten, Freisprech- und Stummschaltetaste und zum Informieren des System-Dispatchers 120 über entsprechende zu unternehmende Aktionen verantwortlich.
-
4 zeigt eine Routing-Tabelle 200, die von jedem Endapparat 100-X in dem Fernsprechsystem 10 erzeugt und geführt wird. Die Routing-Tabelle repräsentiert eine Angabe der anderen Endapparate mit einer Präsenz in dem LAN 30 (einschließlich Endapparate, die möglicherweise inaktiv geworden sind). Wie beschrieben werden wird, erzeugt ein Endapparat 100-X die Routing-Tabelle 200 durch Speichern von Informationen aus mehreren „I_AM_HERE“-Nachrichten und möglicherweise anderen Arten von Nachrichten (z.B. „PEER_ASSERT“-Nachrichten), die von anderen Endapparaten in dem Netzwerk 30 empfangen werden. Bei der vorliegenden Ausführungsform enthält die Routing-Tabelle 200 außerdem einen Eintrag für den aktuellen Endapparat 100-X, so daß die Tabelle 200 eine Zusammenfassung aller mit dem Netzwerk 30 assoziierten Endapparate repräsentiert.
-
Wie in 4 gezeigt, speichert die Routing-Tabelle 200 verschiedene Arten von Informationen bezüglich jedes der Endapparate mit einer Präsenz in dem Netzwerk 30, einschließlich einer DN (Spalte 210), MAC-Adresse (Spalte 220), IP-Adresse (Spalte 230), Einrichtungstyp (Spalte 250) und eines Aktiv-Flag (Spalte 293).
-
Die DN (Spalte 210) ist eine Rufnummer, die einer PBX-Durchwahl analog ist. Wenn eine DN in Spalte 210 für einen Endapparat erscheint, wird angenommen, daß diese DN von diesem Endapparat beansprucht worden ist. Wenn ein Endapparat noch keine DN beansprucht hat (z.B. wenn er gerade eben seine Präsenz in dem Netzwerk 30 angesagt oder nur eine voraussichtliche DN gewählt hat, die noch nicht definitiv beansprucht wurde), ist Spalte 210 für diesen Endapparat leer. Obwohl die DNs in Spalte 210 in 4 in aufsteigender Reihenfolge gezeigt sind, versteht sich, daß die DNs in nicht aufsteigender oder nicht sequenzieller Reihenfolge vorliegen könnten, abhängig von der Reihenfolge, in der die Endapparate zu dem Netzwerk hinzugefügt werden, oder von anderen Faktoren, wie ersichtlich werden wird.
-
Die MAC-Adresse (Spalte 220) ist eine eindeutige Hardwareadresse oder Hardwarenummer, die als eindeutige Kennung für jeden Endapparat dient. Es versteht sich, daß MAC-Adressen bei der vorliegenden Ausführung zum Auflösen von Konflikten verwendet werden können, wenn verschiedene Endapparate dieselbe DN wählen. In Spalte 220 wird eine MAC-Adresse für jeden in der Routing-Tabelle 200 erscheinenden Endapparat spezifiziert. In der Routing-Tabelle 200 werden die Endapparate in aufsteigender MAC-Adressenreihenfolge sortiert. Eine alternative Ausführungsform könnte die Endapparate in absteigender Reihenfolge sortieren.
-
Die IP-Adresse (Spalte 240) repräsentiert zum Beispiel im Fall von VoIP-Endapparaten die IP-Adresse, die jedem Endapparat zugewiesen ist.
-
Der Einrichtungstyp (Spalte 250) ist eine Anzeige des Typs jeder Netzwerkeinrichtung in dem Netzwerk 30. Bei dem vorliegenden Beispiel ist jede Netzwerkeinrichtung ein (durch den Wert „SET“ in Spalte 250 identifizierter) Endapparat. Bei alternativen Ausführungsformen können Netzwerkeinrichtungen auch andere Arten von Einrichtungen sein, wie zum Beispiel Gateways oder Thin-Trunk-Schnittstellen. Die hier beschriebene Peer-Entdeckung kann ungeachtet des' Einrichtungstyps für Netzwerkeinrichtungen durchgeführt werden.
-
Das Aktiv-Flag (Spalte 293) ist eine Anzeige, ob ein Endapparat gerade aktiv ist oder nicht. Wie bereits beschrieben, senden Endapparate periodisch PEER_ASSERT-Nachrichten zu anderen Endapparaten, um die anderen Endapparate darüber zu informieren, daß sie immer noch aktiv sind, und um andere Informationen anzugeben. Wenn ein Endapparat 100-X für ein vorbestimmtes Zeitintervall (z.B. dreimal eine feste Dauer zwischen PEER_ASSERT-Nachrichten, wobei die feste Dauer zum Beispiel zwei Sekunden betragen kann) keine PEER_ASSERT-Nachrichten empfangen hat, wird der Status des Endapparats, für den keine PEER_ASSERT-Nachrichten empfangen wurden, in der Routing-Tabelle 200, die von dem Endapparat 100-X geführt wird, auf inaktiv gesetzt. Nachdem der inaktive Endapparat das Senden von PEER_ASSERT-Nachrichten wieder aufnimmt, wird der Status dieses Endapparats wieder auf aktiv zurückgesetzt.
-
5 zeigt einen Automaten, der von einem beispielhaften Endapparat 100-X während der Peer-Entdeckung gemäß einer Ausführungsform der Erfindung implementiert wird. Für die Zwecke von 5 wird angenommen, daß der Endapparat 100-X während des Prozesses des Herauffahrens und der Initialisierung entweder von einem DHCP-Server (Dynamic Host Configuration Protocol) in einem jeweiligen Netzwerk oder durch Verwendung eines Zeroconf (Standard der Internet Engineering Task Force, gerade in der rezensenten Warteschlange für Kommentaranforderungen (RFC) als „draftietf-zeroconf-ipv4-linklocal-17.txt“) auf Fachleuten bekannte Weise eine IP-Adresse erhalten hat.
-
Nachdem die IP-Adresse erhalten wurde, tritt der Endapparat 100-X in den anfänglichen „I_AM_HERE“-Zustand 800 ein, wodurch angezeigt wird, daß der Endapparat 100-X Präsenz in dem Netzwerk 30 hat. In diesem Zustand 800 „sagt“ sich der. Endapparat 100-X „an“, indem er die anderen Endapparate in dem Netzwerk 30 über seine Präsenz in dem Netzwerk 30 benachrichtigt, und fängt an, Benachrichtigungen von anderen Netzwerkeinrichtungen bezüglich ihrer Präsenz in dem Netzwerk 30 zu empfangen. Bei der vorliegenden Ausführungsform sagt sich der Endapparat 100-X mittels einer I_AM_HERE-Nachricht an, die die MAC-Adresse und die IP-Adresse des Endapparats 100-X enthält, die im Multicast-Verfahren zu anderen Endapparaten in dem Netzwerk gesendet wird. Wie Fachleuten wohlbekannt ist, bedeutet „Multicasting“ das Übertragen einer einzigen Nachricht zu mehreren Empfängern, wobei es sich um eine Teilmenge der Gesamtzahl potentieller Empfänger in einem Netzwerk handeln kann. Wenn dieselbe Nachricht zu einer Gruppe von Empfängern gesendet werden soll, kann Multicasting effizienter als Rundsendung sein (wobei alle Netzwerkeinrichtungen, auch die, für die die Nachricht nicht bestimmt ist, die Nachricht empfangen) oder als Unicasting (Punkt-zu-Punkt-Übertragungen zwischen zwei Netzwerkeinrichtungen, die einmal pro beabsichtigtem Empfänger wiederholt wird). Im Fall von VoIP-Endapparaten kann es sich bei dem Multicasting um IP-Multicasting handeln, so wie es in den RFC 1112 mit dem Titel „Host extensions for IP Multicasting“, die Fachleuten vertraut sein werden, beschrieben wird.
-
Der Endapparat sendet die I_AM_HERE-Multicast-Nachricht N mal, wobei N eine positive ganze Zahl größer oder gleich 1 ist. Bei Ausführungsformen, bei denen Endapparate Teil eines sehr großen Netzwerks bilden, ist es möglich, daß mehrere oder alle Endapparate gleichzeitig mit Strom versorgt werden und somit jeweilige Empfangspuffer in den Endapparaten in dem Netzwerk mehrere Nachrichten auf einmal empfangen können. Bei bestimmten Ausführungsformen der Erfindung ist N für jeden Endapparat gleich drei oder mehr, um sicherzustellen, daß die I_AM_HERE-Multicast-Nachrichten auch dann zu den anderen Endapparaten abgeliefert werden, wenn die Empfangspuffer übergelaufen sind. Die I_AM_HERE-Multicast-Nachrichten werden in zufälligen Intervallen gesendet (z.B. jeweils zwischen null und zwei Sekunden). Das Senden der N I_AM_HERE-Nachrichten in zufälligen Intervallen anstatt von festen Intervallen kann das Risiko reduzieren, dass die I_AM_HERE-Multicast-Nachricht von einem oder mehreren Endapparaten nicht empfangen wird. Bei Verwendung von festen Intervallen kann die Reihenfolge, in der I_AM_HERE-Nachrichten von verschiedenen Endapparaten während jedes der N Übertragungsintervalle an einem gegebenen Endapparat erscheinen würden, für jedes Intervall gleich sein, und die zuletzt ankommenden Nachrichten können beständig fallengelassen werden. Indem Nachrichten in zufälligen Intervallen gesendet werden, kann die Reihenfolge, in der Nachrichten während eines Intervalls ankommen, von der Reihenfolge verschieden sein, in der sie während eines anderen Intervalls ankommen. Der Endapparat bzw. die Endapparate, dessen bzw. deren Nachricht bzw. Nachrichten fallengelassen werden, kann bzw. können sich also von Intervall zu Intervall ändern und es kann eine größere Wahrscheinlichkeit bestehen, daß eine der N I_AM_HERE-Nachrichten von einem bestimmten Endapparat empfangen wird.
-
Es wird angemerkt, daß die obige Beschreibung ein Nachrichtenübermittlungsprotokoll voraussetzt, bei dem der Empfang individueller Nachrichten nicht ausdrücklich bestätigt wird, was im Hinblick einer möglichen Reduktion des Gesamtnachrichtenverkehrs im Vergleich zu einem Protokoll, bei dem eine ausdrückliche Bestätigung beim erfolgreichen Empfang einer Nachricht gesendet wird, bevorzugt werden kann.
-
Während des Anfangszustands 800, wartet der Endapparat 100-X außerdem auf Nachrichten von anderen Endapparaten in dem Netzwerk 30, die Informationen enthalten, die notwendig sind, um die Routing-Tabelle 200 aufzubauen oder zu aktualisieren (4).
-
Von dem Anfangszustand 800 aus geht der Automat beim Auftreten eines beliebigen von drei Ereignissen in einen DN-Sondierungszustand 900 über. Das erste Ereignis ist das Ablaufen eines vorbestimmten Zeitintervalls, das dafür bestimmt ist, dem Endapparat 100-X genug Zeit zu geben, um I-_AM_HERE-Nachrichten von anderen Endapparaten zu empfangen und seine Routing-Tabelle 200 aufzubauen. Das zweite Ereignis ist eine Bestimmung, daß der aktuelle Endapparat 100-X bereits eine DN in seinem nichtflüchtigen Speicher gespeichert hat. Das dritte Ereignis ist der Empfang einer INACTIVE_PEER_ASSERT-Nachricht mit einer MAC-Adresse, die mit der MAC-Adresse des aktuellen Endapparats 100-X übereinstimmt, wodurch eine Situation widergespiegelt wird, in der der aktuelle Endapparat 100-X zu dem Aktivzustand zurückkehrt und gerade eine in seinem Namen durch sein Surrogat gesendete INACTIVE_PEER_ASSERT-Nachricht empfangen hat.
-
Im DN-Sondierungszustand 900 wählt der Endapparat 100-X eine voraussichtliche DN und sendet M DN_PROBE-Multicast-Nachrichten zu den anderen Endapparaten, um zu bestimmen, ob etwaige der anderen Endapparate etwaige Einwände dagegen haben, daß der Apparat 100-X die voraussichtliche DN beansprucht, wobei M eine ganze Zahl größer oder gleich eins ist. Die Idee des möglichen Sendens von mehr als einer DN_PROBE- Nachricht besteht darin, die Wahrscheinlichkeit zu vergrößern, daß jeder der anderen Endapparate in dem Netzwerk mindestens eine Kopie der Nachricht empfängt. Bei der vorliegenden Ausführungsform enthält die DN_PROBE- Nachricht die MAC-Adresse und die IP-Adresse des sendenden Endapparats sowie die voraussichtliche DN, die von dem sendenden Endapparat gewählt wurde. Wenn keine Antwort auf die DN_PROBE-Nachrichten von den anderen Endapparaten kommt, wird angenommen, daß kein anderer Endapparat etwaige Einwände hat und der Endapparat 100-X tritt in einen DN-Setzzustand 700 ein, indem er die DN als seine eigene beansprucht. Dies geschieht gleichgültig, ob die voraussichtliche DN des aktuellen Endapparats eine frisch gewählte DN oder eine vom nichtflüchtigen Speicher abgerufene persistente DN ist.
-
Der DN-Setzzustand 700 repräsentiert den stationären Zustand, in dem der Endapparat 100-X eine DN erfolgreich beansprucht hat. In diesem Zustand sendet der Endapparat 100-X periodisch eine PEER_ASSERT-Multicast-Nachricht zu den anderen Endapparaten in dem Netzwerk, um einen periodischen Indikator bereitzustellen, daß der Endapparat aktiv und „gesund“ bleibt. Die PEER_ASSERT-Nachricht der vorliegenden Ausführungsform enthält eine IP-Adresse, eine MAC-Adresse und eine beanspruchte DN. Außerdem enthält die PEER_ASSERT-Nachricht den aktuellen Wert eines Zählers, mit dem der Ablauf der Zeit verfolgt wird (wie später ausführlicher in dem nachfolgenden Abschnitt „ZEIT- UND DATENSYNCHRONISATION“ beschrieben werden wird). Wenn sich zeigt, daß während des DN-Setzzustands 700 ein Konflikt zwischen der beanspruchten DN und einer von einem anderen Endapparat beanspruchten DN besteht, geht der Automat wieder in den DN-Sondierungszustand 900 über. Ein Beispiel für eine Situation, in der sich zeigen kann, daß ein Konflikt besteht, kann der Fall sein, in dem ein Netzwerk in zwei Subnetzwerke segmentiert wird (z.B. beim Ausfall eines virtuellen privaten Netzwerks (VPN), das normalerweise zwei Subnetzwerke an geographisch abgesetzten Standorten verbindet). Während das Netzwerk segmentiert ist, ist es möglich, daß Endapparate in separate Segmente gesteckt werden, wobei verschiedene Endapparate auf verschiedenen Subnetzwerken dieselbe DN beanspruchen. Wenn die Netzwerksegmente wieder verbunden werden, kann sich zeigen, daß ein Konflikt besteht. In diesem Fall ist eine Auflösung des Konflikts notwendig.
-
6 ist ein Flußdiagramm der Funktionsweise eines Endapparats 100-X im Anfangszustand 800 von 5. Zu Anfang wird bestimmt, ob eine DN für den aktuellen Endapparat 100-X persistiert hat (810). Bei der vorliegenden Ausführungsform hat eine DN persistiert, wenn der Endapparat 100-X zuvor den Initialisierungszustand 800, den DN-Sondierungszustand 900 und den DN-Setzzustand 700 durchlaufen hat, um so zuvor eine DN beansprucht zu haben. In diesem Fall ist die beanspruchte DN in nichtflüchtigem Speicher gespeichert worden, wie zum Beispiel in einem Flash-Speicher. Der Zweck des Speicherns der DN in nichtflüchtigem Speicher ist das Erhalten der DN, falls der Endapparat 100-X inaktiv wird, z.B. aufgrund eines versehentlichen Verlusts der Stromversorgung oder einer Trennung von dem Netzwerk 30, so daß die DN bei Rückkehr in einen Aktivzustand wieder beansprucht werden kann.
-
Wenn bei 810 bestimmt wird, daß eine DN für den Endapparat 100-X persistiert hat, geht der Automat zu dem DN-Sondierungszustand 900 über (905). Die Annahme besteht in diesem Fall darin, daß die anderen Endapparate in dem Netzwerk bereits über die Präsenz des Endapparats 100-X in dem Netzwerk benachrichtigt wurden, auch wenn die anderen Endapparate den Endapparat 100-X gerade als inaktiv betrachten.
-
Wenn dagegen in 810 bestimmt wird, daß der Endapparat keine persistente DN aufweist, zeigt dies an, daß sich der Endapparat 100-X bislang in einem unkonfigurierten (im Hinblick auf DN und Routing-Tabelle 200) „fabrikfrischen“ Zustand befindet. In diesem Fall wird ein Zähler zum Verfolgen, wieviele der N Instanzen der I_AM_HERE-Nachricht gesendet wurden, auf null initialisiert (812). Dann wird ein Zufallstimer zwischen 0 und 2 Sekunden und ein zweiter Timer für 2 Sekunden gesetzt (814). Das Intervall von 2 Sekunden für den zweiten Timer soll sicherstellen, daß genug Zeit zum Empfangen von Nachrichten von anderen Netzwerkeinrichtungen zum Zwecke des Aufbauens der Routing-Tabelle 200 (4) gegeben wird. Diese Dauer könnte bei anderen Ausführungsformen natürlich unterschiedlich sein. Der Zähler wird inkrementiert (816) und der Endapparat tritt in einen Zustand „Warte auf Nachrichten“ (820) ein, in dem er auf den Empfang einer Nachricht wartet.
-
Wenn der Zufallstimer während des Warte-auf-Nachricht-Zustands abläuft, wird eine I_AM_HERE-Multicast-Nachricht zu den anderen Endapparaten (822) gesendet und der Endapparat 100-X kehrt zu dem Warte-auf-Nachricht-Zustand zurück (820).
-
Etwaige von etwaigen anderen Endapparaten in dem Netzwerk bei 820 empfangene Nachrichten werden auf einen Typ geprüft (840) .
-
Wenn die empfangene Nachricht eine DN_CONFLICT-Nachricht ist, ignoriert der Endapparat die DN_CONFLICT-Nachricht (da diese Nachricht im Anfangszustand 800 nicht empfangen werden sollte) und der Automat kehrt zu dem Warte-auf-Nachricht-Zustand zurück (820).
-
Wenn die empfangene Nachricht eine von einem anderen Endapparat gesendete I_AM_HERE-Nachricht ist, werden Daten aus der empfangenen I_AM_HERE-Nachricht (z.B. MAC-Adresse und IP-Adresse) zu der Routing-Tabelle 200 hinzugefügt.
-
Wenn die empfangene Nachricht eine von einem anderen Endapparat gesendete PEER_ASSERT-Nachricht oder DN_PROBE-Nachricht ist, dann können Daten in der PEER_ASSERT- oder DN_PROBE-Nachricht zu der Routing-Tabelle 200 hinzugefügt werden (diese Nachrichten werden später ausführlicher beschrieben).
-
Wenn die empfangene Nachricht INACTIVE-PEER_ASSERT ist, können in der INACTIVE-PEER_ASSERT-Nachricht enthaltene Daten zur Aktualisierung der Routing-Tabelle 200 verwendet werden (870) (z.B. wenn der sendende Endapparat sich zuvor nicht in der Routing-Tabelle 200 befand, kann er hinzugefügt werden). Danach wird die MAC-Adresse in der INACTIVE-PEER_ASSERT-Nachricht mit der lokalen MAC-Adresse verglichen (d.h. der MAC-Adresse des aktuellen Endapparats 100-X) (872).
-
Wenn sich zeigt, daß sie gleich sind, repräsentiert dies eine Situation, in der der aktuelle Endapparat 100-X nach einer Periode der Inaktivität in einen Aktiv-Zustand zurückkehrt und gerade eine Nachricht von einem anderen Endapparat empfangen hat, der im Namen des Endapparats 100-X INACTIVE-PEER_ASSERT-Nachrichten sendet. In diesem Fall geht der Endapparat in den DN-Sondierungszustand über (905).
-
Wenn dagegen die MAC-Adresse in der empfangenen INACTIVE-PEER_ASSERT-Nachricht von der lokalen MAC-Adresse verschieden ist, kehrt der Endapparat zu dem Warte-auf-Nachricht-Zustand zurück und wartet auf weitere Nachrichten (820).
-
Wenn während des Warte-auf-Nachricht-Zustands der zweite Timer abläuft, wird bestimmt, ob der Zähler einen Maximalwert von N erreicht hat (880).
-
Wenn diese Bestimmung zeigt, daß der Wert des Zählers N nicht überstiegen hat, zeigt dies an, daß weniger als N I_AM_HERE-Nachrichten gesendet wurden. In diesem Fall werden der Zufallstimer und der zweite Timer zurückgesetzt (814) und der Wert des Zählers wird inkrementiert (816) bevor man in den Wartezustand zurückkehrt (820).
-
Wenn dagegen die Bestimmung von 880 zeigt, daß der Wert des Zählers gleich N ist, zeigt dies an, daß N I_AM_HERE-Nachrichten gesendet wurden. In diesem Fall geht der Automat des Endapparats 100-X in den DN-Sondierungszustand über (906).
-
7 ist ein Flußdiagramm der Funktionsweise eines Endapparats 100-X im DN-Sondierungszustand 900 von 5. Wie in 7 gezeigt, gibt es zwei Eintrittspunkte in den DN-Sondierungszustand 800. Der erste Eintrittspunkt kommt von dem Anfangszustand 900 bei 905 und repräsentiert eine Situation, in der der aktuelle Endapparat nach einer Periode der Inaktivität seine DN vom nichtflüchtigen Speicher abgerufen hat. Der zweite Eintrittspunkt kommt auch von dem Anfangszustand 800, aber bei 906, und repräsentiert eine Situation, in der der Endapparat 100-X nicht zuvor eine DN beansprucht hat. In dem letzteren Fall wählt der Endapparat bei 910 eine voraussichtliche DN (im ersteren Fall ist die voraussichtliche DN die abgerufene DN).
-
Um eine voraussichtliche DN zu wählen (910) bestimmt der Endapparat 100-X seine Ordinalposition in der (sortierten) Liste von Endapparaten der Routing-Tabelle 200 (4). Wenn zum Beispiel der Endapparat 100-X der erste in der Liste ist, kann die gewählte voraussichtliche DN 1 (seine Ordinalposition) plus einer Basis-DN von etwa 200 für eine voraussichtliche DN von 201 sein. Durch Basieren der Auswahl der voraussichtlichen DN auf der mit dem Endapparat assoziierten eindeutigen Ordinalposition wird eine Auswahl einer eindeutigen voraussichtlichen DN durch jeden Endapparat in dem Szenario gefördert, in dem sich mehrere fabrikfrische Endapparate gleichzeitig einem Netzwerk anschließen, das keine existierenden Endapparate mit zuvor zugewiesenen DNs aufweist.
-
Um vor potentiellen DN-Konflikten zu schützen, die auftreten können, wenn der Endapparat 100-X sich einem etablierten Netzwerk anschließt, konsultiert der Endapparat 100-X bei 910 außerdem seine Routing-Tabelle 200 (4), um zu bestimmen, ob die gewählte voraussichtliche DN bereits einem anderen Endapparat zugewiesen ist. Wenn die voraussichtliche DN bereits zugewiesen ist, kann die frisch verbundene DN eine andere voraussichtliche DN wählen, z.B. durch Addieren eines Offset von zum Beispiel 1 zu der größten in der Liste gefundenen DN.
-
Im Anschluß an 910 (oder von dem Eintrittspunkt 905 aus) wird ein Zähler, dessen Zweck darin besteht, die Anzahl der Instanzen der DN_PROBE-Nachricht, die gesendet wurden, zu verfolgen, initialisiert (912) und inkrementiert (914). Es wird eine Instanz der DN_PROBE-Nachricht gesendet, und ein Timer, mit dem das (feste oder zufällige) Zeitintervall zwischen DN_PROBE-Nachrichteninstanzen gezählt wird, wird gesetzt (916). Der Endapparat 100-X tritt dann in einen „Warte-auf-Ereignis“-Zustand (920) ein.
-
Wenn ein Endapparat dieselbe DN wie ein anderer, auch im Sondierungszustand befindlicher Endapparat wählt, betrachtet das Endgerät die MAC-Adresse beider in dem Netzwerk sondierten Einrichtungen (es wird ein Konflikt erhoben). Bei einer Ausführungsform behält, wenn ein Konflikt zwischen Endapparaten mit derselben DN besteht, der Endapparat mit der niedrigsten MAC-Adresse die DN und der andere Endapparat muß eine andere DN erhalten.
-
Es wird angemerkt, daß ein weiterer Eintrittspunkt (908) in den DN-Sondierungszustand 900 von dem DN-Setzzustand 700 aus existiert. Dieser Eintrittspunkt 908 repräsentiert eine Situation, in der es sich gezeigt hat, daß ein Konflikt zwischen der von dem Endapparat 100-X beanspruchten DN und der von einem anderen oder anderen der anderen Endapparate in dem Netzwerk beanspruchten öder gewünschten DN besteht. In einem solchen Fall beginnt die Operation wie oben beschrieben bei 910.
-
Wenn der Timer abläuft, bestimmt der Endapparat 100-X, von dem Warte-auf-Ereignis-Zustand (920) aus, ob die gewünschte Anzahl M von DN_PROBE-Nachrichten bereits gesendet wurde (980). Wenn bestimmt wird, daß bereits M DN_PROBE-Nachrichten gesendet wurden, bestimmt der Endapparat als nächstes, ob die voraussichtliche DN aus DN in dem nichtflüchtigen Speicher (982) abgerufen wurde. Wenn die Bestimmung 982 positiv ausfällt, geht der Automat über 707 in den DN-Setzzustand 700 über, andernfalls geht er über 705 in den DN-Setzzustand 700 über.
-
Wenn dagegen bei 980 bestimmt wird, daß weniger als M DN_PROBE-Nachrichten gesendet wurden, kehrt die Operation zu 914 zurück.
-
Wenn eine Nachricht von einem anderen Endapparat empfangen wird, hängt von dem Warte-auf-Ereignis-Zustand (920) aus die weitere Operation von dem Nachrichtentyp der empfangenen Nachricht ab, der bei 930 bestimmt wird.
-
Wenn der Nachrichtentyp eine I_AM_HERE-Nachricht anzeigt, fügt der Endapparat in der I_AM_HERE-Nachricht enthaltene Daten zu der Routing-Tabelle 200 hinzu, wenn die Daten nicht bereits präsent sind (932), bevor er in den Warte-auf-Ereignis-Zustand (920) zurückkehrt.
-
Wenn der Nachrichtentyp eine PEER_ASSERT-Nachricht anzeigt, wird die DN aus der PEER_ASSERT-Nachricht mit der lokalen DN (d.h. der gewählten voraussichtlichen DN) verglichen (934). Wenn die DNs übereinstimmen, repräsentiert dies eine Situation, in der ein anderer Endapparat die DN setzt, die der Endapparat 100-X versuchshalber ausgewählt hat. In diesem Fall kehrt die Operation zu 910 zurück. Wenn dagegen die DNs nicht übereinstimmen, wird die Routing-Tabelle 200 mit den in der PEER_ASSERT-Nachricht enthaltenen Daten aktualisiert, wenn ein Eintrag für das Endgerät, das die PEER_ASSERT-Nachricht gesendet hat, bereits existiert, und wenn der Eintrag nicht bereits exitiert, werden die in der PEER_ASSERT-Nachricht enthaltenen Daten zu der Routing-Tabelle 200 hinzugefügt, um den Eintrag zu erzeugen (932).
-
Wenn der Nachrichtentyp anzeigt, daß eine INACTIVE-PEER_ASSERT-Nachricht empfangen wurde, werden die in der INACTIVE-PEER_ASSERT-Nachricht enthaltenen Daten zu der Routing-Tabelle 200 hinzugefügt, wenn nicht bereits ein Eintrag existiert, oder die Routing-Tabelle 200 wird mit den Daten aktualisiert, wenn der Eintrag existiert (940). Dann wird die MAC-Adresse in der INACTIVE-PEER_ASSERT-Nachricht mit der MAC-Adresse des Endapparats 100-X verglichen (942).
-
Wenn die MAC-Adressen unterschiedlich sind, kehrt der Endapparat 100-X zu dem Warte-auf-Ereignis-Zustand (920) zurück.
-
Wenn dagegen die MAC-Adressen gleich sind, repräsentiert dies eine Situation, in der der aktuelle Endapparat 100-X nach einer Periode der Inaktivität in den Aktiv-Zustand zurückkehrt und gerade eine Nachricht von einem anderen Endapparat empfangen hat, der INACTIVE-PEER_ASSERT-Nachrichten im Namen des Endapparats 100-X sendet. In diesem Fall erfolgt ein weiterer Vergleich (944) zwischen der DN in der INACTIVE-PEER_ASSERT-Nachricht und der gerade sondierten DN (d.h. der gewählten voraussichtlichen DN).
-
Wenn die DNs nicht übereinstimmen, repräsentiert dies eine Situation, in der der Endapparat 100-X gerade eine DN sondiert, die von der in der INACTIVE-PEER_ASSERT-Nachricht spezifizierten DN unterschiedlich ist. Dazu kann es kommen, wenn die in dem nichtflüchtigen Speicher des Endapparats 100-X gespeicherte persistente DN gelöscht oder verfälscht wurde, während der Endapparat 100-X inaktiv war. In diesem Fall wird, um zu verhindern, daß der Endapparat 100-X eine andere DN als die zuvor beanspruchte sondiert, die gewählte voraussichtliche DN auf die DN aus der Nachricht (946) zurückgesetzt, und die Operation kehrt zu 912 zurück, so daß der Endapparat 100-X Schritte durchführt, um seine zuvor beanspruchte DN zu sondieren.
-
Wenn sich dagegen zeigt, daß die DNs übereinstimmen (bei 944), repräsentiert dies eine Situation, in der der Endapparat 100-X gerade dieselbe DN wie in der INACTIVE-PEER_ASSERT-Nachricht spezifiziert sondiert, wodurch die zuvor von dem Endapparat 100-X beanspruchte DN, bevor er als inaktiv bestimmt wurde, repräsentiert werden sollte. In diesem Fall kehrt die Operation zu dem Warte-auf-Ereignis-Zustand (920) zurück.
-
Wenn der Nachrichtentyp anzeigt, daß eine DN_CONFLICT-Nachricht empfangen wird, kann dies eine Situation repräsentieren, in der ein anderer Endapparat Einwände gegen die sondierte voraussichtliche DN hat. In diesem Fall erfolgt ein Vergleich (950) zwischen der DN in der DN_CONFLICT-Nachricht und der gerade sondierten DN.
-
Wenn die DNs nicht übereinstimmen, wird keine weitere Aktion in bezug auf die DN_CONFLICT-Nachricht unternommen und die Operation kehrt zu dem Warte-auf-Ereignis-Zustand (920) zurück. Falls die DN_CONFLICT-Nachricht gemulticastet wird, repräsentiert dies das Ignorieren einer für einen anderen Endapparat bestimmten DN_CONFLICT-Nachricht. Falls die DN_CONFLICT-Nachricht geunicastet wird, kann dies eine Situation repräsentieren, in der eine zweite von zwei DN_CONFLICT-Nachrichten von verschiedenen Endapparaten empfangen wurde und ignoriert wird, weil, da die erste DN_CONFLICT-Nachricht empfangen wurde, der aktuelle Endapparat damit begonnen hat, eine andere DN zu sondieren, als die, die er zuvor sondiert hat.
-
Wenn sich dagegen bei 950 zeigt, daß die DNs übereinstimmen, repräsentiert dies eine Situation, in der ein anderer Endapparat Einwände gegen die von dem aktuellen Endapparat 100-X voraussichtlich gewählte DN hat. In diesem Fall kehrt die Operation zu 910 zurück, so daß eine andere voraussichtliche DN gewählt und sondiert werden kann.
-
Wenn der Nachrichtentyp anzeigt, daß eine DN_PROBE-Nachricht empfangen wurde, sondiert ein anderer Endapparat eine gewählte voraussichtliche DN sehr ähnlich wie der aktuelle Endapparat 100-X seine gewählte voraussichtliche DN sondiert. Die voraussichtliche DN des anderen Endapparats (die in der ankommenden DN_PROBE-Nachricht angegeben wird) wird mit der lokal ausgewählten voraussichtlichen DN verglichen (960).
-
Wenn die DNs nicht übereinstimmen, wird keine weitere Aktion in bezug auf die ankommende DN_PROBE-Nachricht unternommen und die Operation kehrt zu dem Warte-auf-Ereignis-Zustand (920) zurück.
-
Wenn sich dagegen bei 960 zeigt, daß die DNs übereinstimmen, bedeutet dies, daß ein anderer Endapparat dieselbe DN wie der aktuelle Endapparat 100-X sondiert. In diesem Fall existiert ein Konflikt zwischen den voraussichtlichen DNs. Bei der vorliegenden Ausführungsform werden solche Konflikte auf der Basis der eindeutigen MAC-Adressen der jeweiligen Endapparate aufgelöst. Insbesondere wird es dem Endapparat mit der niedrigsten MAC-Adresse („niedrigste aktive MAC“ oder LAM) erlaubt, die DN zu beanspruchen, und der andere Endapparat wählt eine andere DN. Es versteht sich, daß auch andere gleichermaßen gültige Konfliktauflösungsverfahren angewandt werden können. Zum Beispiel kann es bei einer alternativen Ausführungsform der höchsten aktiven MAC erlaubt werden, die DN zu beanspruchen. Die Einzelheiten des gewählten Verfahrens sind nicht wichtig, solange das Verfahren einheitlich in jedem Endapparat angewandt wird.
-
Gemäß dem operativen Konfliktauflösungsverfahren wird also die MAC-Adresse in der DN_PROBE-Nachricht mit der lokalen MAC-Adresse verglichen (962). Wenn die MAC-Adresse in der DN_PROBE-Nachricht einen kleineren Wert als die lokale MAC-Adresse aufweist, wird es dem anderen Endapparat erlaubt, die DN zu beanspruchen, und der aktuelle Endapparat kehrt zu 910 zurück, um eine andere voraussichtliche DN zu wählen. Andernfalls ignoriert der Endapparat die DN_PROBE-Nachricht durch Rückkehr in den Warte-auf-Ereignis-Zustand (920) zurück, wodurch effektiv seine voraussichtliche DN aufrechterhalten wird.
-
8 ist ein Flußdiagramm der Funktionsweise des Endapparats 100-X in dem in 5 gezeigten DN-Setzzustand. Wie bereits beschrieben, kann der Endapparat von dem DN-Sondierungszustand 900 aus ohne persistente DN in diesen Zustand übergehen (705). In diesem Fall nimmt der Endapparat 100-X anfänglich die voraussichtliche DN an, die gerade in dem DN-Sondierungszustand 900 sondiert wurde (710). Danach wird eine gemulticastete PEER_ASSERT-Nachricht zu anderen Endapparaten in dem Netzwerk gesendet 712.
-
Alternativ dazu kann der Endapparat von dem DN-Sondierungszustand 900 aus mit einer persistenten DN (707) übergehen, wobei in diesem Fall die Operation bei 712 beginnt.
-
Nach 712 wird ein Timer für ein zufälliges Zeitintervall zwischen 0 Sekunden und 2 Sekunden gesetzt (714). Der Endapparat 100-X wartet dann auf den Empfang einer Nachricht oder auf das Ablaufen eines Timers in dem „Warte-auf-Nachricht“-Zustand (720).
-
Wenn der Timer abläuft, kehrt die Operation zu 712 zurück und es wird eine weitere Multicast-PEER_ASSERT-Nachricht gesendet.
-
Wenn eine DN_CONFLICT-Nachricht empfangen wird, verifiziert der Endapparat, ob die in der DN_CONFLICT-Nachricht enthaltene DN mit der lokalen DN in Konflikt steht (732).
-
Wenn bestimmt wird, daß die in der DN_CONFLICT-Nachricht enthaltene DN mit der lokal beanspruchten DN übereinstimmt, zeigt dies einen Konflik aufgrund duplizierter DNs in dem Netzwerk an. In diesem Fall wird eine weitere Bestimmung durchgeführt, ob der abgesetzte konfliktierende Endapparat aktiv ist (733).
-
Wenn sich zeigt, daß der abgesetzte Apparat aktiv ist und wenn das operative Konfliktauflösungsverfahren (d.h. niedrigste aktive MAC-Adresse behält recht) anzeigt, daß der aktuelle Endapparat seine beanspruchte DN behalten sollte (734), kehrt die Operation zu 712 zurück, wodurch bewirkt wird, daß der Endapparat sofort eine weitere PEER_ASSERT-Nachricht sendet.
-
Wenn dagegen in 734 bestimmt wird, daß der aktuelle Endapparat seine beanspruchte DN nicht behalten sollte, wird die Routing-Tabelle 200 (4) mit den Daten in der DN_CONFLICT-Nachricht aktualisiert (735). Genauer gesagt kann der Endapparat mit der konfliktierenden DN zusammen mit seiner DN zu der Routing-Tabelle 200 hinzugefügt werden. Der Zweck davon ist, daß wenn der aktuelle Endapparat 100-X nachfolgend eine voraussichtliche DN auswählt, die zufällig mit der konfliktierenden DN übereinstimmt, eine Prüfung der voraussichtlichen DN im Vergleich zu den DNs in der Routing-Tabelle 200 den Konflikt enthüllt.
-
Danach werden jegliche Konfliktwarnungen deaktiviert (736) und der Endapparat 100-X kehrt zu dem DN-Sondierungszustand 900 zurück (908). Eine Konfliktwarnung ist eine Benachrichtigung über einen DN-Konflikt, die bei bestimmten Ausführungsformen zu einem Systemadministrator gesendet werden kann. Konfliktwarnungen werden gewöhnlich nur in solchen Fällen erhoben, in denen ein Systemadministrator manuell eine DN auf die beanspruchte DN eines existierenden Endapparats zurückgesetzt hat.
-
Wenn in 733 bestimmt wird, daß die abgesetzte Endeinrichtung inaktiv ist, werden etwaige präsente DN-Konfliktwarnungen deaktiviert (736) und der Endapparat geht in den DN-Sondierungszustand 900 über (908).
-
Nochmals mit Bezug auf den Warte-auf-Nachricht-Zustand 720 wird, wenn eine PEER_ASSERT-Nachricht empfangen wird und wenn die DN in der PEER_ASSERT-Nachricht gleich der DN eines oder mehrerer inaktiver Endapparate in der Routing-Tabelle 200 ist, dadurch eine Situation repräsentiert, in der möglicherweise von dem aktuellen Endapparat 100-X gefordert wird, im Namen eines inaktiven Endapparats eine INACTIVE_PEER_ASSERT-Nachricht zu senden. Zu dieser Situation kann es zum Beispiel kommen, wenn ein Netzwerk in Subnetzwerke segmentiert wird, so daß Endapparate in einem Subnetzwerk Endapparate in einem, anderen Subnetzwerk als inaktiv betrachten. Ein Endapparat in einem Subnetzwerk kann PEER_ASSERT-Nachrichten senden, während sein Surrogat, das sich in dem anderen Subnetzwerk befindet, in seinem Namen INACTIVE-PEER_ASSERT-Nachrichten sendet. Nach Wiederverbindung der Subnetzwerke könnte das Surrogat ein PEER_ASSERT von dem Endapparat empfangen, von dem es noch glaubt, daß er inaktiv ist.
-
Die Bestimmung, ob der aktuelle Endapparat 100-X eine INACTIVE_PEER_ASSERT-Nachricht im Namen eines inaktiven Endapparats senden soll, basierte auf einem operativen Verfahren zur Bestimmung, welcher Endapparat für das Senden von INACTIVE_PEER_ASSERT-Nachrichten im Namen eines inaktiven Peers verantwortlich ist (oder welche Endapparate verantwortlich sind). Bei der vorliegenden Ausführungsform weist das operative Verfahren diese Verantwortung einem und nur einem Endapparat pro gegebenem inaktiven Peer zu (wobei möglicherweise derselbe Endapparat für mehrere inaktive Peers verantwortlich ist). Die Idee, nur einen Endapparat für das Senden von INACTIVE_PEER_ASSERT-Nachrichten für einen beliebigen gegebenen inaktiven Peer verantwortlich zu machen, ist, eine unnötige Übertragung duplizierter INACTIVE_PEER_ASSERT-Nachrichten zu vermeiden. Bei solchen Verfahren ist es wünschenswert sicherzustellen, daß jeder Endapparat für eine Dauer, die länger als die Zeit ist, die erforderlich ist, um einen inaktiven Endapparat zu erkennen, in seinem Anfangszustand 800 (5) bleibt.
-
Das operative Verfahren ist in der nachfolgenden Tabelle dargestellt:
Tabelle 1: Für inaktive Peer-Setzungen verantwortliche Peers.
Fern.-App. | Zustand | Sendet Inaktiv- Setzungen? | Im Namen von? |
A | Inaktiv | - | - |
B | Aktiv | Ja | B |
C | Inaktiv | - | - |
D | Aktiv | Nein | - |
E | Aktiv | Ja | F, G |
F | Inaktiv | - | - |
G | Inaktiv | - | - |
H | Aktiv | Ja | A |
-
Die ersten beiden Spalten von Tabelle 1 repräsentieren eine Teilmenge der in der Routing-Tabelle 200 von 4 geführten Informationen, die für die Bestimmung von „Surrogat“-Peers (d.h. Peers, die für das Senden von INACTIVE_PEER_ASSERT-Nachrichten im Namen anderer inaktiver Peers verantwortlich sind) relevant ist. Jede Zeile in Tabelle 1 repräsentiert eine Netzwerkeinrichtung, wie in der ersten Spalte identifiziert, in einem hypothetischen Netzwerk. Es versteht sich, daß die Netzwerkeinrichtungen von Tabelle 1 nach einer bestimmten eindeutigen Kennung, wie zum Beispiel MAC-Adressen, wie in der Routing-Tabelle 200, sortiert sind. Der Aktiv- oder Inaktiv-Status jeder Netzwerkeinrichtung wird in der zweiten Spalte von Tabelle 1 angegeben.
-
Bei dem operativen Verfahren wirkt eine aktive Netzwerkeinrichtung als Surrogat für jede inaktive Netzwerkeinrichtung, die ihr in Tabelle 1 folgt (d.h. sich in einer niedrigeren Zeile befindet), wobei keine aktive Netzwerkeinrichtung in der Liste zwischen dem Surrogat und der inaktiven Netzwerkeinrichtung dazwischen kommt. Wie zum Beispiel in Tabelle 1 gezeigt, wirkt die Netzwerkeinrichtung E als Surrogat für die Netzwerkeinrichtungen F und G, da diese Einrichtungen beide inaktiv sind und der Einrichtung E folgen, wobei keine andere aktive Einrichtung zwischen ihnen und Einrichtung E kommt.
-
Falls eine inaktive Netzwerkeinrichtung der ersten aktiven Netzwerkeinrichtung in der sortierten Liste zuvorkommt (z.B. wie im Fall für die Netzwerkeinrichtung A), dann wird die letzte aktive Netzwerkeinrichtung in der sortierten Liste (Netzwerkeinrichtung A) als ihr Surrogat wirken.
-
Es versteht sich, daß bei alternativen Ausführungsformen anderen Verfahren zum Zuweisen von Surrogaten verwendet werden können. Zum Beispiel kann ein alternatives Verfahren eine aktive Netzwerkeinrichtung als Surrogat für inaktive Einrichtungen zuweisen, die ihr in der Routing-Tabelle vorausgehen, statt ihr nachzufolgen. Bei einem anderen Verfahren kann eine Netzwerkeinrichtung als Surrogat für alle inaktiven Einrichtungen neben ihr in der Tabelle wirken, wobei der Begriff „neben“ hier mehrere zusammenhängende inaktive Netzwerkeinrichtungen entweder unmittelbar über oder unmittelbar unter einem Surrogat in einer Routing-Tabelle bedeutet. Bei dem letzteren Verfahren besitzt jede inaktive Netzwerkeinrichtung zwei Surrogate. Dieser Redundanzgrad kann bei bestimmten Ausführungsformen erwünscht sein.
-
Wieder mit Bezug auf 8 verifiziert der Endapparat 100-X im Anschluß an 738, ob eine in der empfangenen PEER_ASSERT-Nachricht enthaltene DN mit der lokal beanspruchten DN übereinstimmt (740). Wenn sie übereinstimmen, schreitet die Operation wie zuvor beschrieben mit 734 voran. Wenn die DNs nicht übereinstimmen, fügt der Endapparat 100-X entweder die Daten in der PEER_ASSERT-Nachricht zu der Routing-Tabelle hinzu oder verwendet sie zum Aktualisieren des relevanten Eintrags in der Tabelle (741).
-
Als nächstes wird bestimmt, ob die in der PEER_ASSERT-Nachricht enthaltene DN einer DN eines inaktiven Eintrags entspricht, für den der aktuelle Endapparat 100-X als Surrogat wirkt (742). Wenn die Bestimmung positiv ausfällt, wird eine DN_CONFLICT-Nachricht als eine Multicast-Nachricht gesendet, die einen Konflikt von DNs anzeigt (746), bevor zu 720 zurückgekehrt wird, um auf eine weitere Nachricht zu warten. Wenn die Bestimmung von 742 negativ ausfällt, kehrt der Endapparat 100-X sofort zu 720 zurück, um auf eine weitere Nachricht zu warten.
-
Wenn während des Warte-auf-Nachricht-Zustands 720 eine I-_AM_HERE-Nachricht empfangen wird, fügt der Endapparat 100-X den Eintrag in der Routing-Tabelle 200 (4), der dem Endapparat entspricht, von dem die I_AM_HERE-Nachricht stammt, hinzu oder aktualisiert ihn mit Daten aus der I-_AM_HERE-Nachricht (750) und schreitet dann zu 762 voran (unten beschrieben).
-
Wenn bei 720 eine DN_PROBE-Nachricht empfangen wird, vergleicht der Eridapparat die DN in der DN_PROBE-Nachricht mit der lokal beanspruchten DN (760). Wenn sie übereinstimmen, repräsentiert dies eine Situation, in der ein anderer Endapparat die beanspruchte DN des aktuellen Endapparats 100-X als seine voraussichtliche DN gewählt hat. In diesem Fall kehrt die Operation zu 712 zurück, um sofort eine Multicast-PEER_ASSERT-Nachricht zu senden, um effektiv den anderen Endapparat darüber zu benachrichtigen, daß die DN, die er versuchsweise gewählt hat, bereits beansprucht ist.
-
Wenn der Vergleich von 760 zeigt, daß die DNs nicht übereinstimmen, konsultiert der Endapparat 100-X die Routing-Tabelle 200, um zu bestimmen, ob die in der DN_PROBE-Nachricht enthaltene DN einer DN eines inaktiven Endapparats entspricht (762). Wenn die in der DN_PROBE-Nachricht enthaltene DN einem inaktiven Endapparat entspricht, wird eine INACTIVE_ASSERT_MESSAGE-Nachricht zu einem Endapparat gesendet, aus dem die DN_PROBE-Nachricht stammte, vorausgesetzt, daß der aktuelle Endapparat als das Surrogat für diesen inaktiven Endapparat angesehen wird (unter Verwendung des oben beschriebenen operativen Verfahrens). Danach kehrt die Operation zu 720 zurück, um auf eine weitere Nachricht zu warten. Wenn die,in 762 durchgeführte Konsultierung anzeigt, daß der Einleiter der DN_PROBE-Nachricht aktiv ist, kehrt der Endapparat 100-X direkt zu 720 zurück, um auf eine weitere Nachricht zu warten.
-
Wenn also, als Zusammenfassung der Peer-Entdeckungsoperation, mehrere Endapparate, die den Automaten von 5 implementieren, mit einem Netzwerk verbunden sind und an der oben beschriebenen Operation teilnehmen, um an dem stationären Zustand (d.h. dem DN-Setzzustand 700) anzukommen, wird jeder automatisch eine DN gewählt haben, wobei etwaige DN-Konflikte zwischen Endapparaten automatisch ohne Notwendigkeit eines menschlichen Eingriffs aufgelöst wurden. Darüber hinaus wird jeder Endapparat automatisch eine lokale Routing-Tabelle 200 erzeugt haben, die die DN jedes anderen Endapparats in dem Netzwerk gepaart mit anderen Informationen (z.B. IP-Adressen), die ausreichen, um es dem Endapparat zu erlauben, einen beliebigen anderen Endapparat anzurufen, nachdem die DN dieses Endapparats gewählt wurde, enthält. Auch wenn der Endapparat inaktiv wird, wird darüber hinaus seine DN, wenn er wieder mit dem Netzwerk verbunden wird, persistieren.
-
ZEIT- UND DATENSYNCHRONISATION
-
Bei der vorliegenden Ausführungsform werden Zeitsynchronisation und Datensynchronisation durch das Zeit- und Datensynchronisationsmodul 122 (3) durchgeführt, das in 9 ausführlicher dargestellt ist.
-
Wie dargestellt, enthält das Zeit- und Datensynchronisationsmodul 122 Zeitsynchronisationskomponenten, einschließlich eines Zeitsynchronisationsautomaten 986 und eines Zeitgebers 988, der lokale Zeit (auch als ein „lokaler Zeitgeber 988“ bezeichnet) anzeigt. Diese Komponenten werden zum Zwecke der Zeitsynchronisation zwischen Endapparaten verwendet. Der Zeitsynchronisations-Automat 986 regelt die Operation für das periodische Synchronisieren des lokalen Zeitgebers 988 des aktuellen Endapparats mit lokalen Zeitgebern 988 anderer Endapparate. Zwischen Zeitsynchronisationen rückt der Zeitgeber 988 durch Empfangen regelmäßiger Anzeigen des Ablaufens eines vorbestimmten Zeitintervalls (das zweckmäßigerweise als „Ticks“ bezeichnet wird) voran, wobei es sich zum Beispiel um Intervalle von einer Sekunde handeln kann (oder um andere Dauern abhängig von den Bedürfnissen der spezifischen Anwendung). Ticks werden von einem Timer 990 möglicherweise in Form von Interrupts für Softwareentitäten bereitgestellt.
-
Das Modul 122 enthält außerdem Datensynchronisationskomponenten, die ein Datensynchronisationssteuermodul 992 und einen Zähler 994 für die lokale Datensequenznummer (DSN) umfassen. Das Datensynchronisationsmodul 992 regelt die Operation für das Synchronisieren lokaler Kopien von Daten mit Kopien von Daten in abgesetzten Endapparaten. Bei der vorliegenden Ausführungsform ist der lokale DSN-Zähler 994 in jedem Endapparat ein monoton zunehmender Zähler. Wie Fachleuten bekannt ist, ist eine „monoton zunehmende“ Funktion von einem halbgeordneten Definitionsbereich in einen halbgeordneten Wertebereich dergestalt, daß x > y f(x) ≥ f(y) zur Folge hat. Der Zähler 994 repräsentiert das Ablaufen der Zeit, aber nicht unbedingt der aktuellen Zeit. Die DSN der vorliegenden Ausführungsform ist ein monoton zunehmender Wert, der von dem Zähler 994 geführt wird. Höhere DSN-Werte repräsentieren spätere Zeitpunkte als kleinere DSN-Werte. Der Wert der DSN wird bei jedem „Tick“ von dem Timer 990 (9) inkrementiert und kann gelegentlich nichtlinear vorgerückt werden (d.h. um mehr als einen „Tick“), je nachdem wie es notwendig ist, um die lokale DSN mit der DSN an abgesetzten Endapparaten zu synchronisieren. Wie beschrieben werden wird, benutzt das Modul 992 den Wert des lokalen DSN-Zählers 994, um zu bestimmen, ob eine lokale Kopie von Daten oder eine abgesetzte Kopie von Daten wahrscheinlich neuer und deshalb vorzuziehen ist. Bei der vorliegenden Ausführungsform werden Daten in jedem Endapparat in einer Datenbank 996 gespeichert, die lokal zu dem Endapparat gehört.
-
Als veranschaulichendes Beispiel wird die Operation für Zeit- und Datensynchronisation im Kontext der Peer-Entdeckungsoperation beschrieben, so wie sie durch das Peer-Entdeckungsmodul 110 (3, oben beschrieben) bereitgestellt wird. Es versteht sich jedoch, daß Zeit- und Datensynchronisation zwischen Netzwerkeinrichtungen außerhalb des Kontext der Peer-Entdeckung durchgeführt werden kann.
-
Beginnend mit der Zeitsynchronisation ist das Ziel der Zeitsynchronisation die Bereitstellung eines Mechanismus, wodurch mehrere Netzwerkeinrichtungen eine einheitliche Sicht der Zeit haben, die als „Netzwerkzeit“ bezeichnet wird.
-
10 zeigt den Automaten 986 von 9, der die Zeitsynchronisation zwischen Endapparaten regelt. 10 wird von der Perspektive eines beispielhaften Endapparats 100-1, der den Automaten 986 ausführt, aus beschrieben. Es versteht sich, daß auch die anderen Endapparate 100-2, 100-3 und 100-4 denselben Automaten 986 auf ähnliche Weise ausführen.
-
Zu Anfang (z.B. beim Herauffahren des Endapparats 100-1) tritt der Endapparat 100-1 in einen Initialisierungszustand 1700 ein. Im Initialisierungszustand 1700 initialisiert der Endapparat 100-1 seinen lokalen Zeitgeber 988 (9) auf eine Weise, die nachfolgend in Verbindung mit 11 beschrieben werden wird. Die Initialisierung des lokalen Zeitgebers 988 ermöglicht es dem Endapparat 100-1, den Prozeß der Peer-Entdeckung zu beginnen, bevor er eine genaue Kenntnis der „Netzwerkzeit“ besitzt.
-
Wenn die lokale Zeitinitialisierung abgeschlossen ist, geht der Endapparat 100-1 in einen Freilaufzustand 1800 über. Im Freilaufzustand wird der Zeitgeber 988 in dem Endapparat 100-1 gemäß aus dem Timer 990 (9) empfangenen „Ticks“ vorgerückt. Da noch keine Zeitsynchronisation mit anderen Endapparaten durchgeführt worden ist, versteht sich, daß die lokale Zeit in dem Endapparat 100-1 von der in anderen Endapparaten geführten lokalen Zeit verschieden sein kann. Der Freilaufzustand 1800 kann mit dem DN-Sondierungszustand 900 von 5 zusammenfallen.
-
Nach dem Empfang einer PEER_ASSERT-Nachricht geht der Endapparat 100-1 in, einen Aktiv-Zustand 1900 über. Zu Anfang synchronisiert der Endapparat 100-1 seinen lokalen Zeitgeber 988 mit einem in der empfangenen PEER_ASSERT-Nachricht erscheinenden Zeitstempel. Es versteht sich, daß diese Synchronisation durchgeführt wird, gleichgültig, ob die Netzwerkeinrichtung, die die PEER_ASSERT-Nachricht gesendet hat, als Referenz für Zeit angesehen wurde oder nicht. Statt dessen wird der Zeitgeber beim Empfang einer PEER_ASSERT-Nachricht von irgendeinem Endapparat zurückgesetzt, auf der Basis eines impliziten Verständnisses, daß irgendein Endapparat (oder eine andere Netzwerkeinrichtung), der eine PEER_ASSERT-Nachricht gesendet hat, in seinen DN-Setzzustand 700 (5) eingetreten ist. Im DN-Setzzustand 700 wurde eine Netzwerkeinrichtung entweder bereits mit „Netzwerkzeit“ synchronisiert oder ist die einzige aktive Netzwerkeinrichtung in dem Netzwerk und repräsentiert somit de facto die Netzwerkzeit.
-
Im Aktiv-Zustand 1900 synchronisiert der Endapparat 100-1 periodisch seinen lokalen Zeitgeber 988 mit den in empfangenen PEER_ASSERT-Nachrichten empfangenen Zeitstempeln neu. Um jedoch ein übermäßiges Verarbeitungsoverhead zu vermeiden, das resultieren kann, wenn viele Endapparate aktiv PEER_ASSERT-Nachrichten in einem Netzwerk senden, wird die Neusynchronisation nicht mit jeder empfangenen PEER_ASSERT-Nachricht durchgeführt. Statt dessen wird die Synchronisation nur unter Verwendung von PEER_ASSERT-Nachrichten durchgeführt, die von einer Netzwerkeinrichtung (z.B. einem anderen Endapparat oder einer bestimmten anderen Netzwerkeinrichtung) empfangen wird, die als Referenz für Zeit angesehen wurde (auch als „Master-Referenz“ bezeichnet).
-
Die Wahl einer Master-Referenz für die Netzwerkzeit basiert nicht auf einer Fähigkeit der Master-Netzwerkeinrichtung, die Zeit genauer als jede andere Netzwerkeinrichtung führen zu können. Statt dessen ist die Wahl einer Master-Referenz für die Netzwerkzeit einfach eine eindeutige Identifikation einer Netzwerkeinrichtung als die Netzwerkeinrichtung, mit der Zeitsynchronisation durchgeführt werden soll. Jede Netzwerkeinrichtung sollte gleichermaßen dazu fähig sein, zuverlässig die Master-Referenz zu identifizieren. Das Ziel des Zeitsynchronisationsverfahrens besteht darin, sicherzustellen, daß die lokale Zeit aller Netzwerkeinrichtungen synchronisiert ist, nicht unbedingt damit die synchronisierte lokale Zeit die tatsächliche Zeit genau wiedergibt. Die Sicherstellung, daß die gemeinsame „Netzwerkzeit“ die tatsächliche Zeit wiedergibt (die z.B. durch einen Zeitgeber des Typs Stratum 3 geführt wird, wie zum Beispiel bei einem öffentlichen Fernsprechwählnetz (PSTN)) kann separat gewährleistet werden, z.B. durch einen. Zeitjustierbefehl oder eine Nachricht, die periodisch durch eine Netzwerkeinrichtung mit einer genauen Repräsentation der Zeit (wie zum Beispiel eine TTI 40 (1)) ausgegeben oder gesendet, wird, die Anrufer-ID-Informationen von einer ankommenden Verbindung einschließlich Datum-/Zeitinformationen mit einer Genauigkeit von 1 Sekunde empfangen hat, die zum Beispiel von einer PSTN-Vermittlung geführt werden können).
-
Bei der vorliegenden Ausführungsform wird die Master-Netzwerkeinrichtung auf der Basis ihrer MAC-Adresse ausgewählt. Genauer gesagt wird die Netzwerkeinrichtung mit der niedrigsten aktiven MAC-Adresse („LAM“, Lowest Active MAC) als der Master designiert. In alternativen Ausführungsformen können andere Techniken zum Designieren eines Master verwendet werden. Zum Beispiel kann die Einrichtung mit der höchsten aktiven MAC-Adresse gewählt werden. Alternativ dazu kann man eine andere Netzwerkeinrichtungskennung, wie zum Beispiel eine Seriennummer der Netzwerkeinrichtung als die eindeutige Kennung verwenden. Der genaue Ansatz zur eindeutigen Identifizierung der Master-Referenz ist nicht entscheidend, solange jede Netzwerkeinrichtung einheitlich dieselbe Netzwerkeinrichtung als die Master-Referenz auswählt.
-
Wenn der Endapparat 100-1 im Aktiv-Zustand 1900 sich selbst als inaktiv auf „transitive Weise“ ansieht, d.h. inaktiv aber mit der Fähigkeit, beim Auftreten eines Ereignisses automatisch wieder aktiv zu werden, geht der Endapparat 100-1 von dem Aktiv-Zustand 1900 aus wieder in den Freilaufzustand 1800 über. Dazu kann es zum Beispiel kommen, wenn der Endapparat 100-1 einen DN-Konflikt zwischen sich selbst und einem anderen Endapparat erkennt. Die Idee hinter dem Übergang in den Freilaufzustand 1800 in dieser Situation besteht darin, daß, da der Endapparat 100-1 nicht mehr unbedingt zuverlässig mit einem Netzwerk verbunden ist, keine Zeitsynchronisation durchgeführt werden sollte, bis eine zuverlässige Verbindung wiederhergestellt ist.
-
11 zeigt die Funktionsweise des Endapparats 100-1 während des Initialisierungszustands 1700 von 10. Zu Anfang wird bestimmt, ob ein Wert für den lokalen Zeitgeber persistiert hat, z.B. ob eine Batterie den lokalen Zeitgeber 988 am Laufen gehalten hat (1701). Eine Batterie-Sicherung kann es dem lokalen Zeitgeber 988 erlauben zu laufen, auch wenn der Endapparat 100-1 die Stromversorgung verliert.
-
Wenn die Bestimmung von 1701 positiv ausfällt, wird ein persistierter Wert für die lokale Zeitgeberquelle gelesen (1702). Das „Lesen“ des lokalen Zeitgebers in 1702 kann einfach umfassen, sich auf den aktuellen Wert des lokalen Zeitgebers zu verlassen, unter der Voraussetzung, daß der Zeitgeber weitergelaufen ist, auch wenn der Endapparat 100-1 ohne Stromversorgung gewesen ist.
-
Wenn dagegen die Bestimmung von 1701 negativ ausfällt, wird der lokale Zeitgeber auf einen geeigneten Initialisierungswert initialisiert, wie zum Beispiel auf ein „Nulldatum“ (1703). Das Nulldatum kann dasselbe sein, das das MicroSoft® Disk Operating System („MSDOS“) verwendet, d.h. 1.1.1980, oder kann ein anderer Wert sein.
-
Gleichgültig, ob der lokale Zeitgeber persistiert hat oder auf einen geeigneten Initialisierungswert initialisiert worden ist, wird es ihm ermöglicht, frei zu laufen (1704), und der Endapparat 100-1 geht in den Freilaufzustand 1800 (10) über.
-
12 zeigt die Funktionsweise des Endapparats 100-1 im Freilaufzustand 1800 von 10. Ein Endapparat kann auf eine von zwei Weisen in den Freilaufzustand 1800 eintreten:
- 1. Wie oben beschrieben von dem Initialisierungszustand 1700 aus; oder
- 2. von dem Aktiv-Zustand 1900 aus, wenn bestimmt wird, daß der Endapparat inaktiv geworden ist (wird später beschrieben).
-
Bei der vorliegenden Ausführungsform fällt der Freilaufzustand 1800 mit dem DN-Sondierungszustand 900 des Peer-Entdeckungs-Automaten (5) zusammen. Während der Endapparat dabei ist, eine DN zu sondieren, wartet er also auf eine Nachricht, die ein Anzeige der „Netzwerkzeit“ enthält, im Vergleich zu der die Zeitsynchronisation durchgeführt werden kann. Es sollte jedoch auch beachtet werden, daß in bestimmten Fällen ein Endapparat auch nachdem er in den DN-Setzzustand 700 des Peer-Entdeckungs-Automaten vorgerückt ist, in dem Freilaufzustand 1800 bleiben kann. Dazu kann es zum Beispiel kommen, falls der Endapparat die erste in einem Netzwerk zu aktivierende Netzwerkeinrichtung ist, so daß keine andere Netzwerkeinrichtung mit der Fähigkeit zum Senden von PEER_ASSERT-Nachrichten existiert.
-
Mit Bezug auf 12 wartet der Endapparat 100-1 anfänglich auf eine PEER_ASSERT-Nachricht von einem beliebigen anderen Endapparat (1801). Während des Wartens in 1801 läuft der lokale Zeitgeber 988 weiter frei.
-
Nach dem Empfang einer PEER_ASSERT-Nachricht von einem beliebigen anderen Endapparat synchronisiert die Netzwerkeinrichtung ihren lokalen Zeitgeber 988 im Vergleich zu dem Zeitstempel aus der PEER_ASSERT-Nachricht (1802). Die Verwendung des PEER_ASSERT-Nachrichten-Zeitstempels basiert wiederum auf einem impliziten Verständnis, daß eine beliebige Netzwerkeinrichtung, die eine PEER_ASSERT-Nachricht sendet, bereits mit der „Netzwerkzeit“ synchronisiert wurde oder die „Netzwerkzeit“ de facto repräsentiert.
-
Der Klarheit halber, wenn zwei Endapparate gleichzeitig in den „Warte-auf-PEER_ASSERT-Nachricht“-Zustand 1801 eintreten, besteht kein Stillstand zwischen den Endapparaten, da jeder Endapparat unabhängig von dem Warten in dem Zustand 1801 in den DN-Setzzustand 700 (des Peer-Entdeckungs-Automaten von 5) vorrücken kann, wobei in diesem Fall der Eridapparat damit beginnt, PEER_ASSERT-Nachrichten zu dem anderen Endapparat zu senden.
-
Da der lokale Zeitgeber 988 des Endapparats 100-1 nun die „Netzwerkzeit“ wiedergibt, geht der Endapparat in den Aktiv-Zustand 1900 (1803) über.
-
13 zeigt die Funktionsweise des Endapparats 100-1 im Aktiv-Zustand 1900 von 10. Im Aktiv-Zustand synchronisiert die Netzwerkeinrichtung periodisch ihren lokalen Zeitgeber mit Zeitstempeln, die in PEER_ASSERT-Nachrichten enthalten sind, die von einer Netzwerkeinrichtung empfangen werden, die als eine „Master“-Referenz für Netzwerkzeit angesehen wird, wobei es sich bei der vorliegenden Ausführungsform um die Netzwerkeinrichtung mit der niedrigsten MAC-Adresse aller aktiven Netzwerkeinrichtungen handelt. Der Klarheit halber wird angemerkt, daß die MAC-Adressen inaktiver Netzwerkeinrichtungen bei der Bestimmung der „niedrigsten MAC-Adresse“ nicht berücksichtigt werden.
-
Wie in 13 gezeigt, untersucht der Endapparat 100-1 zu Anfang seine Routing-Tabelle 200 (4), um zu bestimmen, welcher aktive Endapparat die niedrigste MAC-Adresse aufweist (1901). Wenn bestimmt wird, daß ein anderer Endapparat die niedrigste MAC-Adresse jeder aktiven Netzwerkeinrichtung (1902) besitzt, konfiguriert der Endapparat 100-1 das Peer-Entdeckungs-Modul 110 (3) so, daß ein Ereignis erzeugt wird, wenn eine PEER_ASSERT-Nachricht von diesem Endapparat empfangen wird (1903). Andernfalls oder im Anschluß an 1903 wird ein Verzögerungstimer auf eine Verzögerung von z.B. 2 Sekunden gesetzt (1904), und der Endapparat tritt in eine „Warte-auf-Ereignis“-Zustand ein (1905).
-
In 1905 wartet die Netzwerkeinrichtung auf eines von vier Ereignissen:
- 1. Ablaufen des 2-Sekunden-Timers, wodurch angezeigt wird, daß für eine Dauer von 2 Sekunden keine PEER_ASSERT-Nachricht von einer Netzwerkeinrichtung mit der LAM empfangen wurde. In diesem Fall wird die Anforderung von 1903 aufgehoben (1906) und die Operation kehrt zu 1901 zurück, um einen Synchronisations-Nachrichtenzyklus zu wiederholen. Die Idee hinter dem Aufheben der Anforderung (in 1906) und dem anschließenden sofortigen Regenerieren einer anderen Anforderung (in 1903 während der nächsten Iteration) besteht darin, daß das Ablaufen des Timers wahrscheinlich eine Situation wiedergibt, in der der Endapparat 100-1seine Fähigkeit verloren hat, Nachrichten von der Master-Netzwerkeinrichtung zu empfangen (z.B. aufgrund eines Problems mit der Master-Netzwerkeinrichtung oder einer Segmentierung des Netzwerks). Durch Wiederholen der Operation in 1901 bis 1903 kann eine neue Netzwerkeinrichtung mit niedrigster aktiver MAC (LAM), die von der während der vorherigen Iteration identifizierten LAM verschieden ist, identifiziert werden (da die erste LAM nun inaktiv sein kann).
- 2. Ein Local_Inactive-Ereignis, das anzeigt, daß der aktuelle Endapparat 100-1 auf transitiver Basis inaktiv werden wird (d.h. der Endapparat wurde inaktiv, kann aber beim Auftreten eines bestimmten Ereignisses automatisch wieder aktiv werden). Ein solches Ereignis kann zum Beispiel bei Erkennung eines DN-Konflikts mit einem anderen Endapparat erzeugt werden. In diesem Fall arbeitet der Endapparat100-1 weiter, auch wenn er von anderen Endapparaten als inaktiv angesehen wird (d.h. keine PEER_ASSERT-Nachrichten mehr sendet). In diesem Fall wird die (in 1903 gestellte) Anforderung an das Peer-Entdeckungs-Modul 110 und an den Timer (gestellt in 1904) aufgehoben (in 1907), und der Endapparat 100-1 geht in den Freilaufzustand 1800 über.
- 3. Ein Local-Inactive-Ereignis, das andauernde Inaktivität des aktuellen Endapparats 100-1 (d.h. daß der Endapparat inaktiv geworden ist und wahrscheinlich nicht mehr aktiv wird, wenigstens nicht automatisch beim Auftreten eines bestimmten Ereignisses) anzeigt. Dazu kann es zum Beispiel aufgrund einer administrativen Aktion kommen, z.B. bei einer Dekommissionierung des Endapparats 100-1. In diesem Fall werden die Anforderung an das Peer-Entdeckungs-Modul 110 (gestellt in 1903) und an den Timer (gestellt in 1904) aufgehoben (in 1911) und die Operation des Zeitsynchronisations-Automaten 986 hört. auf.
- 4. Empfang einer PEER_ASSERT-Nachricht von der Master-Netzwerkeinrichtung (d.h. von dem Endapparat mit der niedrigsten MAC-Adresse aller aktiven Endapparate). In diesem Fall synchronisiert der Endapparat 100-1 seinen Zeitgeber unter Verwendung des Zeitstempels aus der PEER_ASSERT-Nachricht (1908). Obwohl dies zu einer bestimmten Unheitlichkeit zwischen Netzwerkeinrichtungen führen kann, die aus Netzwerkausbreitungsverzögerungen resultiert, kann eine solche Uneinheitlichkeit für viele Anwendungen toleriert werden. Wenn zum Beispiel typische Verzögerungen von weniger als 5 Millisekunden in einem LAN-Segment erwartet werden können, kann eine solche Verzögerung für eine Zeitgeberpräzision von 0,1 Sekunden oder mehr vernachlässigbar sein. Falls die erforderliche Genauigkeit jedoch in derselben Größenordnung wie die erwarteten Verzögerungen liegt, kann eine Einstellung von Zeitgebern, um die Verzögerung zu berücksichtigen, angesagt sein (z.B. über das öffentliche Internet, wobei die nominale Verzögerung erwartungsgemäß viel größer ist, kann eine Verzögerungseinstellung angesagt sein). Fachleute werden mit Mechanismen zur Messung und Einstellung von Zeitgebern bei Anwesenheit von Netzwerkausbreitungsverzögerungen vertraut sein, die der Implementierer für den Einsatz wählen kann. Der Timer wird dann aufgehoben (1910) und die Operation kehrt zu 1901 zurück, um einen Synchronisationszyklus zu wiederholen.
-
Es wird angemerkt, daß, während Endapparate oder andere Netzwerkeinrichtungen zu dem Netzwerk 30 hinzugefügt oder aus diesem entfernt werden, die Einrichtung, die als Referenz für Zeit dient, wechseln kann, weil z.B. die Identität der Netzwerkeinrichtung mit der niedrigsten MAC-Adresse aller aktiven Einrichtungen wechseln kann. Eine periodische Wiederholung der Operation bei 1901, 1902, 1903 und 1904 ermöglicht es dem Endapparat 100-1, seine Designierung einer Master-Netzwerkeinrichtung zurückzusetzen, falls sich die Identität der Master-Netzwerkeinrichtung mit der Zeit ändern sollte.
-
Die in 10 bis 13 dargestellte Ausführungsform wurde im Kontext der Peer-Entdeckung beschrieben, wobei PEER_ASSERT-Nachrichten verwendet werden, um Zeitstempel für Synchronisation zu erhalten; es versteht sich jedoch, daß die Erfindung nicht auf die Verwendung von PEER_ASSERT-Nachrichten zum Erhalten von Zeitstempeln beschränkt ist. Es kann jede beliebige Nachricht verwendet werden, die einen Zeitstempel enthält, der eine Repräsentation einer Referenzzeit wiedergibt.
-
Bei bestimmten Ausführungsformen der Erfindung operiert eine als Referenz für Zeit designierte Netzwerkeinrichtung proaktiv an den Zeitgebern anderer Netzwerkeinrichtungen, um diese mit ihrem eigenen Zeitgeber zu synchronisieren. Zum Beispiel wird bei bestimmten Ausführungsformen der Erfindung eine Netzwerkeinrichtung mit einem Zeitgeber als Referenz für Zeit zum Beispiel von einem Systemadministrator designiert. Die als Referenz für Zeit designierte Netzwerkeinrichtung kann eine Liste führen, zum Beispiel die Routing-Tabelle 200 von 4, die andere der anderen Netzwerkeinrichtungen identifiziert, die aktiv sind, und synchronisiert periodisch Zeitgeber der anderen Netzwerkeinrichtungen mit ihrem eigenen Zeitgeber.
-
Bei bestimmten Ausführungsformen der Erfindung bestimmt eine Netzwerkeinrichtung, ob sie eine Referenz für Zeit ist, unter Verwendung von Informationen in der Netzwerkeinrichtung. Diese Informationen können zum Beispiel eine MAC-Adresse oder eine beliebige andere geeignete eindeutige Kennung von Netzwerkeinrichtungen sein. Wenn die Netzwerkeinrichtung eine Referenz für Zeit ist, sendet die Netzwerkeinrichtung einen Zeitstempel zu einer oder mehreren anderen Netzwerkeinrichtungen zur Synchronisation der anderen Netzwerkeinrichtungen durch Verwendung des Zeitstempels. Bei bestimmten Ausführungsformen der Erfindung konsultiert die Netzwerkeinrichtung ihre Routing-Tabelle 200, um zu bestimmen, welche Netzwerkeinrichtungen den Zeitstempel empfangen sollen. Bei bestimmten Ausführungsformen der Erfindung bestimmt die Netzwerkeinrichtung, ob sie eine Referenz für Zeit ist, als Reaktion auf den Empfang einer Nachricht von einer der anderen Netzwerkeinrichtungen. Bei anderen Ausführungsformen der Erfindung bestimmt die Netzwerkeinrichtung periodisch, ob sie eine Referenz für Zeit ist, und wenn dies der Fall ist, sendet sie einen Zeitstempel zu den anderen Netzwerkeinrichtungen zur Synchronisation durch Verwendung des Zeitstempels.
-
Zusätzlich zu der Durchführung der Zeitsynchronisation zwischen Endapparaten wie oben beschrieben, können bestimmte Ausführungsformen der Erfindung ein Verfahren zum manuellen Setzen oder Einstellen der Netzwerkzeit in einer beliebigen Netzwerkeinrichtung bereitstellen. Dies kann mittels manueller administrativer Aktion durchgeführt werden (z.B. setzt ein Systemadministrator die Zeit in einer Netzwerkeinrichtung). Eine Netzwerkeinrichtung kann bei einer solchen manuellen Konfiguration dafür ausgelegt sein, ihre neu eingestellte lokale Zeit zu allen anderen Netzwerkeinrichtungen zu verbreiten, mit der Idee, daß eine manuell gesetzte Zeit wahrscheinlich auf einer genauen Kenntnis der tatsächlichen Zeit basiert, die in jeder Netzwerkeinrichtung wiedergegeben werden sollte. Bei bestimmten Ausführungsformen kann die Verbreitung als Reaktion auf den Empfang bestimmter zuverlässiger externer. Zeitinformationen in der Netzwerkeinrichtung durchgeführt werden, zum Beispiel aus Informationen der Anruferidentifikation, die von einem Fernsprechnetzwerk eines öffentlichen Betreibers bereitgestellt werden, oder durch ein Zeitverteilungsprotokoll wie etwa NTP oder SNTP von einem Zeitserver. Dies kann die Auswirkung haben, die Netzwerkzeit periodisch mit einer genauen Repräsentation der tatsächlichen Zeit zu synchronisieren.
-
Als Übergang von Zeitsynchronisation zu Datensynchronisation zeigen 14 bis 18 ein Verfahren zum Synchronisieren von Daten zwischen Netzwerkeinrichtungen (d.h. zum Aufrechterhalten der Kohärenz zwischen Kopien von Daten in verschiedenen Netzwerkeinrichtungen). Bei der vorliegenden Ausführungsform benutzt das Verfahren monoton zunehmende Zähler, die in jedem Endapparat zur Datensynchronisation geführt werden. Die Zähler verfolgen den Ablauf der Zeit (werden z.B. jede Sekunde inkrementiert), geben aber nicht unbedingt das aktuelle Datum öder die aktuelle Uhrzeit wieder. Der Wert eines Zählers wird als Datensequenznummer (DSN) bezeichnet. Es versteht sich, daß eine DSN von scheinbaren nichtlinearen Zeitsprüngen, wie zum Beispiel Sommerzeit oder Einstellen des lokalen Datums bzw. der lokalen Uhrzeit nicht betroffen wird; in solchen Situationen nimmt die DSN einfach weiter zu.
-
Gemäß dem in 14 bis 18 dargestellten Verfahren werden Schritte unternommen, um die DSN in verschiedenen Netzwerkeinrichtungen zu synchronisieren. Wenn Daten in einem gegebenen Endapparat geändert werden, wird ein „Schnappschuß“ der aktuellen DSN in dieser Netzwerkeinrichtung erfaßt und mit diesen Daten assoziiert. Wenn die veränderten Daten zu anderen Netzwerkeinrichtungen verbreitet werden, begleitet sie der assoziierte erfaßte DSN-Wert. Kopien dieser Daten, die in anderen Netzwerkeinrichtungen existieren, werden jeweils einen assoziierten Schnappschuß-DSN-Wert aufweisen, der die DSN zum Zeitpunkt der Erzeugung oder letzten Aktualisierung der Kopie repräsentiert. Die neu erfaßte DSN wird mit der existierenden DSN verglichen, um zu bestimmen, welche Version der Daten behalten werden soll, wobei größere DSN-Werte im allgemeinen neuere und somit vorzuziehende Daten anzeigen.
-
14 zeigt einen beispielhaften Datenbank-Datensatz 1400, der in der Datenbank 996 (9) eines Endapparats gespeichert werden kann. Der beispielhafte Datensatz 1400 enthält einen Schlüssel 1402, eine erfaßte DSN 1404, eine Netzwerkeinrichtungs-ID 1406 und Daten 1408. Der Schlüssel 1402 ist eine eindeutig auflösbare Referenz auf Daten 1408. Die Verwendung von Schlüsseln zur eindeutigen Referenzierung von Daten ist Fachleuten auf dem Gebiet der Datenbanken wohlbekannt. Die DSN 1404 ist ein Schnappschuß eines DSN-Zählers 994 zum Zeitpunkt der letzten Änderung (d.h. Erzeugung oder Aktualisierung) der Daten 1408. Die DSN 1404 dient als Indikator des relativen Alters der Daten 1408 im Vergleich zu anderen Kopien der Daten 1408, die in anderen Netzwerkeinrichtungen existieren können. Die Netzwerkeinrichtungs-ID 1406 ist eine Kennung, die die Netzwerkeinrichtung, die die Daten 1408 erzeugt hat, eindeutig identifiziert. Bei der vorliegenden Ausführungsform ist die Netzwerkeinrichtungs-ID 1406 eine MAC-Adresse; es können bei alternativen Ausführungsformen jedoch auch andere Formen eindeutiger Kennungen verwendet werden. Bei den Daten 1408 schließlich, handelt es sich um ein interessierendes Datenelement (oder um mehr als ein Datenelement).
-
15 zeigt die Initialisierung des lokalen DSN-Zählers 994 von 9 in einem beispielhaften Endapparat 100-1. Die Initialisierung findet in der Regel beim Herauffahren des Endapparats 100-1 statt. Anfänglich wird bestimmt, ob eine lokale Datenbank 996 existiert (1502). Wenn eine neue Einrichtung zum ersten Mal gestartet wird (z.B. von einem „fabrikfrischen“ Zustand), existiert keine lokale Datenbank 996. In dieser Situation wird eine Vorgabe-DSN erhalten (1504). Wenn sich jedoch zeigt, daß eine Datenbank 996 existiert (die z.B. von dem Endapparat 100-1 vor einer Inaktivitätsperiode in dem nichtflüchtigen Speicher gespeichert worden sein kann) wird jeder Datensatz 1400 ( 14 ) der lokalen Datenbank 996 gescannt und die höchste in dem DSN-Feld 1404 jedes Datensatzes gespeicherte DSN wird vermerkt (1506).
-
Danach wird mit dem erhaltenen oder vermerkten DSN-Wert der lokale DSN-Zähler 994 von 9 (1508) initialisiert (z.B. beschrieben). Danach wird der DSN-Zähler 994 freigegeben (d.h. aktiviert) (1510), um so in regelmäßigen Intervallen, die durch den Timer 990 (9) gemessen werden, wie zuvor beschrieben implementiert zu werden.
-
16 zeigt die Funktionsweise des Datensynchronisationsmoduls 992 (9) zur Einstellung des lokalen DSN-Zählers 994 in einem beispielhaften Endapparat 100-1, so wie es für Kohärenz mit den DSN-Zählern 912 in anderen Endapparaten innerhalb akzeptabler Fehlertoleranzen notwendig ist.
-
Zu Anfang wartet das Datensynchronisationsmodul 992 auf das Auftreten eines von zwei Typen von „DSN-Ereignissen“ (1602).
-
Der erste Typ von DSN-Ereignis ist der Empfang eines „Tick“ von dem Timer 990 (9). Beim Empfang eines „Tick“ von dem Timer 990 wird der lokale Zähler für die DSN 912 inkrementiert (1604) und die Steuerung kehrt zu 1602 zurück, um auf weitere Ereignisse zu warten.
-
Der zweite Typ von DSN-Ereignis ist der Empfang einer PEER_ASSERT-Nachricht von einem anderen Endapparat. Die PEER_ASSERT-Nachricht enthält den aktuellen Wert des DSN-Zählers in der abgesetzten Netzwerkeinrichtung, die die PEER_ASSERT-Nachricht gesendet hat (oder mindestens den Wert des DSN-Zählers in der abgesetzten Netzwerkeinrichtung zum Zeitpunkt des Sendens der PEER_ASSERT-Nachricht). In diesem Fall wird der DSN-Wert aus der Nachricht extrahiert (1606) und mit dem aktuellen Wert des lokalen DSN-Zählers 994 verglichen (1608).
-
Wenn bei 1608 bestimmt wird, daß der Wert der DSN des abgesetzten Endapparats größer als der aktuelle Wert des lokalen DSN-Zählers 994 ist (d.h. ein größeres Ablaufen von Zeit als das Ablaufen von Zeit, das durch den lokalen DSN-Zähler 994 angegeben wird, repräsentiert), wird der lokale DSN-Zähler 994 vorgerückt, um mit dem abgesetzten DSN-Wert übereinzustimmen, z.B. durch Überschreiben des Werts des lokalen DSN-Zählers 994 mit dem extrahierten abgesetzten DSN-Wert (1610). Wenn dies von jedem Endapparat durchgeführt wird, werden mit der Zeit alle Endapparate mit der höchsten von jeglichem Endapparat geführten DSN synchronisiert. Es wird die höchste DSN verwendet, weil, wenn ein anderer DSN-Wert (z.B. niedrigste DSN) zur Synchronisation verwendet würde, die DSN in einem oder mehreren Endapparaten abnehmen kann. Abnahmen der DSN-Werte sind zu vermeiden, so daß höhere DSN-Werte einheitlich neuere Datenänderungen anzeigen. Danach kehrt die Steuerung zu 1602 zurück, um auf weitere DSN-Ereignisse zu warten.
-
Wenn Statt dessen in 1608 bestimmt wird, daß die DSN der abgesetzten Netzwerkeinrichtung kleiner oder gleich dem Wert des lokalen DSN-Zählers 994 ist, kehrt die Steuerung einfach zu 1602 zurück, um auf weitere DSN-Ereignisse zu warten.
-
17 zeigt die Funktionsweise des Datensynchronisationsmoduls 992 (9) zum Speichern geänderter Daten in einem Endapparat bei einer Änderung an den Daten. Zu Anfang wird ein „Schnappschuß“ des Werts des lokalen DSN-Zählers 994 zum Zeitpunkt der Änderung der Daten genommen und mit den Daten assoziiert (1710). Die Assoziation kann zum Beispiel durch Speichern des erfaßten DSN-Werts in einem Datensatz 1400 (14) zusammen mit den neu geänderten Daten erzielt werden. Die Daten werden dann lokal zusammen mit ihrem assoziierten Schnappschuß-DSN-Wert z.B. in der Datenbank 996 gespeichert (1712).
-
Danach werden andere Endapparate über die geänderten Daten benachrichtigt (1714). Bei der vorliegenden Ausführungsform nimmt die Benachrichtigung die Form einer Nachricht an, die eine Kopie der geänderten Daten zusammen mit dem erfaßten DSN-Wert enthält. Abhängig von der Beschaffenheit der Daten kann die Anzahl der Endapparate oder andere Netzwerkeinrichtungen, die eine Benachrichtigung über die geänderten Daten benötigen können, unterschiedlich sein. Es kann zum Beispiel wünschenswert sein, daß Änderungen an globalen administrativen Daten zu allen Netzwerkeinrichtungen in dem Netzwerk 30 verbreitet werden, während andere Änderungen möglicherweise nur zu einer Teilmenge von Netzwerkeinrichtungen verbreitet werden, die ein Kopie der Daten benötigen. Jeder Endapparat, der die geänderten Daten empfängt, unternimmt dann eine Operation, um zu bestimmen, ob seine lokale Kopie Aktualisierung erfordert, auf eine Weise, die nun in Verbindung mit 18 beschrieben werden wird.
-
18 zeigt die Funktionsweise zum Aufrechterhalten der Kohärenz zwischen einer lokalen Kopie von Daten und einer abgesetzten Kopie der Daten beim Empfang einer Benachrichtigung, die anzeigt, daß eine abgesetzte Kopie der Daten geändert wurde. Zu Anfang wird eine Benachrichtigung. über die Datenänderung in einem abgesetzten Endapparat empfangen (1810). Die Benachrichtigung nimmt die Form einer Nachricht an, die eine Kopie der geänderten Daten zusammen mit einem erfaßten Wert der DSN des sendenden Endapparats zum Zeitpunkt der Änderung der Daten enthält. Alternative Ausführungsformen können nur eine Anzeige der geänderten Daten (z.B. einen die Daten eindeutig identifizierenden Schlüssel) anstelle einer Kopie der geänderten Daten enthalten. Danach wird die in Assoziation mit der lokalen Kopie der Daten gespeicherte DSN abgerufen (1812). Das Abrufen kann umfassen, einen in der empfangenen Benachrichtigung empfangenen Schlüssel zum Abrufen eines entsprechenden Datensatzes von einer lokalen Datenbank 996 zu verwenden, die einen DSN-Wert 1404 enthält, der zum Zeitpunkt der Erzeugung oder letzten Aktualisierung der lokalen Daten 1408 erfaßt wurde. Der als der „gespeicherte DSN-Wert“ bezeichnete DSN-Wert wird dann mit dem DSN-Wert verglichen, der aus dem Endapparat empfangen wird, der die Fernänderungsbenachrichtigung einleitet (1814).
-
Wenn der Vergleich in 1814 anzeigt, daß der empfangene DSN-Wert kleiner als der gespeicherte DSN-Wert ist, gibt dies eine Situation wieder, in der die lokalen Daten neuer sind und deshalb gegenüber der Version aus der abgesetzten Netzwerkeinrichtung vorzuziehen sind. Folglich werden die lokalen Daten erhalten. Darüber hinaus wird der andere Endapparat (und werden andere Netzwerkeinrichtungen) über die Daten in der lokalen Netzwerkeinrichtung benachrichtigt (1816). Die letztere Aktion wird unternommen, um zu bewirken, daß etwaige abgesetzte Netzwerkeinrichtungen, die veraltete Kopien der Daten besitzen, ihre Kopien aktualisieren; sie kann auf analoge Weise zu 1714 von 17 durchgeführt werden.
-
Wenn der Vergleich 1814 statt dessen zeigt, daß der empfangene DSN-Wert größer als der gespeicherte DSN-Wert ist, gibt dies eine Situation wieder, in der die empfangene Kopie der Daten neuer und deshalb gegenüber der lokal gespeicherten Version vorzuziehen ist. Folglich werden die empfangenen Daten lokal zusammen mit dem empfangenen DSN-Wert gespeichert (1818), z.B. durch überschreiben der zuvor gespeicherten Daten und des zuvor gespeicherten DSN-Werts.
-
Wenn der Vergleich in 1814 anzeigt, daß der empfangene DSN-Wert gleich dem gespeicherten DSN-Wert ist, wird eine weitere Prüfung angewandt, um zu bestimmen, ob die empfangene Kopie der Daten vorzuziehen sind, oder die gespeicherten Daten. Bei der vorliegenden Ausführungsform nimmt diese weitere Prüfung die Form eines Vergleichs zwischen der MAC-Adresse des abgesetzten Endapparats und der MAC-Adresse des lokalen Endapparats an (1820). Der Endapparat mit der niedrigeren MAC-Adresse wird als über die vorzuziehende Version der Daten verfügend angesehen. Dies basiert nicht auf irgendeiner naturgemäßen Überlegenheit der von der Netzwerkeinrichtung mit der niedrigeren MAC-Adresse geführten Daten, sondern richtet einfach eine einheitliche Regel ein, die, wenn sie einheitlich in jeder Netzwerkeinrichtung in einem Netzwerk angewandt wird, dazu führen sollte, daß jede Netzwerkeinrichtung dieselbe Schlußfolgerung darüber zieht, wessen Kopie eines Datenelements vorzuziehen ist.
-
In dem Fall, daß der Vergleich von 1820 zeigt, daß die MAC-Adressen der abgesetzten und der lokalen Netzwerkeinrichtung gleich sind, dann gilt die in 1810 empfangene Benachrichtigung tatsächlich für die lokale Netzwerkeinrichtung. In diesem Fall ist keine Aktion erforderlich.
-
Für Fachleute ist erkennbar, daß Modifikationen an der oben beschriebenen Ausführungsform vorgenommen werden können, ohne von dem Wesen der Erfindung abzuweichen. Obwohl die beschriebene Ausführungsform zum großen Teil auf Peers verweist, die Endapparate sind, versteht sich zum Beispiel, daß die beschriebenen Verfahren gleichermaßen auf andere Peers als Endapparate, wie zum Beispiel auf andere Formen von Netzwerkeinrichtungen, anwendbar sind. Außerdem können Netzwerkeinrichtungen durch eine beliebige Form von Netzwerk, nicht nur durch ein LAN, verbunden sein. Obwohl die Peer-Entdeckungs-Beschreibung auf das Auswählen, Sondieren und Setzen von Rufnummern verweist, versteht sich ferner, daß die beschriebenen Verfahren gleichermaßen für andere Netzwerkadressen als Rufnummern gelten.
-
In bezug auf die beschriebene Zeitsynchronisationsoperation ist es nicht notwendig, daß eine Netzwerkeinrichtung PEER_ASSERT-Nachrichten zum Zwecke periodischer Synchronisation benutzt. Es kann jede beliebige ankommende Übermittlung von einer anderen Netzwerkeinrichtung.oder einem anderen Peer verwendet werden, von der bekannt ist, daß sie die Netzwerkzeit repräsentiert.
-
In bezug auf die beschriebene Datensynchronisationsoperation wird angemerkt, daß es sich bei alternativen Ausführungsformen bei den Zählern in jeder Netzwerkeinrichtung (durchweg) um monoton abnehmende Zähler (anstelle von monoton zunehmenden Zählern) handeln kann, wobei jeder Zähler z.B. jede Sekunde dekrementiert wird. In diesem Fall würden kleine Werte einen größeren Ablauf von Zeit und somit neuere Daten repräsentieren. Bei solchen Ausführungsformen würde die Zählersynchronisation zwischen Endapparaten umfassen, den Zähler mit dem größeren Wert auf den kleineren Wert zu setzen.
-
Außerdem sollte beachtet werden, daß die Ausdrücke „monoton zunehmender Zähler“ und „monoton abnehmender Zähler“ nicht auf Hardwarezähler beschränkt sind. Statt dessen kann jeder beliebige Mechanismus, mit dem man einen monoton zunehmenden oder abnehmenden Wert führen kann, benutzt werden. Darüber hinaus wird angemerkt, daß eine praktische Notwendigkeit darin bestehen kann, solche Zähler zum Beispiel auf einem Nullwert (für monoton zunehmende Zähler) oder einen Maximalwert (für monoton abnehmende Zähler) zurückzusetzen oder „umzuklappen“, wenn eine maximale Zeitdauer, die durch den verwendeten Zähler oder Mechanismus repräsentiert werden kann, erreicht ist.
-
Zusätzlich wird angemerkt, daß bestimmte Ausführungsformen möglicherweise nicht automatisch Kopien geänderter Daten in abgehende Änderungsbenachrichtigungen einfügen (die bei 1714 von 17 und 1816 von 18 gesendet werden). Statt dessen könnte eine Anzeige, welche Daten sich geändert haben (z.B. eindeutige Datenbankschlüssel) gesendet werden, ohne die geänderten Daten mit einzuschließen. Dieser Ansatz kann verwendet werden, falls die geänderten Daten besonders groß sind, so daß es unerwünscht wäre, Netzwerkbandbreite zu belegen, indem eine Kopie der geänderten Daten gesendet wird, solange es nicht bestätigt wird, daß die Kopie in einer abgesetzten Netzwerkeinrichtung eine Aktualisierung erfordert.
-
Obwohl die oben beschriebenen Verfahren und der oben beschriebene Automat als von oder in jeder Netzwerkeinrichtung implementiert beschrieben wurden, versteht sich schließlich, daß sie außerhalb der Netzwerkeinrichtung implementiert werden könnten aber dennoch mit der Netzwerkeinrichtung assoziiert sind (z.B. in einem Peripheriegerät). In diesem Fall würde man die Verfahren und den Automaten immer noch als von oder in der Netzwerkeinrichtung ausgeführt betrachten.
-
Im Hinblick auf die obigen Lehren sind zahlreiche weitere Modifikationen und Varianten der vorliegenden Erfindung möglich. Es versteht sich deshalb, daß die Erfindung innerhalb der Schutzumfangs der angefügten Ansprüche anders als hier spezifisch beschrieben ausgeübt werden kann.