Beschreibung
Verfahren und Vorrichtung zur Verarbeitung von Echtzeitdaten
Die vorliegende Erfindung betrifft ein Verfahren und eine Vorrichtung zur Verarbeitung von Datenpaketen, welche Echt- zeitdatenpakete umfassen. Insbesondere bezieht sie sich auf ein Verfahren und eine Vorrichtung zur Verarbeitung von Echt- zeitdatenpaketen mit Sprach- oder ähnlichen Kommunikationsda- ten, welche über ein IP-Netzwerk übertragen werden.
Der Übertragung von Echtzeitdaten über Kommunikationsnetzwerke wie beispielsweise dem Internet kommt eine zunehmende Bedeutung zu. Bekanntestes Beispiel hierfür sind so genannte Voice-over-IP-Anwendungen, bei der beispielsweise Sprachdaten übertragen werden, so dass ein Gespräch über das Netzwerk möglich wird. Neben Sprachdaten können derartige Echtzeitdaten auch Videodaten oder dergleichen umfassen.
Herkömmliche Vorrichtungen zum Empfangen oder Senden derartiger Daten benutzen einen einzelnen Datenpfad über einen Hauptprozessor der Vorrichtung. Dieser Hauptprozessor verarbeitet demnach diese Echtzeitdaten. Er ist jedoch auch für eine Vielzahl von anderen Aufgaben und Datenverarbeitungen zuständig, welche in der jeweiligen Vorrichtung, beispielsweise einem Mikrocomputer, anfallen.
Daher sind derartige Vorrichtungen von der Geschwindigkeit und Datenverarbeitungskapazität dieses einzelnen Hauptprozes- sors abhängig. Überlastung des Hauptprozessors kann zu Problemen wie dem Verlust von Datenpaketen, Jitter, Laufzeitschwankungen oder anderen Verzögerungen führen. Dies führt beispielsweise im Fall von Sprachdaten zu einer Verringerung der Qualität der Übertragung und kann schlimmstenfalls zu ei- nein Aussetzen oder einer Unterbrechung der Verbindung führen.
Herkömmlicherweise wird durch Verwendung zusätzlicher Protokolle in den Datenpaketen den Echtzeitdatenpaketen eine höhere Priorität bei der Verarbeitung zugewiesen. Dies löst jedoch das prinzipielle Problem einer möglichen Überlastung des Hauptprozessors nicht und führt zumindest zu einer verzögerten Verarbeitung der übrigen Datenpakete. Zudem ist mit dieser Vorgehensweise ein relativ hoher Verarbeitungs- und Implementierungsaufwand verbunden.
Es ist daher eine Aufgabe der vorliegenden Erfindung, ein Verfahren bzw. eine Vorrichtung bereitzustellen, womit die Verarbeitung von Echtzeitdaten mit großer Zuverlässigkeit ermöglicht wird, was zu einer verbesserten Qualität der Verbindung ("Quality of Service", QoS) führt.
Diese Aufgabe wird gelöst durch ein Verfahren nach Anspruch 1 bzw. eine Vorrichtung nach Anspruch 18. Die ünteransprüche definieren jeweils bevorzugte oder vorteilhafte Ausführungsbeispiele des Verfahrens bzw. der Vorrichtung.
Erfindungsgemäß wird vorgeschlagen, zur Verarbeitung von Datenpaketen, welche Echtzeitdatenpakete umfassen, die Datenpakete in zumindest einen ersten Datenpakettyp, welcher Echtzeitdatenpakete umfasst bzw. diesen zugeordnet ist, und einen zweiten Datenpakettyp zu klassifizieren und die Datenpakete des ersten Datenpakettyps über einen ersten Datenpfad und die Datenpakete des zweiten Datenpakettyps über einen zweiten Datenpfad zu verarbeiten. Der zweite Datenpakettyp kann dabei Datenpakete mit Steuer- oder Signalinformationen, insbesonde- re betreffend die jeweilige Verbindung, umfassen.
Bevorzugt weist der erste Datenpfad eine geringere Verzögerung bei der Verarbeitung oder Übertragung der Datenpakete auf als der zweite Datenpfad. Insbesondere kann der zweite Datenpfad einen Hauptprozessor umfassen, während bei dem ersten Datenpfad eine Verarbeitung der Datenpakete beispielsweise durch Koprozessoren erfolgen kann.
Damit wird der Hauptprozessor entlastet, und die Echtzeitda- tenpakete können über den ersten Datenpfad mit geringer Verzögerung verarbeitet werden.
Zur Klassifizierung der Daten können Verbindungsdaten für den Austausch von Echtzeitdatenpaketen mit einer Kommunikationseinrichtung gespeichert werden und die Datenpakete als Datenpakete des ersten Datenpakettyps klassifiziert werden, wenn mindestens ein Teil der Verbindungsdaten des Datenpakets mit den gespeicherten Verbindungsdaten übereinstimmt. Dabei wird ausgenutzt, dass sich derartige Verbindungsdaten im Laufe einer Verbindung nicht oder nur wenig ändern und somit eine Klassifizierung der Datenpakete ermöglichen.
Derartige Verbindungsdaten können eine Netzadresse eines Absenders der Datenpakete oder auch ein Port, auf dem die Datenpakete empfangen werden, sein. Die Klassifizierung der Daten kann dabei durch eine Prozessoreinheit, insbesondere durch einen Koprozessor, erfolgen. Die Speicherverwaltung wird dabei bevorzugt von einer Hauptprozessoreinheit übernommen.
Vorteilhafterweise wird eine Auslastung oder Verfügbarkeit des ersten Datenpfades überwacht, und Pakete des ersten Datenpakettyps werden zur Verarbeitung ausnahmsweise über den zweiten Datenpfad übertragen, wenn die Auslastung des ersten Datenpfades einen vorgegebenen Wert übersteigt bzw. der erste Datenpfad nicht verfügbar ist. Somit wird eine Redundanz ge- schaffen, und bei Störungen oder Ausfällen des hauptsächlich für die Echtzeitdatenpakete vorgesehenen ersten Datenpfades kann der zweite Datenpfad benutzt werden, was eine verlässlichere Verbindung ermöglicht.
Die Echtzeitdatenpakete umfassen beispielsweise Sprachdaten, so dass die Erfindung insbesondere für "Voice over ^"-Anwendungen geeignet ist.
Die Erfindung wird im Folgenden unter Bezugnahme auf die beigefügte Zeichnung anhand bevorzugter Ausführungsbeispiele näher erläutert. Es zeigen:
Figur 1 ein Blockschaltbild eines Ausführungsbeispiels einer erfindungsgemäßen Vorrichtung,
Figur 2 eine Veranschaulichung für eine Klassifizierung von Datenpaketen anhand von Verbindungsdaten,
Figur 3 ein Flussdiagramm, welches ein Ausführungsbeispiel für die erfindungsgemäße Klassifizierung von Datenpaketen zeigt, und
Figur 4 ein Blockdiagramm, welches eine mögliche Speicherverwaltung der erfindungsgemäßen Vorrichtung aus Figur 1 darstellt.
In Figur 1 ist ein Ausführungsbeispiel für eine erfindungsgemäße Vorrichtung in Form eines Blockschaltbilds dargestellt. Das Ausführungsbeispiel behandelt dabei den Empfang von Datenpaketen aus einem (nicht dargestellten) Kommunikations- netzwerk wie beispielsweise dem Internet. Eine entsprechende Vorrichtung wäre auch für das Senden von Daten möglich.
Eingehende Datenpakete, welche Echtzeitdatenpakete umfassen, werden dabei über einen Datenpfad a empfangen und an einen Koprozessor 1, im Folgenden als Paketkoprozessor bezeichnet, geleitet. In diesem Paketkoprozessor 1 werden die eingehenden Datenpakete untersucht und in zumindest zwei Datenpakettypen klassifiziert, wobei Echtzeitdatenpakete dem ersten Datenpa- kettyp zugeordnet werden. Andere Datenpakete, welche beispielsweise Steuersignale für eine Verbindung, über die die. Datenpakete empfangen werden, umfasst, werden einem zweiten Datenpakettyp zugeordnet. Auf geeignete Kriterien für diese Klassifizierung wird nachfolgend noch näher eingegangen.
Datenpakete des ersten Datenpakettyps, also Echtzeitdatenpa- kete wie beispielsweise Datenpakete mit Sprachdaten, werden über einen ersten Datenpfad b an einen weiteren Koprozessor 2 zur Verarbeitung geschickt, im Fall von Sprachdaten ein Sprachkoprozessor . Dieser kann nochmals überprüfen, ob es sich tatsächlich um die gewünschten Echtzeitdaten handelt. Wenn dies der Fall ist, kann der Koprozessor 2 das Datenpaket verarbeiten und beispielsweise die Sprachdaten über einen Da- tenpfad e an eine nachgeordnete Einheit 4 zur Verarbeitung und Ausgabe dieser Sprachdaten weiterleiten.
Datenpakete des zweiten Datenpakettyps werden über einen ersten Teil c eines zweiten Datenpfades an einen Hauptprozessor 3 ("Central Processing Unit", CPU) zur Verarbeitung weitergeleitet. Dieser zweite Datenpfad kann einen zweiten Teil d beinhalten, mit denen auch der weitere Koprozessor 2 Datenpakete an den Hauptprozessor 3 schicken kann, wenn erkannt wird, dass es sich nicht um die gewünschten Echtzeitdatenpa- kete handelt.
Mittels des ersten Datenpfades b können somit eingehende Echtzeitdatenpakete ohne Zuhilfenahme des Hauptprozessors 3 allein von den Koprozessoren 1 und 2 verarbeitet werden. Dies entlastet zum einen den Hauptprozessor und ermöglicht zum anderen eine schnellere Verarbeitung der Daten und somit eine Verringerung von Verzögerungen im Datenfluss, da der erste Datenpfad b nur für diese Echtzeitdatenpakete verwendet wird.
Zusätzlich kann die Verfügbarkeit des ersten Datenpfads b ü- berwacht werden. Wenn sich herausstellt, dass der erste Datenpfad b beispielsweise wegen Überlastung oder wegen einer Unterbrechung nicht verfügbar ist, können auch Datenpakete des ersten Datenpakettyps, also Echtzeitdatenpakete, über den zweiten Datenpfad c zur Hauptprozessoreinheit und dann weiter über die Pfade d und e zur nachgeordneten Einheit 4 geleitet werden. Damit ist ein Funktionieren des Systems auch für den
Fall sichergestellt, dass der erste Datenpfad b nicht verfügbar ist (Redundanz) .
In Figur 2 ist beispielhaft die Klassifizierung von Datenpa- keten anhand von so genannten Headerparametern, d.h. Parametern, welche Informationen über eine Verbindung in einem Kommunikationsnetzwerk beinhalten, dargestellt. Derartige Headerparameter werden in einem Datenpaket den eigentlichen Daten vorangestellt und bleiben im Verlauf einer Verbindung im Wesentlichen unverändert. Wenn eine Verbindung beispielsweise zum Empfangen von Sprachdaten initialisiert wird, werden diese Headerparameter 5 einmal von der Hauptprozessoreinheit 3 festgelegt.
Beim Einrichten der Verbindung wird dabei in einer Vorrichtung, welche beispielsweise nach dem H.323-Standard arbeitet, von dem Hauptprozessor 3 folgende Schritte ausgeführt:
1. Registrierung, Zulassung und Status (Registration, Admis- sion and Status, RAS). Dabei registriert sich ein H.323-
Client bei einer Verwaltungseinheit (Gatekeeper) , welcher für die entsprechende Netzwerkzone zuständig ist (beispielsweise durch ein IP-Multicast mittels eines UDP ("User Datagram Pro- tocol") -Protokolls) und bittet um Erlaubnis für die Einrich- tung der Verbindung.
2. Dann wird eine TCP ("Transmission Control Protocol") -Verbindung an den entsprechenden (den angerufenen) H.323-Server aufgebaut. Der Aufbau eines Anrufs wird über ein H.225.0-Pro- tokoll (ähnlich einem Q.931-Anrufaufbau) über die TCP-Verbindung bewerkstelligt.
3. Der Aufbau der logischen Kanäle zwischen Anrufer und Angerufenem erfolgt dann wiederum über TCP gemäß dem H.245- Standard.
Im vorliegenden Beispiel beinhalten die dabei generierten Headerparameter 5 Ethernetheaderparameter 5A, welche Parameter einer Ethernetverbindung beispielsweise in einem LAN beinhalten, IP-Headerparameter 5B, welche Informationen über die Verbindung zu einem IP-Netzwerk wie dem Internet beinhalten, und UDP-Headerparameter 5C, welche Informationen über das "User Datagram"-Protokoll, -welches typischerweise zum Versenden von Sprachdaten benutzt wird, enthält. Diese Headerparameter 5 werden über die beiden Teile des zweiten Da- tenpfades c, d an die Koprozessoren 1 und 2 geschickt und dort zu Referenzzwecken abgespeichert. Ein Datenpaket 6, welches über den Datenpfad a empfangen wird, enthält ebenfalls derartige Headerparameter 6A, 6B, 6C und zudem die eigentlichen Daten 6D, im Fall von Sprachdaten RTP ("Real Time Proto- col") -Echtzeitsprachdaten.
Die Headerparameter βA, 6B, 6C werden mit den entsprechenden abgespeicherten Headerparametern 5A, 5B, 5C verglichen. Wenn die Parameter derart übereinstimmen, dass sichergestellt wer- den kann, dass die Daten aus der entsprechenden Verbindung zum Empfangen von Sprachdaten stammen, wird das Datenpaket 6 als erster Datenpakettyp klassifiziert und über den ersten Datenpfad b and den weiteren Koprozessor 2 weitergegeben. Dieser kann die Klassifizierung noch fortführen, insbesondere beim Verarbeiten der Daten. Falls sich bei der Klassifizierung in dem Paketkoprozessor 1 oder in dem Sprachkoprozessor 2 ergeben sollte, dass es sich nicht um Sprachdaten handelt, wird das Datenpaket an den Hauptprozessor 3 übergeben. Andernfalls wird es von dem Sprachkoprozessor 2 verarbeitet.
In Figur 3 ist diese Klassifizierung anhand eines Flussdiagramms detailliert dargestellt. In einem ersten Schritt 7 wird überprüft, ob der Port, auf dem das Datenpaket empfangen wurde, der für die jeweilige Verbindung zum Empfangen von Sprachdaten vorgesehene Port ist. Dies ist insbesondere dann wichtig, wenn mehrere Verbindungen gleichzeitig aktiv sind. Wenn ja (J) , wird zum nächsten Schritt 8 übergegangen, wenn
nein (N) , wird zu Schritt 13 übergegangen, in dem das entsprechende Datenpaket an die Hauptprozessoreinheit 3 übergeben wird.
Im nächsten Schritt 8 wird überprüft, ob im Ethernetheader 6A der richtige Verbindungstyp, beispielsweise IP, für die jeweilige Verbindung angegeben ist. Falls ja, wird zu Schritt 9 übergegangen, falls nein, wiederum zu Schritt 13.
In Schritt 9 wird überprüft, ob die Ziel-IP-Adresse des empfangenen Datenpakets mit der entsprechenden für die Verbindung vorgesehenen IP-Adresse übereinstimmt. Falls nein, wird wiederum zu Schritt 13 übergegangen. Diese ersten drei Klassifizierungsschritte 7 bis 9 werden beispielsweise in dem Pa- ketkoprozessor 1 durchgeführt. Sie erlauben eine Klassifizierung auf niedriger Ebene, indem nur elementare Kommunikationsparameter überprüft werden.
Falls sich bei Schritt 9 eine Übereinstimmung ergibt, wird das Datenpaket an den Sprachkoprozessor 2 zur weiteren Behandlung übergeben. Dort wird in Schritt 10 überprüft, ob das Protokoll des empfangenen Datenpakets ein UDP-Protokoll ist. Falls nein, wird zu Schritt 14 übergegangen, was bedeutet, dass das Datenpaket wiederum an den Hauptprozessor 3 überge- ben wird. Falls ja, wird zu Schritt 11 übergegangen. Hier wird überprüft, ob der UDP-Port der Port für Sprachdatenempfang ist. Dies wird benutzt, um zwischen so genannten RAS ("Registration, Admission and Status")- und Sprachdatenpaketen zu unterscheiden. Falls nein, wird wiederum zu Schritt 14 übergegangen. Falls ja, wird in Schritt 12 das Datenpaket verarbeitet und gegebenenfalls die verarbeiteten Daten an die in Figur 1 gezeigte nachgeordnete Einheit 4 zur weiteren Verarbeitung und zur Sprachausgabe weitergegeben. Die Aufteilung ■ der Schritte 7 bis 11 zwischen dem Paketkoprozessor 1 und dem Sprachkoprozessor 2 ist dabei prinzipiell beliebig.
In der nachgeordneten Einheit 4 kann dabei beispielsweise die tatsächliche Verarbeitung der Sprachdaten vorgenommen werden, während im Sprachkoprozessor 2 im Wesentlichen das UDP-Proto- koll abgearbeitet wird.
Insgesamt verarbeitet bei einer derartigen Vorrichtung der Hauptprozessor 3 dabei die entsprechenden Anwendungsprotokollstapel (H.323 USW), die TCP-Verbindung, die Internetverbindung und die Schnittstellen zum Netzwerk (Ethernet, ATM etc.). Die Koprozessoren verarbeiten zur Klassifizierung nur einen reduzierten Teil des Protokollstapels, beispielsweise Teile des Internet (IP) -Protokolls, des "User Datagram"- Protokolls (UDP) und der Netzwerkschnittstelle (z.B. Ethernet) . Die eigentlichen Sprach- oder anderen Echtzeitdaten (RTP-Daten) werden beispielsweise von einer dem zweiten Ko- prozessor nachgeordneten Einheit verarbeitet.
In Figur 4 ist die Speicherverwaltung und die Übergabe der Datenpakete zwischen den Koprozessoren 1, 2 und dem Zentral- prozessor 3 genauer dargestellt.
Dabei umfasst der Paketkoprozessor 1 einen Paketspeicher 15 mit einer Liste von Deskriptoren 151, 152, ... bis 15N. Jeder dieser Deskriptoren 151, 152, ... 15N enthält einen Zeiger 25 auf einen Speicherbereich 20, 21 in einem Speicherelement 19, beispielsweise einem SDRAM. Die Liste von Deskriptoren ist einer (nicht dargestellten) DMA("Direct Memory Access") -Einheit, welche die Daten in Empfang nimmt, bekannt. Eingehende Pakete werden in den entsprechenden Speicherbereichen 20, 21 abgespeichert, wobei im vorliegenden Beispiel die Speicherbereiche 20 mit eingegangenen Datenpaketen belegt sind, während der Speicherbereich 21 noch frei ist. Ist ein Datenpaket vollständig empfangen und in einem entsprechenden Speicherbereich 20 abgespeichert, wird dies dem Paketkoprozessor 1 bei- spielsweise durch einen Interrupt mitgeteilt. Der Paketkoprozessor 1 klassifiziert das Datenpaket dann wie oben beschrieben. Wenn das Datenpaket als zweiter Datenpakettyp klassifi-
ziert wird, d.h. kein Echtzeitdatenpaket ist, wird das Datenpaket an den Hauptspeicher 3 übergeben, wie durch Pfeil g angedeutet. Dies geschieht beispielsweise, indem der zugehörige Deskriptor mit dem Zeiger auf den entsprechenden Speicherbe- reich übergeben wird. Im Gegenzug weist der Hauptprozessor 3 dem Paketkoprozessor 1 einen neuen freien Speicherbereich 21 zu, so dass in der Liste in dem Paketspeicher 15 immer genügend Deskriptoren und Zeiger auf freie Speicherbereiche zur Verfügung stehen (Pfeil h) . Die Kommunikation im Paketkopro- zessor 1 wird dabei durch eine Einheit 16 durchgeführt.
Falls es sich hingegen um ein Datenpaket des ersten Datenpa- kettyps, also um ein Echtzeitdatenpaket handelt, wird der entsprechende Zeiger auf das Datenpaket an den Sprachkopro- zessor 2 übergeben, wie durch Pfeil e dargestellt. Im Sprachprozessor 2 ist dabei analog zum Paketkoprozessor 1 eine Einheit 17 zur Kommunikation vorgesehen. Weiterhin enthält der Sprachkoprozessor 2 eine gespeicherte Liste 18 mit Deskriptoren 181, 182, ..., 18M, welche wiederum Zeiger 25 auf dem Sprachkoprozessor 2 zugeordnete Speicherbereiche 23, 24 enthalten. Die Speicherbereiche 23 enthalten dabei bereits vom Paketkoprozessor 1 als Sprachdatenpakete eingestufte Pakete, während der Speicherbereich 24 noch frei ist. Erhält der Sprachkoprozessor 2 nun wie oben beschrieben einen Deskriptor bzw. Zeiger auf ein neues Sprachdatenpaket, schickt er im Gegenzug einen Zeiger 25 auf einen freien Speicherabschnitt an den Paketkoprozessor 1 zurück (Pfeil f) . Wenn, wie in Figur 3 bei den Schritten 10 und 11 möglich, der Sprachkoprozessor bemerkt, dass es sich bei dem Datenpaket um kein Sprachdaten- paket handelt, wird der Zeiger auf das Datenpaket an den
Hauptprozessor 3 übergeben und im Gegenzug ein Zeiger auf einen freien Speicherbereich erhalten, wie durch die Pfeile i und j dargestellt.
Zu beachten ist, dass dabei bei der durch die Pfeile e und f angedeuteten Kommunikation lediglich Zeiger auf Speicherbereiche ausgetauscht werden, welche zuvor vom Hauptprozessor
den jeweiligen Koprozessoren zugeordnet wurden. Die Koprozes- soren können demnach nicht selbstständig Speicherbereiche freigeben, sondern erhalten eine gewisse Liste von Speicherbereichen von dem Hauptprozessor 3 zugewiesen.
Wie aus der vorhergehenden Beschreibung hervorgeht, entsprechen die in Figur 4 gezeigten Pfeile e, f einer Kommunikation über den ersten Datenpfad b, während die Pfeile g, h einer Kommunikation über den ersten Teil c des zweiten Datenpfads und die Pfeile i, j einer Kommunikation über den zweiten Teil d des zweiten Datenpfads entsprechen.
Es sei nochmals darauf hingewiesen, dass diese genaue Ausführung der Speicherverwaltung lediglich ein Beispiel darstellt. Auch andere Architekturen sind hier möglich. Zudem ist die vorliegende Erfindung nicht auf die Übertragung von Sprachdaten beschränkt, sondern es können auch andere Echtzeitdaten wie beispielsweise Videodaten übertragen werden. Denkbar wären beispielsweise auch Daten zur Echtzeitsteuerung oder -Überwachung.