DE60133324T2 - Schubsdatenpaket zur Minimierung von Datenpufferungsverzögerung - Google Patents

Schubsdatenpaket zur Minimierung von Datenpufferungsverzögerung Download PDF

Info

Publication number
DE60133324T2
DE60133324T2 DE60133324T DE60133324T DE60133324T2 DE 60133324 T2 DE60133324 T2 DE 60133324T2 DE 60133324 T DE60133324 T DE 60133324T DE 60133324 T DE60133324 T DE 60133324T DE 60133324 T2 DE60133324 T2 DE 60133324T2
Authority
DE
Germany
Prior art keywords
packet
bandwidth
pair
packets
network
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60133324T
Other languages
English (en)
Other versions
DE60133324D1 (de
Inventor
Thomas B. Brown
David Del Val
Anders E. Redmond Klemets
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of DE60133324D1 publication Critical patent/DE60133324D1/de
Application granted granted Critical
Publication of DE60133324T2 publication Critical patent/DE60133324T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/28Flow control; Congestion control in relation to timing considerations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0896Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • H04L43/0888Throughput
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/50Testing arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/19Flow control; Congestion control at layers above the network layer
    • H04L47/193Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/26Flow control; Congestion control using explicit feedback to the source, e.g. choke packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0852Delays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0852Delays
    • H04L43/087Jitter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/16Threshold monitoring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/65Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Erfindung betrifft die dynamische Erfassung von maximaler Bandbreite für eine Verbindung zwischen zwei Einheiten in einer TCP-Netzwerkumgebung. Insbesondere betrifft diese Erfindung Gegenmaßnahmen zur Ablaufsteuerung von Funktionen der Netzwerkumgebung, die das Senden einer Gruppe von Paketen effektiv verzögern können.
  • HINTERGRUND DER TECHNIK
  • Mit der technischen Ausreifung des Internets haben sich die Eigenschaften des verfügbaren Inhaltes in dem Internet geändert. Mittlerweise ist Klang- und Videoinhalt zusammen mit dem herkömmlichen Textinhalt enthalten. Dieser neue Inhalt im Internet erfordert jedoch eine höhere Verbindungsgeschwindigkeit (das heißt, Bandbreite) als die, die vor einigen Jahren noch weitläufig verfügbar war.
  • 1 illustriert ein Beispiel einer typischen Internetkonfiguration. Sie beinhaltet einen Server (wie beispielsweise einen Medienserver 20), der mit dem Internet 30 gekoppelt ist. Der Server beinhaltet typischerweise einen oder mehrere physikalische Servercomputer 22 mit einer oder mehreren physikalischen Speichervorrichtungen und/oder Datenbanken 24. Auf der anderen Seite einer Internetübertragung befindet sich ein Client 90, der über einen der vielen verfügbaren Internet Service Provider (ISP) 80 verbunden ist. Hierbei ist ein Server eine Netzwerkeinheit, die Daten sendet, und ein Client ist eine Netzwerkeinheit, die Daten empfängt.
  • Die Wolke 30 ist mit Internet bezeichnet, es gilt jedoch zu beachten, dass diese Wolke den Abschnitt des Internets darstellt, der lediglich das enthält, was darin dargestellt ist. Innerhalb einer solchen Wolke befinden sich Router, Übertragungsleitungen, Verbindungen und andere Kommunikationseinrichtungen, die in den meisten Fällen Daten erfolgreich zwischen Clients und Servern senden. Innerhalb der exemplarischen Internet- Wolke 30 sind die Router 32 bis 44; zwei Satellitenschüsseln 46 und 50; sowie ein Satellit 48 vorhanden. Die Verbindungen zwischen diesen Vorrichtungen stellen die möglichen Pfade dar, die ein Datenpaket auf seinem Weg zwischen dem Server und dem Client nehmen kann.
  • Im Allgemeinen ist eine Kommunikationseinrichtung in einem Netzwerk (wie beispielsweise das Internet) jede beliebige Vorrichtung, die die Kommunikation über das Netzwerk zwischen zwei Einheiten ermöglicht, und die die zwei Einheiten beinhaltet. Beispiele solcher Einheiten umfassen den Server 20 und den Client 90.
  • Die Schichten des OSI-Modells
  • Das Modell der Open System Interconnection (OS') ist ein ISO-Standard für weltweite Kommunikationen, der einen Netzwerkrahmen zum Implementieren von Protokollen in sieben Schichten definiert. Die Steuerung wird von einer Schicht zu der nächsten Schicht weitergeleitet, beginnend mit der Anwendungsschicht in einer Station, weitergehend mit der unteren Schicht über den Kanal zu der nächsten Station und die Hierarchie zurück hinauf. Eine Person mit der gewöhnlichen Erfahrung auf dem Gebiet der Technik ist mit dem OSI-Modell vertraut.
  • Der größte Teil der Funktionalität in dem OSI-Modell ist in allen Kommunikationssystemen vorhanden, obgleich zwei oder drei OSI-Schichten in einer Schicht integriert sein können. Diese Schichten werden auch als „Level" bezeichnet.
  • Im Allgemeinen implementiert die Hardware die physikalische Schicht. Solche Hardware kann eine Netzwerkkarte, ein Modem oder eine andere Kommunikationseinrichtung umfassen. Typischerweise implementiert der Betriebssystemkern eines Betriebssystems (OS, Operating System) die Transportschicht.
  • Der obere Teil des Stapels sind die Anwendungen in der Anwendungsschicht. Diese beinhaltet eine jegliche Anwendung, die mit Einheiten außerhalb des Computers, wie beispielsweise einem Webbrowser, einem Mediaplayer und einem E-Mail-Programm kommuniziert. Die Anwendungsschicht verfügt über die geringste Steuerung von Details der Kommunikation zwischen den Einheiten in einem Netzwerk, wie beispielsweise dem Internet.
  • Bandbreite
  • Bandbreite ist die Menge an Daten, die in einer festgelegten Menge an Zeit gesendet werden kann. So wird beispielsweise die Bandbreite zwischen dem Medienserver 20 in 1 zu dem Medien-Client 90 anhand der Menge an Daten (beispielsweise 1000 Bits) berechnet, die zwischen ihnen in einer Zeiteinheit (beispielsweise eine Sekunde) gesendet werden kann. Genauer gesagt bedeutet dies, dass Daten zwischen den Einrichtungen bei einer Übertragungsgeschwindigkeit von ungefähr 56.000 Bits pro Sekunde gesendet werden können. Dies kann als 56 Kilobits pro Sekunde bezeichnet werden (Kbps).
  • Wie dies in 1 dargestellt ist, führt die Übertragung über das Internet über eine Vielzahl von Verbindungen, ehe sie ihr Ziel erreicht. Jede Verbindung besitzt ihre eigene Bandbreite. So wie eine Kette nur so stark wie ihr schwächstes Glied ist, ist die maximale Bandbreite zwischen dem Server 20 und dem Client 90 die Verbindung dazwischen mit der langsamsten Bandbreite. Typischerweise ist dies die Verbindung zwischen dem Client 90 und seinen ISP 80. Diese langsamste Bandbreite ist de facto die maximale Bandbreite.
  • Hierin wird davon ausgegangen, dass sich, es sei denn es wird anhand des Kontextes etwas Anderes offensichtlich, Verweise auf Bandbreite zwischen Netzwerkeinheiten (wie beispielsweise dem Server 20 und dem Client 90) auf die de facto maximale Bandbreite dazwischen beziehen.
  • Die Bandbreite kann auch als „Verbindungsgeschwindigkeit", „Geschwindigkeit" oder „Rate" bezeichnet werden. Bei Verweisen auf Bandbreite, die in Bits pro Sekunde gemessen werden, kann die Bandbreite auch als „Bit-Rate" oder „Bitrate" bezeichnet werden.
  • Streaming-Medien
  • Beim Streaming handelt es sich um ein Verfahren zum Übertragen von Multimedia-Daten auf eine Weise, bei der diese als ein konstanter und kontinuierlicher Strom verarbeitet werden können. Streaming-Technologien erhalten einhergehend mit dem Wachstum des Internets eine immer größer werdende Bedeutung, da die meisten Benutzer keinen ausreichend schnellen Zugang besitzen, um große Multimedia-Dateien schnell herunterzuladen. Mit dem Streaming kann der Client-Browser oder das Zusatzmodul damit beginnen, die Daten anzuzeigen, bevor die gesamte Datei gesendet worden ist.
  • Damit das Streaming funktioniert, muss die Client-Seite, die die Daten empfängt, in der Lage sein, die Daten zu erfassen und diese als einen konstanten Strom zu der Anwendung zu senden, die die Daten verarbeitet und die Daten in Klang oder Bilder umzuwandeln. Dies bedeutet, dass, wenn der Streaming durchführende Client die Daten schneller empfängt, als dies erforderlich ist, er die überschüssigen Daten in einem Puffer speichern muss. Wenn die Daten nicht schnell genug ankommen, wird die Präsentation der Daten jedoch nicht störungsfrei sein.
  • Innerhalb des Kontextes einer Audio- und/oder visuellen Präsentation werden die Begriffe „Medien" und „Multimedien" hierin untereinander austauschbar verwendet. Der Begriff „Medien" bezieht sich auf die Präsentation von Text, Graphiken, Video, Trickfilm und/oder Klang auf eine integrierte Weise.
  • Der Begriff „Streaming-Medien" bezeichnet eine Audio- und/oder visuelle Präsentation, die über ein Netzwerk (wie beispielsweise dem Internet) zu einem Endbenutzer gesendet wird. Solch ein Senden wird so durchgeführt, dass die Präsentation relativ störungsfrei und nicht ruckartig ist. Lange Pausen, während zusätzliche Rahmen (Frames) zu dem Benutzer heruntergeladen werden, sind für den Benutzer ärgerlich. Diese Ärgernisse halten den Benutzer davon ab, in Zukunft Streaming-Medien anzusehen.
  • Störungsfreies Senden von Streaming-Medien
  • Da die Bandbreite die Rate bestimmt, mit der der Client die Daten empfangen wird, kann eine Präsentation von Streaming-Medien nur mit einer Rate präsentiert werden, die nicht größer als das ist, was die Bandbreite zulässt. So sei beispielsweise angenommen, dass der Medienserver 20 Daten bei einer Rate von 50 Kbps zu dem Client 90 senden muss, um eine Präsentation von Streaming-Medien störungsfrei „abzuspielen". Die Bandbreite zwischen dem Client und dem Server beträgt jedoch lediglich 30 Kbps. Das Ergebnis ist eine ruckartige und eine sprunghafte Medienpräsentation.
  • In einer Anstrengung, dieses Problem zu lindern, werden die Präsentationen der Streaming-Medien oftmals in mehreren Formaten mit unterschiedlichen Graden an Qualität codiert.
  • Die Formate mit der geringsten Qualität (beispielsweise kleine Größe, geringe Auflösung, kleine Farbpalette) weisen die geringste Menge an Daten auf, die über eine gegebene Zeit hinweg zu dem Client gepusht werden. Dementsprechend kann ein Client über eine langsame Verbindung auf störungsfreie Weise die Präsentation der Streaming-Medien präsentieren, wobei jedoch die Qualität der Präsentation leidet.
  • Die Formate mit der höchsten Qualität (beispielsweise volle Bildschirmgröße, hohe Auflösung, große Farbpalette) weisen die größte Menge an Daten auf, die über eine gegebene Zeit hinweg zu dem Client gepusht werden. Dementsprechend kann ein Client mit einer schnellen Verbindung die Präsentation der Streaming-Medien auf störungsfreie Weise präsentieren und dabei immer noch eine Präsentation einer hohen Qualität gewährleisten.
  • Ansatz des Auswählens einer Bandbreite
  • Wenn ein Server Streaming-Medien zu einem Client sendet, muss er wissen, welches Format er zu verwenden hat. Dementsprechend muss der Server, um das geeignete Format auszuwählen, die Bandbreite zwischen dem Server und dem Client kennen.
  • Die einfachste Art und Weise, dies zu erreichen, besteht darin, den Benutzer eines Clients zu fragen, was seine Bandbreite ist. Da die Verbindung des Client zu dem Internet typischerweise die Stelle mit der geringsten Bandbreite (Bottleneck) ist, zeigt die Kenntnis über die Bandbreite dieser Verbindung typischerweise die tatsächliche Bandbreite an.
  • 2 zeigt einen ausgeschnittenen Teil 100 einer Webseite, die auf dem Computer eines Client angezeigt wird. In dem ausgeschnittenen Teil 100 befindet sich eine typische Benutzerschnittstelle 930, die dafür verwendet werden kann, um einen Benutzer zu fragen, was seine Verbindungsgeschwindigkeit ist. Der Benutzer klickt auf eine der drei Schaltflächen 112, 114 und 116, die durch die Benutzerschnittstelle 930 bereitgestellt werden. Wenn der Benutzer auf die Schaltfläche 112 klickt, überträgt der Server Daten aus einer Datei, die Streaming-Medien enthält, in einem Format, das für eine Übertragung bei einer Rate von 28,8 Kbps ausgelegt ist. Auf gleiche Weise werden, wenn der Benutzer auf die Schaltfläche 114 klickt, Daten aus einer Datei, die Streaming-Medien enthält, in einem Format gesendet, das für eine Übertragung bei einer Rate von 56,6 Kbps ausgelegt ist. Wenn der Benutzer auf die Schaltfläche 114 klickt, überträgt der Server Daten aus einer Datei, die Streaming-Medien enthält, in einem Format, das für eine Übertragung bei einer Rate, die größer ist als 56,6 Kbps, und bis zu der typischen Geschwindigkeit einer T1-Verbindung ausgelegt ist.
  • Dennoch besteht das hauptsächliche Problem mit dem Ansatz zum „Auswählen einer Bandbreite" darin, dass eine durchdachte Auswahl durch einen Benutzer erforderlich ist. Dieser Ansatz bietet Gelegenheit für Auswahlfehler.
  • Es macht erforderlich, dass ein Benutzer seiner Verbindungsgeschwindigkeit Bedeutung beimisst, dass er begreift, was damit gemeint ist und dass er sie kennt. Oftmals schenkt der Benutzer der Tatsache, welche Schaltfläche er zu drücken hat, keine besondere Beachtung. Der Benutzer weiß möglicherweise nur, dass eine Medien-Präsentation erscheinen wird, wenn der Benutzer eine dieser Schaltflächen drückt. Dementsprechend drückt der Benutzer irgendeine von ihnen.
  • Oftmals versteht ein Benutzer das Konzept der Bandbreite nicht. Ein Benutzer kann die Schaltfläche 116 auswählen, da er möglicherweise die Präsentation in ihrer höchsten Qualität sehen möchte. Der Benutzer versteht nicht, dass das Sehen der Präsentation in ihrer höchsten Qualität in einer nicht störungsfreien Präsentation resultieren kann, da seine Internetverbindung die Rate nicht handlen kann, mit der die Daten über die Internetverbindung gesendet werden.
  • Wenn er das Konzept der Bandbreite versteht, kennt der Benutzer aber möglicherweise seine Bandbreite nicht. Ein Benutzer weist möglicherweise keine Kenntnisse zu seiner Bandbreite auf. Zusätzlich dazu können variierende Grade an Rauschen jedes Mal dann variierende Verbindungsgeschwindigkeiten verursachen, wenn der Benutzer eine Verbindung zu dem Internet herstellt. Des Weiteren können einige Typen von Verbindungen (wie beispielsweise ein Kabelmodem) in Abhängigkeit von einer Vielzahl von Faktoren sehr unterschiedliche Grade an Verbindungsgeschwindigkeiten aufweisen.
  • Darüber hinaus muss der Benutzer die Auswirkungen einer unkorrekten Auswahl verstehen. Ein Benutzer muss so belehrt werden, dass er versteht, dass er eine Option auswählen muss, die seiner Bandbreite entspricht oder geringer als diese ist, um eine störungsfreie Präsentation zu erhalten. Jedoch sollte der Benutzer keine Option auswählen, die signifikant geringer als seine Bandbreite ist. Wenn er dies jedoch tut, wird er eine störungsfreie Präsentation bei einer geringeren Qualität sehen, die er auf andere Weise mit einer höheren verfügbaren Bandbreite sehen könnte.
  • Wie anhand der voranstehenden Diskussion gesehen werden kann, ist dieser manuelle Ansatz oftmals verwirrend, und viele Benutzer sind damit überfordert. Dementsprechend resultiert er oftmals in unkorrekten Auswahlen.
  • Was noch bedeutender ist, ist die Tatsache, dass das Aufrechterhalten von einer Vielzahl von Dateien (eine für jede Bandbreite) in dem Medienserver zusätzlichen Steuerungsaufwand (Overhead) beim Unterhalten einer Webseite nach sich zieht.
  • Automatische Erfassung der Bandbreite
  • Um dieses Problem zu lösen, können Medienserver eine einzige Datei verwenden, die Unterdateien für mehrere Bandbreiten enthält. Zusätzlich dazu können Medienserver automatisch die Bandbreite erfassen.
  • Diese einzelne Datei wird MBR-(multiple bit rate) Datei genannt. Die MBR-Dateien beinhalten typischerweise eine Vielzahl von unterschiedlichen „Bändern" oder „Strömen". Diese Bänder können als „Unterdateien" bezeichnet werden. Ein Benutzer klickt auf eine Verbindung. Automatisch bestimmt der Server im Verborgenen das richtige Geschwindigkeitsband, um dies zu dem Client zu senden.
  • Diese automatische Erfassung der Geschwindigkeit nimmt eine lange Zeit in Anspruch. Dies bedeutet, dass der Benutzer zusätzlich 5 Sekunden bis eine Minute (oder mehr) darauf warten muss, dass die Präsentation beginnt. Diese Verzögerung für die existierende automatische Erfassung der Geschwindigkeit rührt von langen Zeiten für die Übereinkunftskopplung („handshaking„), während die Bestimmung der Geschwindigkeit fortgesetzt wird.
  • Ein existierendes Verfahren zur automatischen Erfassung der Geschwindigkeit umfasst das Senden von einer Vielzahl von Datenpaketen zum Messen der Geschwindigkeit zwischen dem Server und dem Client. Dieses Verfahren wird im weiteren Verlauf der Beschreibung in dem Abschnitt mit dem Titel „Verfahren für mehrere Messungspakete” noch weiter beschrieben.
  • Bandbreitenmessungs-Pakete
  • Typischerweise messen Verfahren zur automatischen Erfassung der Bandbreite die Bandbreite zwischen Einheiten in einem Netzwerk, indem ein oder mehrere Paket einer bekannten Größe gesendet werden.
  • 3 zeigt einen Zeitgraphen, der das Senden von zwei solchen Paketen (Px und Py) zwischen einem Sender (beispielsweise einem Server) und einem Empfänger (beispielsweise einem Client) verfolgt. Die Serverseite und die Clientseite sind entsprechend so gekennzeichnet. Auf dem Graphen verläuft der Verlauf der Zeit nach unten.
  • Der Zeitpunkt ta zeigt den Zeitpunkt an, zu dem der Server die Übertragung des Paketes Px beginnt. Der Zeitpunkt tb zeigt den Zeitpunkt an, zu dem der Server die Übertragung des Paketes Px beendet. Auf ähnliche Weise zeigt der Zeitpunkt t0 den Zeitpunkt an, zu dem der Client den Empfang des Zeitpunktes Px beginnt. Der Zeitpunkt t1 zeigt den Zeitpunkt an, zu dem der Client den Empfang des Paketes Px abschließt. Zu dem Zeitpunkt t1 leitet die Hardware des Netzwerkes das Paket wahrscheinlich durch die Kommunikationsschichten in Richtung nach oben zu der Anwendungsschicht weiter.
  • Das Paket Py wird auf ähnliche Weise auf dem Zeitgraphen in 3 gekennzeichnet. tc ist der Server-Zeitpunkt, zu dem die Übertragung des Paketes Py beginnt. td ist der Server-Zeitpunkt, zu dem die Übertragung des Paktes Py beendet wird. Auf ähnliche Weise ist t2 der Client-Zeitpunkt, zu dem der Client den Empfang des Paketes Py beginnt. t3 ist der Client-Zeitpunkt, zu dem der Client den Empfang des Paketes Py abschließt. Zu dem Zeitpunkt t3 leitet die Hardware des Netzwerkes wahrscheinlich das Paket durch die Kommunikationsschichten in Richtung nach oben zu der Anwendungsschicht weiter.
  • Bandbreitenmessung unter Verwendung eines einzelnen Paketes. In einer gesteuerten laborähnlichen Umgebung wird die Bandbreitenmessung zwischen zwei Einheiten in einem Netzwerk direkt durchgeführt. Um eine solche Berechnung durchzuführen, wird ein Paket einer bekannten Größe von einer Einheit zu der anderen Einheit gesendet, und es wird die Übertragungslatenz gemessen, bei der es sich um die Menge an Zeit handelt, die erforderlich ist, so dass sich ein Paket von der Quelle zum Ziel bewegt. In Anbetracht dieses Szenarios muss man den Zeitpunkt kennen, zu dem das Paket gesendet wurde und den Zeitpunkt, zu dem das Paket angekommen ist.
  • Dieses Verfahren ist außerhalb der laborähnlichen Umgebung nahezu vollständig unpraktisch. Es kann in einem asynchronen Netzwerk (wie dem Internet) deshalb nicht angewendet werden, da es eine Synchronisation zwischen dem Client und dem Server erfordert. Beide müssen denselben Zeittakt verwenden.
  • Alternativ dazu kann der Client den Zeitpunkt verfolgen, zu dem er beginnt, ein Paket zu empfangen (wie beispielsweise t0 für das Paket Px) und den Zeitpunkt verfolgen, zu dem das Paket vollständig empfangen ist (wie beispielsweise t1 für das Paket Px).
  • 3 zeigt, wie das Paket Px von einem Server zu einem Client gesendet wird. Das Paket P hat eine Größe in Bits von PS. Die Gleichung zum Berechnen der Bandbreite (bw) lautet:
    Figure 00090001
  • Dieses Verfahren funktioniert in der Theorie, aber ungünstigerweise ist es in der Praxis nicht anwendbar. Lediglich die Hardware weiß, wann ein Paket anfänglich empfangen wird. Dementsprechend weiß lediglich die Hardware, wann der Zeitpunkt t0 ist.
  • Die anderen Kommunikationsschichten (wie beispielsweise die Transportschicht und die Anwendungsschicht) können nur den Zeitpunkt erfassen, zu dem das Paket vollständig durch die Hardware empfangen ist. Dies geschieht zu dem Zeitpunkt, wenn die Hardware das Paket zu ihnen nach oben weiterleitet. Dieser Abschlusszeitpunkt für das Paket Px ist t1. Es ist nicht möglich, die Bandbreite zu berechnen, wenn man lediglich einen Zeitpunkt kennt.
  • Paketpaar.
  • Es wird ein Verfahren mit der Bezeichnung Paketpaar-Verfahren angewendet, um diese Probleme in asynchronen Netzwerken zu überwinden. Mit dem Paketpaar-Verfahren werden zwei identische Pakete im Back-to-Back-Verfahren gesendet. Der Server sendet ein Paketpaar, und zwar eins unmittelbar nach dem anderen. Beide Pakete sind miteinander identisch; dementsprechend weisen sie dieselbe Größe (PS) auf. Die Bandbreite wird bestimmt, indem die Paketgröße durch die Zeitdifferenz beim Empfang eines jeden Paketes dividiert wird.
  • Jedes Paket besitzt spezifische messbare Eigenschaften.
  • Insbesondere umfassen diese Eigenschaften seine Paketgröße (PS) und den gemessenen Zeitpunkt, zu dem solch ein Paket ankommt (beispielsweise t0-3 in 3). Einige Eigenschaften (wie beispielsweise die Paketgröße) können eher spezifiziert als gemessen werden, aber wenn dies gewünscht wird, können sie auch gemessen werden.
  • Wie dies in 3 dargestellt ist, sendet der Server das Paket Px. Die Hardware des Client beginnt mit dem Empfangen des Paketes zum Zeitpunkt t0. Wenn der Empfang des Paketes zum Zeitpunkt t1 abgeschlossen ist, leitet die Hardware das Paket nach oben durch die Kommunikationsschichten. Schließlich wird es durch die Zielschicht empfangen (beispielsweise die Anwendungsschicht), wahrscheinlich zum Zeitpunkt t1. Nachdem der Server das Paket Px sendet (das zum Zeitpunkt tb abgeschlossen ist), sendet er unverzüglich das Paket Py zum Zeitpunkt tc. Es ist wichtig, dass entweder 1) absolut keine messbare Verzögerung zwischen den Zeitpunkten tb und auftritt oder 2) eine Verzögerung mit einer bekannten Länge zwischen den Zeitpunkten tb und tc auftritt. Hierin wird im Sinne einer leichter verständlichen Beschreibung angenommen, dass keine messbare Verzögerung zwischen den Zeitpunkten tb und tb auftritt.
  • Die Hardware des Client beginnt mit dem Empfang von dem Paket Py zum Zeitpunkt t2. Wenn der Empfang des Paketes zum Zeitpunkt t3 abgeschlossen ist, leitet die Hardware das Paket nach oben durch die Kommunikationsschichten weiter. Schließlich wird es wahrscheinlich zum Zeitpunkt t3 durch die Zielschicht (beispielsweise die Anwendungsschicht) empfangen.
  • 3 zeigt keine Verzögerung zwischen dem Zeitpunkt t1 (dem Zeitpunkt des Abschlusses des Empfangs des Paketes Px) und dem Zeitpunkt t2 (dem Zeitpunkt, zu dem der Empfang des Paketes Py beginnt). Theoretisch wird dies immer dann der Fall sein, wenn die Pakete Px und Py unter identischen Bedingungen gesendet werden. In der Praxis ist dies oftmals der Fall, da das Paket Py unmittelbar nach dem Paket Px gesen det wird.
  • Unter Verwendung des Paketpaar-Verfahrens lautet die Gleichung zum Berechnen der Bandbreite (bw) wie folgt:
    Figure 00110001
  • Dieses Verfahren funktioniert sowohl in der Theorie als auch in der Praxis. Es funktioniert jedoch nur über einem Netzwerk gut, das relativ statisch ist.
  • So sei in 1 beispielsweise angenommen, dass das Netzwerk lediglich aus dem Server 20; den Routern 32, 34 und 36; einem spezifischen ISP von ISPs 80; und einem Client 90 gebildet ist. Des Weiteren sei angenommen, dass die Verbindungen zwischen jedem Knoten in diesem statischen Netzwerk fixiert sind, und eine konsistente Bandbreite aufweisen. In dieser Situation stellen die Paketpaar-Verfahren eine genaue und effektive Messung der Bandbreite bereit.
  • Probleme infolge des Verwendens des Paketpaar-Verfahrens über dem Internet. Über einem dynamischen Netzwerk, wie beispielsweise dem Internet, funktioniert das Paketpaar-Verfahren jedoch nicht gut. Ein dynamisches Netzwerk ist ein Netzwerk, bei dem eine Möglichkeit besteht, dass ein Paket auf eine Art und Weise gehandlet wird, die sich von einem früheren Paket unterscheidet, oder die sich von einem späteren Paket unterscheidet. Insbesondere bestehen Probleme mit einem TCP-Netzwerk.
  • 1 illustriert Beispiele des Handlens von Differenzen, die in einem dynamischen Netzwerk vorgefunden werden. Es sei angenommen, dass sich alle Pakete von dem Server zu dem Client bewegen (in 1 von der linken Seite zu der rechten Seite). Es sei angenommen, dass die Pakete 60 bis 68 im Back-to-Back-Verfahren durch den Server 20 zu dem Client 90 gesendet wurden.
  • Hierbei ist zu beachten, dass, wie dies in 1 illustriert ist, die Pakete unterschiedliche Routen aufweisen können. Zusätzlich dazu können einige Routen die Paketübertragung signifikant verzögern. Dies ist vor allem dann der Fall, wenn das Paket über eine scheinbar ungewohnte Route (aber nicht notwendigerweise eine ungewöhnliche), wie beispielsweise die drahtlose Übertragung, Übersee über ein Unterwasserkabel, über Satellitenübertragung (wie dies durch die Satellitenschüsseln 46 und 50 und den Satelliten 48 dargestellt wird) und so weiter gesendet wird. Ein Router (wie beispielsweise der Router 42) kann ein oder mehrere Pakete (wie beispielsweise die Pakete 63 und 64) mehr als ein anderer verzögern, indem er sie vorrübergehend in einem Speicher (wie beispielsweise dem Pufferspeicher 43) speichert.
  • Verfahren zur Mehrfachmessung von Paketen
  • Um diese Probleme zu überwinden, verwenden herkömmliche Verfahren zur automatischen Bandbreitenmessung mehrere Pakete. Ein Server sendet mehrere (viel mehr als zwei) Pakete und berechnet die Geschwindigkeit eines jeden Pakets. Gewöhnliche Erfahrung zur Bandbreitenmessung zeigt an, dass, um genaue Messungen zu erhalten, mehrere Paare von Paketen wiederholt über mehrere Sekunden bis zu mehreren Minuten hinweg gesendet werden müssen. Hierin wird dieses Verfahren als „Mehrfachpaket-Verfahren" bezeichnet, um es von dem voranstehend beschriebenen „Paketpaar-Verfahren" zu unterscheiden.
  • Typischerweise wird die endgültige Bandbreite bestimmt, indem der Durchschnitt der vielen Bandbreitenmessungen gesucht wird. Durch dieses Mitteln werden Abweichungen bei den Verzögerungen für ein jedes Paket geglättet; jedoch wird dadurch kein Ausgleich für die Paketkompression während des Sendens geschaffen. Eine von zwei extrem unkorrekten Messungen verzerrt den Durchschnitt.
  • Ungünstigerweise nimmt dieses Verfahren relativ zu dem Warten des Benutzers zwischen dem Klicken und der Medien-Präsentation eine lange Zeit in Anspruch. Eine lange Zeit können fünf Sekunden bis zu mehreren Minuten in Abhängigkeit von den Daten und der Situation sein. Solch eine Verzögerung erhöht den Ärgernisfaktor für den Benutzer, der gern die Medien-Präsentation sehen möchte. Dies ist keine akzeptable Verzögerung. Da unter Verwendung von herkömmlichen Verfahren keine anderen Optionen zur Verfügung stehen, sieht sich der Benutzer dazu gezwungen, diese Verzögerungen hinzunehmen.
  • Keine existierende automatische Bandbreitenmessung kann nahezu unverzüglich die Bandbreite über dem Internet unter Verwendung eines Paketpaares messen. Keine existierende automatische Bandbreitenmessung kann solche Messungen in der Anwendungsschicht durchführen. Auf diese Weise verhindert sie das Modifizieren des Betriebssystems. Keine existierende automatische Bandbreitenmessung widmet sich der Verzerrung der Messungen, die durch die Paketkompression verursacht wird.
  • Implementierung der Transportschicht
  • Die herkömmlichen Ansätze modifizieren gewöhnlicherweise den Betriebsystemkern des Betriebsystems (OS, Operating System), um die automatische Bandbreitenmessung durchzuführen. Genauer gesagt bedeutet dies, dass diese Ansätze die Transportschicht des OSI-Modells modifizieren und dass eine solche Schicht oftmals innerhalb des Betriebsystemkerns des Betriebsystems (OS, Operating System) vorhanden ist. Im Allgemeinen sind solche Modifizierungen nicht wünschenswert, da es im Allgemeinen weniger stabil und kostenintensiver ist, als die Implementierungen, die das Betriebsystem (OS, Operating System) nicht modifizieren.
  • Wenn diese Ansätze innerhalb einer Anwendung implementiert werden könnten (dementsprechend in der Anwendungsschicht), wären solche Modifizierungen nicht möglich. Es misst jedoch kein existierender Paketpaar-Ansatz die Bandbreite in der Anwendungsschicht. Dies rührt daher, dass die Anwendungsschicht eine geringere Steuerung über die Einzelheiten der tatsächlichen Kommunikation über das Netzwerk besitzt. Insbesondere verfügt eine Anwendung sogar über noch weniger Steuerung, wenn sie das TOP (Transmission Control Protocol, Übertragungskontrollprotokoll) verwendet, als sie haben würde, wenn sie das UDP (User Datagram Protocol, Benutzerdatengramm-Protokoll) verwenden würde.
  • Die Protokolle TOP und UDP werden im späteren Verlauf der Beschreibung in dem Abschnitt mit dem Titel „TCP und UDP" diskutiert. Die Transport- und Anwendungsschichten sind Teil der sieben Schichten des im späteren Verlauf der Beschreibung diskutierten OSI-Modells.
  • TCP und UDP
  • Über das Internet (und andere Netzwerke) werden Pakete von Daten für gewöhnlich über TOP-(Transmission Control Protocol) oder UDP-(User Datagram Protocol)Protokolle gesendet. Das TOP ist das universal akzeptierte und das im gesamten Internet verstandene Protokoll.
  • Das TOP-(Transmission Control Protocol)Protokoll ist eines der wichtigsten Protokolle in TCP/IP-Netzwerken (wie beispielsweise dem Internet). Obgleich das IP-Protokoll lediglich mit Paketen zu tun hat, befähigt das TOP-Protokoll zwei Hosts dazu, eine Verbindung herzustellen und Ströme von Daten auszutauschen. Das TOP-Protokoll garantiert die Übermittlung von Daten und garantiert, dass Pakete in derselben Reihenfolge übermittelt werden, in der sie gesendet worden sind.
  • Das UDP-(User Datagram Protocol)Protokoll ist ein verbindungsloses Protokoll (wie das TOP-Protokoll), das ganz oben in IP-Netzwerken läuft. Im Gegensatz zu TCP/IP, stellt UDP/IP sehr wenige Fehlerbehebungsdienste zur Verfügung und bietet stattdessen einen direkten Weg zum Senden und Empfangen von Paketen (das heißt, ein Datengramm) über ein IP-Netzwerk.
  • Ein Paket ist ein großes Stück an Daten, die durch das Anwendungsprogramm bereitgestellt werden. Das UDP sendet typischerweise ein einzelnes „Anwendungslevel-Paket" als ein einzelnes UDP-Paket. Das TCP kann jedoch ein einzelnes Anwendungslevel-Paket in eine Vielzahl von kleineren TCP-„Segmenten” unterteilen, von denen jedes als ein separates „Paket" in der TCP-Schicht behandelt wird. Der Nagle-Algorithmus (im späteren Verlauf der Beschreibung diskutiert) führt das Gegenteil durch: Er nimmt eine Vielzahl von kleinen Anwendungspaketen und kombiniert diese zu einem einzelnen größeren TCP-Segment.
  • Nagle-Algorithmus für TCP/IP
  • Der Nagle-Algorithmus wurde entwickelt, um Probleme mit kleinen TCP-Segmenten (mitunter als „Tinygram" bezeichnet) in langsamen Netzwerken zu vermeiden. Der Algorithmus besagt, dass eine TCP/IP-Verbindung lediglich ein ausstehendes Tinygram haben kann, das noch nicht bestätigt worden ist. Die definierte Größe eines Tinygrams hängt von der Implementierung ab. Im Allgemeinen ist sie jedoch eine Größe kleiner als die Größe von typischen TCP-Segmenten.
  • Der Nagle-Algorithmus besagt, dass unter einigen Umständen eine Warteperiode von ungefähr 200 Millisekunden (ms) vorhanden sein wird, bevor die Daten gesendet werden. Der Nagle-Algorithmus verwendet die folgenden Parameter für den Verkehr über einen Switch.
    • – Segmentgröße = MTU oder tcp_mssdflt oder MTU-Pfad-Erfassungswert.
    • – TCP-Fenstergröße = kleiner oder Werte von tc_sendspace und tcp_recspace
    • – Datengröße = Anwendungsdaten-Puffergröße
  • Im Folgenden werden die spezifischen Regeln dargelegt, die durch den Nagle-Algorithmus verwendet werden, wenn die Entscheidung dahingehend getroffen wird, wann Daten zu senden sind:
    • – Wenn ein Paket gleich groß oder größer als die Segmentgröße (oder MTU) ist, und das TCP-Fenster nicht voll ist, wird unverzüglich ein Puffer mit MTU-Größe gesendet.
    • – Wenn sich die Schnittstelle im Leerlauf befindet, oder das Flag TCP_NODELAY (TCP_KEINE VERZÖGERUNG) eingestellt ist, und das TCP-Fenster nicht voll ist, wird der Puffer unverzüglich gesendet.
    • – Wenn weniger als die Hälfte des TCP-Fensters in ausstehenden Daten ist, wird der Puffer unverzüglich gesendet.
    • – Wenn weniger als ein Puffer einer Segmentgröße gesendet wird, und wenn mehr als die Hälfte des Fensters ausstehend ist, und wenn das Flag TCP_NODELAY nicht eingestellt ist, wird bis zu 200 ms auf mehr Daten gewartet, bevor der Puffer gesendet wird.
  • Durch das Einstellen des Flags TCP_NODELAY an der Anschlussbuchse der sendenden Seite wird der Nagle-Algorithmus deaktiviert. Es werden sich alle Daten, die gesendet worden ist, unverzüglich entfernen, ungeachtet der Tatsache, welche Datengröße sie aufweisen.
  • Der Nagle-Algorithmus kann im generischen Sinne als die „Tinygram-Puffer"-Funktion bezeichnet werden, da er Tinygrams puffert.
  • Slow-Start-Algorithmus für TCP
  • In TCP-Netzwerken, die die Funktion „Slow Start" nicht verwenden, starten die Einrichtungen eine Verbindung mit einem Sender, indem eine Vielzahl von Paketen in ein Netzwerk injiziert wird, so lange, bis die Fenstergröße, die durch einen Empfänger angekündigt wird, erreicht wird. Während dies akzeptabel ist, wenn sich die zwei Hosts in demselben LAN (Local Area Network) befinden, können Probleme dann auftreten, wenn Router und langsamere Verbindungen zwischen dem Sender und dem Empfänger vorhanden sind. Da eine Wahrscheinlichkeit dahingehend besteht, dass einige der Router die Pakete in eine Warteschlange bringen werden, ist es möglich, dass solch ein Router keinen ausreichenden Speicherplatz aufweist, um diese Pakete in die Warteschlange zu bringen. Dementsprechend wird dieser einfache Ansatz aller Wahrscheinlichkeit nach den Datendurchsatz einer TCP-Verbindung drastisch reduzieren.
  • Der Algorithmus, der dies verhindert, wird „Slow Start" genannt. Er funktioniert dadurch, dass er überwacht, dass die Rate, mit der neue Pakete in das Netzwerk injiziert werden, die Rate ist, mit der die Bestätigungen durch das andere Ende zurückgesendet werden.
  • Der Slow-Start-Algorithmus addiert ein weiteres Fenster zu dem TCP-Protokoll des Senders hinzu: ein Überlastungsfenster (congestion window), genannt „cwnd". Wenn eine neue Verbindung mit einem Host in einem anderen Netzwerk hergestellt wird, wird das Überlastungsfenster mit einem Paket initialisiert. Jedes Mal, wenn eine Bestätigung (das heißt, eine „ACK") empfangen wird, wird das Überlastungsfenster um ein Paket erhöht. Der Sender kann bis zu dem Minimum des „Überlastungsfensters" und des „angekündigten Fensters" senden. Das „Überlastungsfenster" ist eine Ablaufsteuerung, die durch den Sender auferlegt wird. Das „angekündigte Fenster" ist eine Ablaufsteuerung, die durch den Empfänger auferlegt wird. Das Erstgenannte basiert auf der Einschätzung des Senders zu der empfangenen Netzwerküberlastung. Und das letztgenannte basiert auf der Menge an verfügbaren Pufferplatz in dem Empfänger für diese Verbindung.
  • Der Sender startet durch Senden eines Pakets und Warten auf seine Bestätigung (ACK). Wenn die Bestätigung ACK empfangen wird, wird das Überlastungsfenster von eins auf zwei erhöht. Nun können zwei Pakete gesendet werden. Wenn jedes dieser zwei Pakete bestätigt wird, wird das Überlastungsfenster auf vier erhöht. Und so weiter und so fort.
  • Es wird der Punkt erreicht, an dem die Kapazität der Verbindung zwischen dem Sender und dem Empfänger möglicherweise erreicht ist. An diesem Punkt beginnt ein zwischengeschalteter Router mit dem Entfernen der Pakete. Dadurch wird dem Sender angezeigt, dass das Überlastungsfenster seine Grenze erreicht hat.
  • Proxy
  • Ein Proxy (das heißt, ein Proxy-Server) ist eine Einrichtung, die zwischen einer Client-Anwendung (wie beispielsweise ein Webbrowser) und einem RealServer angeordnet ist. Im Allgemeinen fängt er sämtliche Anforderungen an den und von dem RealServer ab, um zu sehen, ob er diese Anforderungen selbst erfüllen kann. Wenn dies nicht der Fall ist, leitet der Proxy-Server die Anforderung an den RealServer weiter. Ein Proxy wird für zwei Hauptzwecke verwendet: zum Verbessern der Leistung und zum Filtern von Anforderungen.
  • Da der Proxy-Server oftmals ein zentraler Punkt der Kommunikation für eine Anzahl von Clients ist, unternimmt er den Versuch, seine Kommunikationen so effizient wie möglich zu gestalten. Dementsprechend implementiert er typischerweise eine Form des Nagle-Algorithmus. Jede neue TCP-Verbindung startet mit einem Slow Start. Wenn ein Proxy zwischen dem Client und dem Server angeordnet ist, wird der Slow Start in den folgenden zwei Verbindungen durchgeführt: Server-Proxy und Proxy-Client. Dementsprechend fügt der Proxy neue Komplexität zu dem Paketpaar-Experiment hinzu.
  • Zusammenfassung des Hintergrunds der Technik
  • Eine Anwendung (in der Anwendungsschicht) besitzt eine begrenzte Steuerung über das Handling von TCP-Paketen. Auf diese Weise vermeiden die herkömmlichen Bandbreitenmessungen TCP-Bandbreitenmessungen in der Anwendungsschicht.
  • Die Integrität des Paketpaar-Verfahrens erfordert, dass wenigstens zwei Pakete im Back-to-Back-Verfahren gesendet werden. Diese Pakete kommen jedoch möglicherweise infolge der Auswirkungen des Nagle-Algorithmus und des Slow-Start-Algorithmus nicht in einem solchen Verfahren an. Dies stellt ein Hindernis für die Verwendung des Paketpaar-Verfahrens zur Bandbreitenmessung über ein TCP-Netzwerk dar.
  • Weiterer Stand der Technik
  • K. Lai et al. beschreibt in dem Dokument „Measuring Bandwidth", Infocom 99, der 18th Annual Coint Conference of the IEEE Computer and Communications Societies Proceedings, 21.–25. März 1999, Seiten 235 bis 245, einige aktuelle Bandbreitenmessungsverfahren und schlägt das Verwenden eines Paketfensters, um sich schnell an Bandbreitenänderungen anzupassen, das Verwenden nur des Empfängers für Paketpaare, um Genauigkeit mit einfacher Anwendung zu kombinieren, sowie ein potentielles Bandbreitenfiltern vor, um die Genauigkeit zu erhöhen.
  • D.A. Hages et al. untersucht in dem Dokument „Impact of Flow Control an Quality of Service Driver Packet Scheduling Disciplines", in Control Applications, 1999, in den Proceedings der 1999 IEEE International Conference an Kohala Couast, 22.–27. August 1999, Seiten 1454 bis 1459, die Interaktion zwischen einer fensterbasierten Ablaufsteu erung und einer vor Kurzem vorgeschlagenen Paketzeitplan-Disziplin, die für Echtzeitdienste ausgelegt ist, vor.
  • Zusammenfassung
  • Es ist die Aufgabe der Erfindung, ein bewährtes Verfahren zum Erleichtern der schnellen Paketkommunikation oder Bandbreitenmessung zwischen Einheiten in einem Netzwerk und eine entsprechende Vorrichtung sowie ein Datensignal bereitzustellen.
  • Diese Aufgabe wird durch die Erfindung, wie diese in den unabhängigen Ansprüchen beansprucht wird, erfüllt.
  • Bevorzugte Ausführungsformen sind in den unabhängigen Ansprüchen spezifiziert.
  • Die schnelle dynamische Messung der Bandbreite in einer TCP-Netzwerkumgebung verwendet ein einzelnes Paar von Paketen, um die Bandbreite zwischen den zwei Einheiten in einem Netzwerk (wie beispielsweise dem Internet) zu berechnen. Diese Berechnung basiert auf dem Paketpaar-Verfahren. Diese Bandbreitenmessung ist extrem schnell.
  • Die Kommunikationseinrichtungen können die Paketpaare auf ihrer Strecke durch das Netzwerk verzögern. Insbesondere heißt dies, dass TCP-Netzwerke zwei Algorithmen aufweisen, die ausgelegt sind, um einige Pakete mit dem Ziel zu verzögern, den Gesamtdatendurchsatz des Netzwerkes zu erhöhen. Diese Algorithmen verzögern jedoch effektiv ein Paketpaar, das ausgelegt ist, um die Bandbreite zu messen. Dementsprechend verzerren sie die Messung. Diese Algorithmen sind der „Nagle"-Algorithmus und der „Slow Start"-Algorithmus.
  • Die schnelle dynamische Messung der Bandbreite implementiert Gegenmaßnahmen, um die Verzögerung, die durch die Algorithmen auferlegt wird, zu überwinden. Solche Gegenmaßnahmen beinhalten das Deaktivieren der Anwendung des Nagle-Algorithmus; das Minimieren des Pufferns von Paketen durch Senden eines „Push"-Paketes direkt nach dem Paketpaar; und das Verhindern des Slow-Start-Algorithmus durch Versehen mit einem „Dummy"-Paket.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 illustriert eine typische öffentliche Netzwerkumgebung (wie beispielsweise das Internet) und das Routing sowie die Verzögerung von Datenpaketen, die von einem Server zu einem Client gesendet werden.
  • 2 ist ein ausgeschnittener Teil von einer Webseite. Der ausgeschnittene Teil zeigt eine Benutzerschnittstelle, die einem Benutzer einen Mechanismus zum Auswählen der Bandbreite zur Verfügung stellt. Dies zeigt ein herkömmliches Verfahren zum Bestimmen der Bandbreite.
  • 3 zeigt ein Paketpaar (das von einem Server zu einem Client gesendet wird), das als Graph in der Zeitdomaine dargestellt wird. Dies zeigt eine herkömmliche Implementierung eines Paketpaar-Verfahrens, um die Bandbreite zu messen.
  • 4 illustriert ebenfalls eine öffentliche Netzwerkumgebung (wie beispielsweise das Internet). Dies zeigt ein Paketpaar, das im Back-to-Back-Verfahren gesendet wird.
  • 5 ist ein Ablaufplan, der die Methodik einer Implementierung der exemplarischen Bandbreitenmesseinrichtung darstellt.
  • Die 5a, 5b und 5c sind ein Ablaufplan, der die spezifischen Implementierungsdetails der Methodik von verschiedenen Aspekten der exemplarischen Bandbreitenmesseinrichtung darstellt.
  • 6 ist ein Beispiel einer Computer-Betriebsumgebung, die in der Lage ist, die exemplarische Bandbreitenmesseinrichtung zu implementieren.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die folgende Beschreibung legt eine spezifische Ausführungsform der schnellen dynamischen Bandbreitenmessung in einer TCP-Netzwerkumgebung dar, die die Elemente beinhaltet, die in den angehängten Ansprüchen definiert sind. Diese Ausführungsform wird in speziellen Einzelheiten beschrieben, so dass die vorgeschriebene schriftliche Beschreibung, die Praxis-Befähigung sowie die Anforderung an die beste Art und Weise erzielt werden. Dennoch ist es nicht beabsichtigt, dass die Beschreibung selbst den Umfang dieses Patentes beschränkt. Vielmehr sind die Erfinder zu der Feststellung gelangt, dass die beanspruchte schnelle dynamische Bandbreitenmessung in einer TOP-Netzwerkumgebung auch auf andere Art und Weise ausgeführt werden kann, so beispielsweise zusammen mit anderen aktuell verfügbaren oder zukünftigen Technologien.
  • Selbst wenn die Verwendung mit einem TCP-Netzwerk (wie beispielsweise dem Internet) erfolgt, ist eine exemplarische schnelle dynamische Messung der Bandbreite in einer TCP-Netzwerkumgebung (das heißt, eine „Bandbreiten-Messeinrichtung" oder eine „bw-Messeinrichtung" (bw-meter)), die hierin beschrieben wird, schnell und robust. Die exemplarische Bandbreiten-Messeinrichtung implementiert ein Verfahren mit einer niedrigen Latenz zum automatischen Messen der Netzwerkbandbreite, die zwischen zwei Einheiten in einem Kommunikationsnetzwerk verfügbar ist. Es wurde festgestellt, dass diese besonders nützlich über dem Internet (oder anderen solchen TCP-Netzwerken) ist.
  • Im Gegensatz zu den herkömmlichen Ansätzen erhält die exemplarische Bandbreiten-Messeinrichtung (bw-meter) eine Bandbreitenmessung nach bester Anstrengung mit der geringstmöglichen Verzögerung, selbst unter schwierigen Netzwerkbedingungen. Die exemplarische Bandbreiten-Messeinrichtung (bw-meter) ist eingerichtet, um einen vernünftigen Datendurchsatz in weniger als einer Sekunde in den meisten existierenden TCP-Netzwerken, einschließlich LANs, Kabel, DSL und Modemverbindungen bereitzustellen.
  • Darüber hinaus ist die exemplarische Bandbreiten-Messeinrichtung (bw-meter) in der Anwendungsschicht implementiert. Obgleich die exemplarische Bandbreiten-Messeinrichtung (bw-meter) auch in anderen Schichten implementiert sein kann, ist die hierin beschriebene Bandbreiten-Messeinrichtung (bw-meter) in der Anwendungsschicht implementiert. Insbesondere kann sie teilweise durch einen Webbrowser oder einen Mediaplayer implementiert sein.
  • Paketpaar-Verfahren
  • Die exemplarische Bandbreiten-Messeinrichtung (bw-meter) verwendet das gut bewährte Paketpaar-Verfahren, das voranstehend beschrieben wurde, und in 3 dargestellt ist. Die exemplarische Bandbreiten-Messeinrichtung (bw-meter) verwendet die Paketpaar-Gleichung (Gleichung 2), die voranstehend beschrieben wurde, um die de facto maximale Bandbreite zwischen zwei Einheiten in einem Kommunikationsnetzwerk (wie beispielsweise dem Internet) zu berechnen.
  • Im Gegensatz zu existierenden Verfahren zur automatischen Bandbreitenmessung, die eine Vielzahl von Paketen verwenden, verwendet die exemplarische Bandbreiten-Messeinrichtung (bw-meter) ein einzelnes Paketpaar zum Messen der Bandbreite über das Internet. Mit der exemplarischen Bandbreiten-Messeinrichtung (bw-meter) werden die Bandbreitenmessungen und die Bandbreitenberechnungen „nahezu unverzüglich" durchgeführt, da lediglich ein einziges Paar von Messungspaketen gesendet wird. Der Begriff „nahezu unverzüglich" bedeutet, dass die Bandbreite bestimmt wird, so bald das Paketpaar bei dem Client eintrifft.
  • Die exemplarische Bandbreiten-Messeinrichtung (bw-meter) überwindet die Nachteile und Beschränkungen des Verwendens des Paketpaar-Verfahrens über einem TCP-Netzwerk (wie beispielsweise dem Internet) durch Implementieren von Gegenmaßnahmen zu dem Nagle-Algorithmus und dem Slow Start-Algorithmus.
  • Paketpaar-Übermittlung.
  • Ein Paket des Paketpaar-Verfahrens der exemplarischen Bandbreiten-Messeinrichtung (bw-meter) bewegt sich von der sendenden Einheit (beispielsweise dem Server) zu der empfangenden Einheit (beispielsweise dem Client). 4 zeigt ein Beispiel einer solchen Übermittlung. 4 illustriert eine Umgebung, die der Umgebung, die in 1 dargestellt ist, ähnlich ist.
  • 4 illustriert ein Beispiel einer typischen Internet-(TCP-Netzwerk)Konfiguration. Sie beinhaltet einen Server (wie beispielsweise einen Medienserver 220), der mit dem Internet 230 gekoppelt ist. Der Server beinhaltet typischerweise einen oder mehrere physikalische Servercomputer 222 mit einer oder mehreren physikalischen Speichervorrichtungen und/oder Datenbanken 224. Auf der anderen Seite der Internetübertragung befindet sich ein Client 290, der über einen Proxyserver 284, bei dem es sich um Internet Service Provider (ISPs) 280 handelt, verbunden ist.
  • Die Wolke 230 ist mit Internet gekennzeichnet, es gilt jedoch zu verstehen, dass diese Wolke den Abschnitt des Internets darstellt, der lediglich das beinhaltet, was darin illustriert ist. Im Inneren der Wolke sind Router, Übertragungsleitungen, Verbindungen und andere Vorrichtungen, die in den meisten Fällen erfolgreich Daten zwischen Clients und Servern übertragen, vorhanden. Im Inneren der exemplarischen Internetwolke sind die Router 232 bis 244; zwei Satellitenschüsseln 246 und 250; und ein Satellit 248 vorhanden. Diese stellen die möglichen Pfade dar, die ein Datenpaket auf seinem Weg zwischen dem Server und dem Client nehmen kann.
  • 4 zeigt die aufeinanderfolgenden Pakete 260 und 262 des Paares, das in Übereinstimmung mit der exemplarischen Bandbreiten-Messeinrichtung (bw-meter) gesendet wird. Der Server 220 sendet das Paket 262 unverzüglich nach dem Paket 260.
  • Der Proxyserver 284 ist über die Verbindung 282 mit den Internet Service Providern (ISPs) 280 verbunden. Der Client 290 und die Clients 292 verwenden den Proxyserver, um mit dem Internet zu kommunizieren.
  • Bandbreitenmessung in der Anwendungsschicht
  • Herkömmliche Ansätze zur Bandbreitenmessung sind typischerweise in der Transportschicht oder einer anderen Schicht unterhalb des Anwendungslevels implementiert. Die exemplarische Bandbreiten-Messeinrichtung (bw-meter) ist jedoch in der Anwendungsschicht implementiert. Es bestehen wenigstens zwei wichtige Vorteile infolge solch eines Ansatzes in der Anwendungsschicht für die Bandbreitenmessung in TCP-Paketpaaren.
  • Zuerst besteht Abneigung gegenüber einer Paketpaar-Implementierung in einer unteren Schicht (wie beispielsweise der Transportschicht). Es erfordert Änderungen in dem Betriebssystemkern des Betriebsystems (OS, Operating System), und es ist nicht für eine erhöhte Anwendung auf einfache Weise ausgelegt. Im Gegensatz zu einer Implementierung in der Anwendungsschicht, zieht eine Implementierung eines Paketpaars in einer unteren Schicht größere Kosten bei der Entwicklung, dem anfänglichen Einsatz, der zukünftigen Entwicklung und dem zukünftigen Einsatz nach sich.
  • Zweitens würde laut einer Studie lediglich ein Viertel der TCP-Verbindungen, die untersucht worden sind, von einer Bandbreitenmessung profitieren. Dementsprechend ist es nicht kosteneffektiv, eine solche Bandbreitenmessung in einem unteren Level zu implementieren, wenn diese nicht mehr als ein Viertel der Verbindungen nutzt. Dementsprechend sollte solch eine Bandbreitenmessung am besten in die Anwendungen integriert werden, die Anwendungen sind, die die Bandbreitenmessung auch benötigen. Anwendungen sind viel einfacher (und weniger teuer) erhöhend einzusetzen als ein neuer Betriebsystemkern.
  • Es gilt im Allgemeinen als sicher anzunehmen, dass der Zeittakt eines Empfängers ausreichend genau ist, und dass die IP-Datengramme (das heißt, die Pakete) unbeschadet in Richtung nach oben durch den Netzwerkstapel des Empfängers (OSI-Schichten) zu der Anwendung weitergeleitet werden. Die zweite Annahme gilt in dem Fall einiger Anwendungen nicht als sicher, wie beispielsweise bei Software der American Online Version 4 (AOLv4) und früheren Versionen, die sich so verhalten hat, als ob sie Daten lediglich zu der Anwendung auf einem Zeitgeber übermittelt hat. Auf diese Weise wurde eine künstliche Zeittakt-Granularität auf die Messungen auferlegt. Günstigerweise hat es den Anschein, dass die Version Fünf und spätere Versionen der AOL-Software solche Unzulänglichkeiten nicht mehr aufweisen.
  • Bedinqungen für effektive Messungen unter Verwendung des Paketpaar-Verfahrens
  • Wenn das Paketpaar-Verfahren zum Messen der Bandbreite verwendet wird, müssen zwei Bedingungen erfüllt werden, um eine gute Messung zu erzielen.
  • Die erste Bedingung besteht darin, dass die Pakete im Back-to-Back-Verfahren gesendet werde müssen. Hierein wird dies als die „Back-to-Back"-Bedingung bezeichnet. Wenn Pakete nicht im Back-to-Back-Verfahren gesendet werden, werden die Zeitmessungen zwischen ihnen verzerrt. Sowohl der Nagle-Algorithmus als auch der Slow-Start-Algorithmus gefährden diese Bedingung. Beide verzögern möglicherweise die Übermittlung des zweiten Messungspakets. Für die Bandbreitenmessung unter Verwendung eines Paketpaar-Verfahrens ist jegliche vermeidbare Verzögerung zwischen den Pakete untolerierbar, da sie die Messung der tatsächlichen Bandbreite verzerrt.
  • Die zweite Bedingung besteht darin, dass die Größe der Pakete erhalten werden muss. Das bedeutet, dass die Pakete nicht mit anderen Paketen kombiniert werden dürfen. Hierin wird dies als die Bedingung der „Größen-Erhaltung" bezeichnet. Der Nagle-Algorithmus gefährdet diese Bedingung.
  • Der Nagle-Algorithmus kann eine Vielzahl von Paketen der Anwendungsschicht dazu veranlassen, als ein einzelnes TOP-Segment gesendet zu werden. Dementsprechend sendet die TCP-Schicht, obgleich die Anwendung möglicherweise der Annahme ist, dass sie zwei oder mehr Pakete sendet, in der Tat nur ein einzelnes Paket.
  • Gegenmaßnahmen zu dem Nagle-Algorithmus
  • Ein interessantes Verhalten des Nagle-Algorithmus besteht darin, dass für kleine Pakete lediglich eine Bestätigung ACK ausstehend ist. Auf diese Weise kann ein Paar aus kleinen Paketen mit dem Nagle-Algorithmus nicht im Back-to-Back-Verfahren gesendet werden. Der Nagle-Algorithmus kombiniert kleine Pakete, die auf eine ACK warten. Dadurch wird sowohl die Bedingung des „Back-to-Back" als auch die Bedingung der „Größen-Erhaltung" beeinträchtigt.
  • Die exemplarische Bandbreiten-Messeinrichtung ruft eine Gegenmaßnahme in Aktion, um die Tendenz des Nagle-Allgorithmus, diese zwei Bedingungen zu beeinträchtigen, zu überwinden. Eine Einheit (wie beispielsweise der Server 220 in 4) sendet eine Anweisung, die Kommunikationseinrichtungen (wie beispielsweise die Router 230 bis 250) dazu auffordert, den Nagle-Algorithmus zu deaktivieren. Im Allgemeinen leitet der Server einen Befehl, der im generischen Sinne Befehl „Verzögerung-deaktivieren" genannt wird, weiter. Genauer gesagt bedeutet dies, dass der Server TCP_NODELAY an SetSockOpt() weiterleitet.
  • So lange wie das Überlastungsfenster geöffnet ist, verhindert das Deaktivieren des Nagle-Algorithmus, dass das TCP-Protokoll einen Versuch unternimmt, irgendwelche der Paketpaar-Pakete zu kombinieren, und das TCP wird das Paket unverzüglich in das Netzwerk schreiben.
  • Mit anderen Worten bedeutet dies, dass, wenn der Nagle-Algorithmus durch einen Befehl „Verzögerung-deaktivieren" deaktiviert ist, beide Pakete des Paketpaares ohne die Verzögerung durch die Router strömen, die durch das Sammeln durch den Nagle-Algorithmus einer Vielzahl von Paketen verursacht wird.
  • Gegenmaßnahme zum Slow-Start-Algorithmus
  • Die exemplarische Bandbreiten-Messeinrichtung (bw-meter) ruft eine Gegenmaßnahme in Aktion, um die Tendenz des Slow-Start-Algorithmus, die Bedingung des „Back-to-Back"-Verfahrens zu beeinträchtigen, zu überwinden. Dies wird dadurch erreicht, dass das Überlastungsfenster des Servers (was speziell „cwnd" genannt wird) wenigstens für drei Pakete geöffnet wird.
  • Dies wird dadurch ausgeführt, dass das Überlastungsfenster gefüllt wird („Priming"). Um das Überlastungsfenster zu füllen, sendet ein Server wenigstens ein Paket und empfängt eine Bestätigung ACK, bevor er das Paketpaar des Paketpaar-Verfahrens sendet. Dementsprechend sendet der Server wenigstens ein Füllungs-(„Priming")Paket zu dem Client, und dieses Paket wird nicht zum Berechnen der Bandbreite verwendet. Nachdem ein oder mehrere Füllungs-Pakete gesendet worden sind, sendet der Server das eigentliche Paketpaar, das zum Messen der Bandbreite verwendet wird. An diesem Punkt lässt der Slow-Start-Algorithmus wenigstens zwei Pakete nacheinander durch, ohne diese zu verzögern.
  • Der Slow-Start-Algorithmus kann vollständig verhindert werden, indem die Bandbreitenmessung zu einem späteren Zeitpunkt in der bestimmten TCP-Verbindung durchgeführt wird. Dies ist jedoch keine wünschenswerte Option, und zwar aus zwei Gründen: wegen einer zusätzlichen Verzögerung und zusätzlichem Steuerungsaufwand (Overhead), die eine fehlerhafte Messung verursachen.
  • Wenn die Messung zu einem späteren Zeitpunkt durchgeführt wird, steht eine eingebaute Verzögerung an, um darauf zu warten, dass der Slow-Start-Algorithmus abläuft. Es ist besser, keine Verzögerungen zu haben, die vermieden werden können.
  • Das Durchführen der Bandbreitenmessung zu Beginn einer TCP-Verbindung beseitigt viele Ungewissheiten, die sich im Verlauf der Verbindung ansammeln. Wenn beispielsweise die TCP-Verbindung von sowohl der Steuerung als auch dem Datentransport gemeinsam genutzt wird, ist es unmöglich, zu einem späteren Zeitpunkt in der Sitzung vorherzusagen, ob das Überlastungsfenster des Senders es ermöglichen wird, dass Pakete im Back-to-Back-Verfahren gesendet werden.
  • Gegenmaßnahmen zu Verzögerungen in einem Proxy
  • Der Nagle-Algorithmus, der in einem Proxy arbeitet, kann eine Paketpaar-Bandbreitenmessung auf ähnliche Weise verzerren. Im Allgemeinen erkennen Proxys einen Befehl „Verzögerung deaktivieren" nicht. Weder die Client- noch die Serveranwendung kann im Voraus sagen, ob die Verbindung durch einen Proxy auf der Schaltungsebene hergestellt wird.
  • Um den Nagle-Algorithmus in einem Proxy zu adressieren, wird ein großes drittes Paket nach dem Paar aus Messungspaketen gesendet. Wenn der Proxy das zweite Paket des Paketpaares hält, pusht das dritte Paket es weiter. Demzufolge wird dieses dritte Paket als das „Push"-Paket bezeichnet.
  • Zusätzlich dazu könnten in dem Proxy das erste und das zweite Paket kombiniert werden. Das Ergebnis wäre eine künstlich hohe Messung, jedoch hat die Mehrheit der Proxy-Benutzer von vornherein eine Verbindung einer hohen Bandbreite.
  • Methodologische Implementierung
  • 5 zeigt eine methodologische Implementierung der exemplarischen Bandbreiten-Messeinrichtung. Die Illustration erfolgt aus der Perspektive des Servers. In dem Block 300 wird die dynamische Bandbreitenmessung in Übereinstimmung mit der exemplarischen Bandbreiten-Messeinrichtung initiiert. Typischerweise wählt ein Benutzer eine Option auf einer Webseite aus, um eine Medien-Präsentation zu erleben. Alternativ dazu kann eine Anwendung auf dem Client solch eine Bandbreitenmessung initiieren. Solch eine Anwendung kann ein Webbrowser, ein Mediaplayer oder Ähnliches sein.
  • Im Allgemeinen sendet in dem Block 302 in 5 der Server ein Paketpaar zu dem Client, wobei ein Paket unverzüglich auf das nächste Paket folgt. Die spezifischen Implementierungsdetails in diesem Block 302 sind in den 5a, 5b und 5c dargestellt. Diese Figuren werden im Folgenden diskutiert.
  • In dem Block 306 wartet der Server auf eine Antwort von dem Client. Wenn diese nicht innerhalb der Zeitgrenze empfangen wird, kehrt der Prozess zurück, um in dem Block 302 ein weiteres Paketpaar zu senden. Obgleich dies in dem Ablaufplan nicht dargestellt ist, wird der Prozess diesen Vorgang eine gegebene Anzahl von Malen wiederholen, bevor der Prozess beendet wird und ein Fehler erzeugt wird. Wenn eine Antwort innerhalb der Zeitgrenze empfangen wird, geht der Prozess in den nächsten Block unter 308 über.
  • Die Antwort beinhaltet eine Bandbreitenmessung, die durch den Client unter Verwendung des Paketpaares, das durch den Server in dem Block 304 gesendet wurde, bestimmt wurde. Der Server extrahiert in dem Block 308 die spezifische Bandbreite aus der Antwort.
  • In dem Block 310 in 6 wählt der Server die Datei (oder den Abschnitt davon) aus, die für eine Bandbreite formatiert ist, die gleich oder geringer ist als die spezifizierte Bandbreite. In dem Block 312 sendet der Server die Datei (oder einen Abschnitt davon) zu dem Client.
  • Wenn es sich um eine Mediendatei handelt, genießt der Benutzer des Client eine Medien-Präsentation, die mit dem Abspielen sehr schnell beginnt. Darüber hinaus erfolgt das Abspielen störungsfrei und bei der höchstmöglichen Qualität mit einer gemessenen Bandbreite. Der Prozess endet in dem Block 314.
  • Gegenmaßnahme zum Nagle-Algorithmus.
  • 5a zeigt die spezifische methodologische Implementierung einer exemplarischen Bandbreiten-Messeinrichtung für die Gegenmaßnahme zu dem Nagle-Algorithmus. In dem Block 402 sendet der Server einen Befehl zum Deaktivieren der Verzögerung, um die Verwendung des Nagle-Algorithmus zu deaktivieren. In dem Block 404 sendet der Server ein Paar aus Bandbreitenmes sungs-Paketen zu dem Client. In dem Block 406 kehrt der Prozess zurück zu dem Block 306, der in 5 dargestellt ist.
  • Gegenmaßnahme zu Proxv-Verzögerungen.
  • 5b zeigt die spezifische methodologische Implementierung der exemplarischen Bandbreiten-Messeinrichtung für die Gegenmaßnahme zu den Proxy-Verzögerungen. In dem Block 412 sendet der Server ein Paar aus Bandbreitenmessungs-Paketen zu dem Client. In dem Block 414 sendet der Server ein „Push"-Paket, um das Paar aus einem beliebigen Puffer heraus zu zwingen, in dem es möglicherweise durch eine Kommunikationseinrichtung gespeichert ist. In dem Block 416 kehrt der Prozess zurück zu dem Block 306, der in 5 dargestellt ist.
  • Gegenmaßnahme zum Slow-Start-Algorithmus.
  • 5c zeigt die spezifische methodologische Implementierung der exemplarischen Bandbreiten-Messeinrichtung für die Gegenmaßnahme zu dem Slow-Start-Algorithmus. In dem Block 422 sendet der Server ein „Füllungs"-(Priming)Paket, um den Slow-Start-Algorithmus zu überwinden.
  • Dieses „Füllungs"-(Priming)Paket wird nicht für die Bandbreitenmessung verwendet. Es ermöglicht es dem Netzwerk, sich zu öffnen (das heißt, das Überlastungsfenster zu öffnen) und zwei Pakete auf ein Mal ohne Verzögerung zuzulassen. In dem Block 424 sendet der Server ein Paar aus Bandbreitenmessungs-Paketen zu dem Client. In dem Block 426 kehrt der Prozess zurück zu dem Block 306, der in 5 dargestellt ist.
  • Andere Implementierungsdetails
  • Implementierungsanwendungen.
  • Die exemplarische Bandbreiten-Messeinrichtung (bw-meter) kann durch eine beliebige Einheit implementiert werden, die auf schnelle Weise die Bandbreite zwischen zwei Einheiten in einem Netzwerk messen möchte. Insbesondere ist dies ein TCP-Netzwerk, wie beispielsweise das Internet.
  • Solch eine Einheit kann diese exemplarische Bandbreiten-Messeinrichtung (bw-meter) in der Anwendungsschicht implementieren. Beispiele von Programmmodulen eines Anwendungslevels, die diese exemplarische Bandbreiten-Messeinrichtung (bw-meter) implementieren können, ist eine Serveranwendung für Streaming-Medien auf einem Server, der entweder das Microsoft Media Server-(MMS)Protokoll oder das Real Time Streaming Protokol (RTSP) anwendet.
  • Sowohl das MMS-Protokoll als auch das RTSP-Protokoll nutzen gemeinsam sehr ähnliche grundlegende Verfahren, um die Bedingungen für eine erfolgreiche Messung unter Verwendung der exemplarischen Bandbreiten-Messeinrichtung (bw-meter) bereitzustellen. Die Implementierung der exemplarischen Bandbreiten-Messeinrichtung (bw-meter) unter Verwendung des RTSP-Protokolls erweist sich jedoch als schwieriger als solch eine Implementierung unter Verwendung des MMS-Protokolls.
  • RTSP-Paketpaar-Syntax. Eine Möglichkeit, warum das RTSP-Protokoll schwieriger ist als das MMS-Protokoll liegt darin, dass sich die drei Pakete als eine Antwort auf einen RTSP-Befehl so maskieren müssen, dass der RTSP-Parser des Client sie auch verarbeiten kann. Der RTSP-Befehl GET_PARAMETER wird verwendet, um das Paketpaar-Experiment anzufordern. Das erste Paket der Antwort beginnt mit den typischen RTSP-Antwort-Headern.
  • Im Folgenden werden Beispiele der Header für eine Paketpaar-Anforderung von dem Client dargestellt:
  • GET_PARAMETER* RTSP/1.0
    • Inhalts-Typ: Anwendung/x-rtsp-Paketpaar
    • Inhalts-Länge: 16
    • Datum: Sonntag, 02. April 2000, 22:36:18 GMT
    • CSeq: 2
    • User-Agent:WMPlayer/5.0.0.0488 guid/1 A21De80-08E7-11D4-93FE-006097B76A2E
    • Annahme-Sprache: En-US, *;q = 0,1
    • Annahme-Charset: UTF-8, *;q = 0,1
    • Zeitstempel: 1
  • Im Folgenden werden Beispiele der Header für die Paketpaar-Antwort von dem Server gezeigt:
  • RTSP/1.0 200 OK
    • Inhalts-Typ: Anwendung/x-rtsp-Paketpaar
    • Inhalts-Länge: 2048
    • Datum: Sonntag, 02. April 2000, 22:30:48 GMT
    • CSeq: 2
    • Zeitstempel: 1 0.063
    • Server: WMServer/5.0.0.0518
  • TCP-Probleme.
  • Wie dies bereits voranstehend erwähnt worden ist, muss das Überlastungsfenster zu wenigstens drei Paketen zu dem Zeitpunkt geöffnet sein, zu dem die drei Pakete von dem Server gesendet werden. Da das anfängliche Überlastungsfenster zwei beträgt, wird die Antwort DESCRIBE (BESCHREIBEN) verwendet, um das Fenster auf drei oder mehr zu öffnen. Wenn die Antwort DESCRIBE drei Pakete erfordert, bedeutet das, dass das dritte Paket auf eine ACK von dem Client warten muss, bevor es gesendet werden kann.
  • Während das TCP-Protokoll des Servers auf die ACK von entweder dem ersten oder dem zweiten der ersten zwei Pakete wartet, können, wenn der Parameter GET_PARAMETER ankommt und anschließend die Anwendung mit dem Schreiben der Antwort auf den Parameter GET_PARAMETER zu der Anschlussbuchse beginnt, die Paketpaar-Pakete mit dem dritten und letzten Paket der Antwort DESCRIBE sowie miteinander kombiniert werden. Dementsprechend sollte der Client den Parameter GET_PARAMETER solange nicht senden, bis die Antwort DESCRIBE vollständig empfangen ist.
  • Dadurch wird garantiert, dass das Überlastungsfenster in dem Server offen sein wird, wenn die Paketpaar-Pakete gesendet werden. Demzufolge werden keine Pakete kombiniert. Die Antwort DESCRIBE kann ein oder es können mehr Pakete sein, und das Überlastungsfenster wird drei oder mehr betragen, wenn das Paketpaar-Verfahren durchgeführt wird. Offensichtlich sollte kein anderer Verkehr vor dem Paketpaar auftreten.
  • Messung von Ankunftszeiten.
  • Ein Teil des Durchführens der Paketpaar-Messung der exemplarischen Bandbreiten-Messeinrichtung (bw-meter) (auf dem Anwendungslevel) besteht darin, dass die Clientanwendung die Ankunftszeit der zwei Pakete misst. Das RTSP-Protokoll stellt eine zusätzliche Herausforderung dahingehend dar, dass die Header der Antworten eine relativ lange Zeit zur Verarbeitung verglichen mit der Granularität, die für eine genaue Messung benötigt wird, in Anspruch nimmt. Dementsprechend kann der Client nicht warten, bis die Verarbeitung des Antwort-Headers herausfindet, dass es sich um eine Antwort auf eine Paketpaar-Anforderung handelt, bevor er einen Zeitstempel auf das erste Paket des Paketpaares aufbringt.
  • Der Zeitstempel muss aufgebracht werden, bevor der Client überhaupt weiß, um welche Art von Antwort es sich handelt. Wenn dementsprechend der Client eine Paketpaar-Anforderung stellt, führt er Zeitstempeln bei jedem eingehenden Befehlsantwort-Paket durch, so lange bis er das Paketpaar empfängt. Dann verlässt er diesen Vor-Zeitstempel-Modus.
  • Der Client muss immer noch den Header des ersten Paketes verarbeiten, bevor er das zweite Paket lesen kann. Dementsprechend besteht eine obere Grenze dahingehend, bis zu welcher Höhe einer geringsten Stelle („Bottleneck") gemessen werden kann, und es wird dadurch bestimmt, wie schnell der Client den RTSP-Antwort-Header verarbeiten kann. Wenn beispielsweise die Zeit, die er zur Verarbeitung des Headers benötigt, 5 ms beträgt, beträgt die maximale Geschwindigkeit, die gemessen werden kann, ungefähr 800 kb/s. Dementsprechend werden RTSP-Messungen an der Spitze nicht so gut sein wie die bei MMS, es sei denn, die Zeit, die zum Parsen der RTSP-Antwort benötigt wird, ist gering.
  • Exemplarische Computerumgebung
  • 6 illustriert ein Beispiel einer geeigneten Computerumgebung 920, in der die exemplarische Bandbreiten-Messeinrichtung implementiert werden kann.
  • Die exemplarische Computerumgebung 920 ist lediglich ein Beispiel einer geeigneten Computerumgebung, und es ist nicht beabsichtigt, dass diese irgendeine Beschränkung hinsichtlich des Umfangs der Verwendung oder der Funktionalität der exemplarischen Bandbreiten-Messeinrichtung (bw-meter) suggeriert. Des Weiteren sollte die Computerumgebung 920 auch nicht dahingehend interpretiert werden, dass sie irgendeine Abhängigkeit oder Anforderung hinsichtlich einer beliebigen oder einer Kombination aus Komponenten aufweist, die in der exemplarischen Computerumgebung 920 illustriert sind.
  • Die exemplarische Bandbreiten-Messeinrichtung (bw-meter) kann mit einer Vielzahl von Universal- oder Spezialcomputersystemumgebungen oder Computersystemkonfigurationen betrieben werden. Beispiele von gut bekannten Computersystemen, Computerumgebungen und/oder Computerkonfigurationen, die für die Verwendung mit der exemplarischen Bandbreiten-Messeinrichtung (bw-meter) geeignet sein können, umfassen, sind aber nicht beschränkt auf, Personalcomputer, Servercomputer, Thin Clients, Thick Clients, tragbare oder Laptopvorrichtungen, Multiprozessorsysteme, auf Mikroprozessoren basierende Systeme, Set-Top-Boxen, programmierbare Unterhaltungselektronikgeräte, drahtlose Telefone, drahtlose Kommunikationseinrichtungen, Netzwerk-PCs, Minicomputer, Mainframe-Computer, verteilte Computerumgebungen, die beliebige der voranstehenden Systeme oder Einrichtungen und Ähnliches umfassen.
  • Die exemplarische Bandbreiten-Messeinrichtung (bw-meter) kann in dem allgemeinen Kontext von durch Computer ausführbaren Befehlen beschrieben werden, wie beispielsweise Programmmodulen, die durch einen Computer ausgeführt werden. Im Allgemeinen umfassen Programmmodule Routinen, Programme, Objekte, Komponenten, Datenstrukturen und so weiter, die bestimmte Aufgaben ausführen oder bestimmte abstrakte Datentypen implementieren. Die exemplarische Bandbreiten-Messeinrichtung (bw-meter) kann darüber hinaus auch in verteilten Computerumgebungen praktiziert werden, in denen Aufgaben durch entfernte Verarbeitungsvorrichtungen, die über ein Kommunikationsnetzwerk verbunden sind, ausgeführt werden. In einer verteilten Computerumgebung können Programmmodule sowohl in lokalen als auch entfernten Computerspeichermedien einschließlich Speichervorrichtungen vorhanden sein.
  • Wie dies in 6 dargestellt ist, beinhaltet die Computerumgebung 920 eine Universalcomputervorrichtung in Form eines Computers 930. Die Komponenten des Computers 920 können einen oder mehrere Prozessoren oder Verarbeitungseinheiten 932, einen Systemspeicher 934 und einen Bus 936 umfassen, der verschiedene Systemkomponenten einschließlich des Systemspeichers 934 mit dem Prozessor 932 koppelt, jedoch sind die Komponenten nicht auf die Genannten beschränkt.
  • Der Bus 936 repräsentiert einen beliebigen von mehreren Typen von Busstrukturen, einschließlich eines Speicherbuses oder eines Speicherkontrollers, eines Peripheriebuses, eines beschleunigten Grafikanschlusses, und eines Prozessors oder eines lokalen Buses, der beliebige einer Reihe verschiedener Busarchitekturen verwendet. Im Sinne eines Beispiels und nicht im restriktiven Sinne zu erachten, umfassen solche Architekturen einen ISA-(Industry Standard Architecture)Bus, einen MCA-(Micro Channel Architecture)Bus, einen EISA-(Enhanced ISA)Bus, einen lokalen VESA-(Video Electronics Standards Association)Bus und einen PCI-(Peripheral Component Interconnect) Bus, auch als Mezzanine-Bus bekannt.
  • Der Computer 930 enthält typischerweise eine Reihe verschiedener computerlesbarer Medien. Solche Medien können beliebige verfügbare Medien sein, auf die durch den Computer 930 zugegriffen werden kann, und sie umfassen sowohl flüchtige als auch nicht-flüchtige Medien, entnehmbare und nicht-entnehmbare Medien.
  • In 6 beinhaltet der Systemspeicher computerlesbare Medien in Form von flüchtigen Speichern, wie beispielsweise eines Direktzugriffspeichers (RAM) 940 und/oder nicht flüchtigen Speichern, wie beispielsweise eines Festwertspeichers (ROM) 938. Ein Basiseingabe/Ausgabesystem (RIOS) 942, das die Basisroutinen enthält, die das Übertragen von Informationen zwischen Elementen innerhalb des Computers 930, wie zum Beispiel während des Hochfahrens, unterstützen, ist typischerweise in dem Festwertspeicher ROM 938 gespeichert. Der Direktzugriffsspeicher RAM 940 enthält typischerweise Daten und/oder Programmmodule, auf die durch den Prozessor 932 unmittelbar zugegriffen werden kann und/oder die gegenwärtig durch den Prozessor 932 verarbeitet werden.
  • Der Computer 930 kann darüber hinaus auch andere entnehmbare/nicht-entnehmbare, flüchtige/nicht-flüchtige Computerspeichermedien umfassen. Lediglich im Sinne eines Beispiels illustriert 6 ein Festplattenlaufwerk 944, das von nicht-entnehmbaren, nicht-flüchtigen Magnetmedien (nicht dargestellt und typischerweise als „Festplatte" bezeichnet) liest und auf diese schreibt, ein Magnetplattenlaufwerk 946, das von einer entnehmbaren, nicht-flüchtigen Magnetplatte 948 (beispielsweise eine „Diskette") liest und auf diese schreibt und ein optisches Plattenlaufwerk 950, das von einer entnehmbaren, nicht-flüchtigen optischen Platte 952, wie beispielsweise einer CD-ROM, einer DVD-ROM oder anderen optischen Medien liest oder auf diese schreibt. Das Festplattenlaufwerk 944, das Magnetplattenlaufwerk 946 und das optische Plattenlaufwerk 950 sind jeweils über eine oder mehrere entnehmbare Speicherschnittstellen 954 mit dem Bus 936 verbunden.
  • Die Laufwerke und ihre assoziierten computerlesbaren Medien gewährleisten die nicht flüchtige Speicherung von computerlesbaren Befehlen, Datenstrukturen, Programmmodulen und anderen Daten für den Computer 930. Obgleich die hierin beschriebene exemplarische Umgebung eine Festplatte, eine entnehmbare Magnetplatte 948 und eine entnehmbare optische Platte 952 verwendet, sollte den Personen mit der gewöhnlichen Erfahrung auf dem Gebiet der Technik offensichtlich sein, dass auch andere Typen von computerlesbaren Medien, die Daten speichern können, auf die durch einen Computer zugegriffen werden kann, wie beispielsweise Magnetkassetten, Flash-Speicherkarten, digitale Videoplatten, Direktzugriffspeicher (RAMs) Festwertspeicher (ROMs) und Ähnliche ebenfalls in der exemplarischen Betriebsumgebung verwendet werden können.
  • Es kann eine Anzahl von Programmmodulen auf der Festplatte, der Magnetplatte 948, der optischen Platte 952, dem ROM 938 oder dem RAM 940 gespeichert werden, einschließlich aber nicht beschränkend auf, ein Betriebssystem 958, ein oder mehrere Anwendungsprogramme 960, andere Programmmodule 962 und Programmdaten 964.
  • Ein Benutzer kann über Eingabegeräte, wie beispielsweise eine Tastatur 966 und ein Zeigegerät 968 (wie beispielsweise eine Maus), Befehle und Informationen in den Computer 930 eingeben. Andere Eingabegeräte (nicht dargestellt) können ein Mikrophon, einen Joystick, ein Gamepad, eine Satellitenschüssel, einen Scanner oder Ähnliches umfassen. Diese und andere Eingabegeräte sind oftmals über eine Benutzereingabeschnittstelle 970, die mit dem Bus 936 gekoppelt ist, mit der Verarbeitungseinheit 932 verbunden, sie können jedoch auch durch andere Schnittstellen und Busstrukturen, wie beispielsweise einen Parallelanschluss, einen Game-Port oder einen Universalserienbus (USB) verbunden sein.
  • Ein Monitor 972 oder ein anderer Typ von Anzeigevorrichtung ist ebenfalls über eine Schnittstelle, wie beispielsweise einen Videoadapter 974 mit dem Bus 936 verbunden. Zusätzlich zu dem Monitor beinhalten Personalcomputer typischerweise auch andere Peripherie-Ausgabegeräte (nicht dargestellt), wie beispielsweise Lautsprecher und Drucker, die über eine Ausgabe-Peripherieschnittstelle 975 verbunden sein können.
  • Der Computer 930 kann in einer vernetzten Umgebung unter Verwendung von logischen Verbindungen zu einem oder mehreren entfernten Computern, wie beispielsweise einem entfernten Computer 982 betrieben werden. Der entfernte Computer 982 kann viele oder alle der Elemente und Leistungsmerkmale, die hierin in Bezug auf den Computer beschrieben werden, enthalten.
  • Die in 6 dargestellten logischen Verbindungen umfassen ein lokales Netz (LAN, Local Area Network) 977 und ein Großraumnetzwerk (WAN) 979. Solche Netzwerkumgebungen werden weit verbreitet in Büros, unternehmensweiten Computernetzwerken, Intranets und dem Internet eingesetzt.
  • Wenn der Computer 930 in einer LAN-Netzwerkumgebung verwendet wird, ist er über eine Netzwerkschnittstelle oder einen Adapter 986 mit dem LAN 977 verbunden. Wenn der Computer 930 in einer WAN-Netzwerkumgebung verwendet wird, enthält der Computer 930 typischerweise ein Modem 978 oder eine andere Vorrichtung zum Herstellen von Kommunikationen über das Großraumnetzwerk WAN 979. Das Modem 978, das ein externes oder ein internes Modem sein kann, kann über die Benutzereingabeschnittstelle 970 oder einen anderen geeigneten Mechanismus mit dem Bus 939 verbunden sein.
  • In 6 ist eine spezifische Implementierung eines Großraumnetzes WAN über das Internet dargestellt. Über das Internet enthält der Computer 930 typischerweise ein Modem 978 oder eine andere Vorrichtung zum Herstellen von Kommunikationen über das Internet 980. Das Modem 978, das ein externes oder ein internes Modem sein kann, ist über die Benutzerschnittstelle 970 mit dem Bus 939 verbunden.
  • In einer Netzwerkumgebung können Programmmodule, die in Bezug auf den Computer 930 dargestellt sind, beziehungsweise Abschnitte davon, in einer entfernten Speichervorrichtung gespeichert sein. Im Sinne eines Beispiels und nicht im restriktiven Sinne zu erachten, illustriert 6 entfernte Anwendungsprogramme 989, wie diese in einer Speichervorrichtung des entfernten Computers 982 installiert sind. Es ist offensichtlich, dass die Netzwerkverbindungen, die dargestellt und beschrieben sind, lediglich exemplarischen Charakter aufweisen und dass auch andere Vorrichtungen zum Herstellen einer Kommunikationsverbindung zwischen den Computern verwendet werden können.
  • Exemplarische Betriebsumgebung
  • 6 illustriert ein Beispiel einer geeigneten Betriebsumgebung 920, in der die exemplarische Bandbreiten-Messeinrichtung (bw-meter) implementiert werden kann. Genauer gesagt bedeutet dies, dass die exemplarische Bandbreiten-Messeinrichtung (bw-meter) durch ein beliebiges Programm 960 bis 962 oder das Betriebssystem 958, die in 6 dargestellt sind, implementiert wird.
  • Die Betriebsumgebung ist lediglich ein Beispiel einer geeigneten Betriebsumgebung und es ist nicht beabsichtigt, dass sie eine Beschränkung hinsichtlich des Umfangs der Verwendung oder der Funktionalität der hierin beschriebenen Bandbreiten-Messeinrichtung (bw-meter) suggeriert. Andere gut bekannte Computersystem, Computerumgebungen und/oder Computerkonfigurationen, die für die Verwendung mit der Bandbreiten-Messeinrichtung (bw-meter) geeignet sind, umfassen, sind aber nicht beschränkt auf, Personalcomputer, Servercomputer, tragbare oder Laptopvorrichtungen, Multiprozessorsysteme, auf Mikroprozessoren basierende Systeme, programmierbare Unterhaltungselektronikgeräte, Netzwerk-PCs, Minicomputer, Mainframe-Computer, verteilte Computerumgebungen, die beliebige der voranstehenden Systeme oder Vorrichtungen enthalten, oder Ähnliche.
  • Durch Computer ausführbare Befehle
  • Eine Implementierung der exemplarischen Bandbreiten-Messeinrichtung (bw-meter) kann in dem allgemeinen Kontext von durch Computer ausführbaren Befehlen, wie beispielsweise Programmmodulen, die durch einen oder mehrere Computer oder andere Vorrichtungen ausgeführt werden, beschrieben werden. Im Allgemeinen umfassen Programmmodule Routinen, Programme, Objekte, Komponenten, Datenstrukturen und so weiter, die bestimmte Aufgaben ausführen oder bestimmte abstrakte Datentypen implementieren. Typischerweise kann die Funktionalität der Programmmodule in verschiedenen Ausführungsformen kombiniert oder verteilt werden, wie dies gewünscht ist.
  • Computerlesbare Medien
  • Eine Implementierung der exemplarischen Bandbreiten-Messeinrichtung (bw-meter) kann in einer Form von computerlesbaren Medien gespeichert und von ihr übertragen werden. Computerlesbare Medien können jegliche verfügbare Medien sein, auf die durch einen Computer zugegriffen werden kann. Im Sinne eines Beispiels und nicht im restriktiven Sinne zu erachten, können computerlesbare Medien Computerspeichermedien und Kommunikationsmedien umfassen.
  • Computerspeichermedien umfassen flüchtige und nicht flüchtige, entnehmbare und nicht entnehmbare Medien, die in einem beliebigen Verfahren oder einer Technologie zum Speichern von Informationen, wie beispielsweise computerlesbare Befehlen, Datenstrukturen, Programmmodulen oder anderen Daten implementiert sind. Computerspeichermedien umfassen, sind aber nicht beschränkt auf, RAM, ROM, EEPROM, Flash-Speicher oder andere Speichertechnologien, CD-ROM, Digital Versstile Disks (DVDs) oder andere optische Speicher, Magnetkassetten, Magnetband, Magnetplattenspeicher oder andere magnetische Speichervorrichtungen oder ein beliebiges anderes Medium, das zum Speichern der gewünschten Informationen verwendet werden kann und auf das durch eine Computer zugegriffen werden kann.
  • Kommunikationsmedien verkörpern typischerweise computerlesbare Befehle, Datenstrukturen, Programmmodule oder andere Daten in einem modulierten Datensignal wie beispielsweise einer Trägerwelle oder einem anderen Transportmechanismus und schließen beliebige Informationsübermittlungsmedien ein. Der Begriff „moduliertes Datensignal" bezieht sich auf ein Signal, bei dem eine oder mehrere seiner Eigenschaften auf eine solche Weise eingestellt oder geändert werden, dass Informationen in dem Signal codiert werden. Im Sinne eines Beispiels und nicht im restriktiven Sinne zu erachten, umfassen Kommunikationsmedien verdrahtete Medien wie beispielsweise ein verdrahtetes Netzwerk oder ein direkt verdrahtete Verbindung, und drahtlose Medien, wie beispielsweise akustische, RF-, Infrarot und andere drahtlose Medien. Kombinationen von beliebigen der voranstehend Erwähnten fallen ebenfalls in den Umfang der computerlesbaren Medien.
  • Schlussfolgerung
  • Obgleich die schnelle dynamische Messung von Bandbreite in einer TCP-Netzwerkumgebung mittels einer Sprache beschrieben worden ist, die sich spezifisch auf strukturelle Leistungsmerkmale und/oder methodologische Schritte bezieht, gilt es zu beachten, dass die schnelle dynamische Messung von Bandbreite in einer TCP-Netzwerkumgebung, die in den angehängten Ansprüchen definiert ist, nicht notwendigerweise auf die spezifischen Leistungsmerkmale oder Schritte, die hierin beschrieben worden sind, beschränkt ist. Vielmehr werden die spezifischen Leistungsmerkmale und Schritte als bevorzugte Formen des Implementierens der beanspruchten schnellen dynamischen Messung von Bandbreite in einer TCP-Netzwerkumgebung offenbart.

Claims (13)

  1. Verfahren, das schnelle Paket-Kommunikation oder Bandbreitenmessung zwischen Einheiten in einem Netzwerk über eine Kommunikationseinrichtung ermöglicht, die den Nagle-Algorithmus anwendet, wobei das Verfahren umfasst: Senden (412) eines Paketpaars (260, 262) von einer sendenden Einheit (220) zu einer empfangenden Einheit (290, 292); und Senden (414) wenigstens eines "Push"-Paketes nach dem Senden des Paketpaars, um eine Sendeverzögerung zwischen den Paketen in dem Paar abzuwenden, wobei das "Push"-Paket eine Paketgröße hat, die dem Parameter "Segmentgröße", der durch den Nagle-Algorithmus definiert wird, gleich ist oder größer ist als dieser, um das Senden des Paketpaars durch die Kommunikationseinrichtung zu erzwingen und die Sendeverzögerung zu vermeiden, die durch Paket-Puffern durch den Nagle-Algorithmus in der Kommunikationseinrichtung in dem Netzwerk verursacht wird.
  2. Verfahren nach Anspruch 1, wobei das Paketpaar im Back-to-Back-Verfahren gesendete Pakete enthält.
  3. Verfahren nach Anspruch 1 oder 2, wobei das Paketpaar Bandbreitenmessungs-Pakete zum Messen von Bandbreite zwischen der sendenden Einheit und der empfangenden Einheit umfasst.
  4. Verfahren nach einem der Ansprüche 1 oder 3, wobei die Kommunikationseinrichtung ein Proxy-Server ist.
  5. Verfahren nach einem der Ansprüche 1 bis 4, wobei das Netzwerk TOP ist.
  6. Verfahren nach einem der Ansprüche 1 bis 5, wobei das "Push"-Paket von der sendenden Einheit gesendet wird.
  7. Verfahren nach einem der Ansprüche 1 bis 6, wobei die Kommunikationseinrichtung eine andere Einrichtung als die sendende Einheit oder die empfangende Einheit umfasst.
  8. Verfahren nach einem der Ansprüche 1 bis 7, wobei das Paket-Puffern, das die Sendeverzögerung bewirkt, durch einen Puffervorgang gekennzeichnet ist, in dem ein oder mehrere der Pakete in dem Paketpaar in einen Paketpuffer gepuffert werden, und die Sendeverzögerung ein Ergebnis des Vorgangs des Paket-Pufferns ist.
  9. Verfahren nach einem der Ansprüche 1 bis 8, das des Weiteren Empfangen einer Bandbreitenberechnung umfasst, die auf Messungen bezüglich des Paketpaars basiert.
  10. Computerlesbares Medium, das durch Computer ausführbare Befehle aufweist, die, wenn sie von einem Computer ausgeführt werden, das Verfahren nach einem der Ansprüche 1 bis 9 durchführen.
  11. Vorrichtung, die umfasst: einen Prozessor (932); eine Einrichtung zum Vermeiden von Sendeverzögerung, die auf dem Prozessor ausgeführt werden kann, um: ein Paketpaar von einer sendenden Einheit zu einer empfangenden Einheit über eine Kommunikationseinrichtung zu senden, die den Nagle-Algorithmus anwendet; und anschließend wenigstens ein "Push"-Paket zu senden, um eine Sendeverzögerung zwischen den Paketen in dem Paketpaar abzuwenden, wobei das "Push"-Paket eine Paketgröße hat, die dem Parameter "Segmentgröße", der durch den Nagle-Algorithmus definiert wird, gleich ist oder größer ist als dieser, um das Senden des Paketpaars durch die Kommunikationseinrichtung zu erzwingen und die Sendeverzögerung zu vermeiden, die durch Paket-Puffern durch den Nagle-Algorithmus in der Kommunikationseinrichtung in dem Netzwerk verursacht wird.
  12. Vorrichtung nach Anspruch 11, wobei die Einrichtung zum Verhindern von Sendeverzögerung des Weiteren so ausgeführt werden kann, dass sie das Verfahren nach einem der Ansprüche 2 bis 9 durchführt.
  13. Datensignal, das Datenfelder aufweist, die darin codiert sind, und das über einen Kommunikationskanal durch eine Kommunikationseinrichtung gesendet wird, die dem Nagle-Algorithmus anwendet, wobei das Datensignal umfasst: ein erstes Feld, das ein erstes Bandbreitenmessungs-Paket eines Bandbreitenmessungs-Paketpaars enthält; ein zweites Feld, das ein zweites Bandbreitenmessungs-Paket des Bandbreitenmessungs-Paketpaars enthält; und ein drittes Feld, das auf das zweite Feld folgt und ein "Push"-Paket enthält, das Minimierung von Sendeverzögerung zwischen dem ersten und dem zweiten Paket ermöglicht, wobei das "Push"-Paket eine Paketgröße hat, die dem Parameter "Segmentgröße", der durch den Nagle-Algorithmus definiert wird, gleich ist oder größer ist als dieser, um das Senden des ersten und des zweiten Paketes durch die Kommunikationseinrichtung zu erzwingen und die Sendeverzögerung zu vermeiden, die durch Paket-Puffern durch den Nagle-Algorithmus in der Kommunikationseinrichtung über den Kommunikationskanal verursacht wird.
DE60133324T 2000-08-09 2001-08-02 Schubsdatenpaket zur Minimierung von Datenpufferungsverzögerung Expired - Lifetime DE60133324T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US635988 2000-08-09
US09/635,988 US7266613B1 (en) 2000-08-09 2000-08-09 Fast dynamic measurement of bandwidth in a TCP network environment

Publications (2)

Publication Number Publication Date
DE60133324D1 DE60133324D1 (de) 2008-04-30
DE60133324T2 true DE60133324T2 (de) 2009-04-09

Family

ID=24549933

Family Applications (4)

Application Number Title Priority Date Filing Date
DE60134793T Expired - Lifetime DE60134793D1 (de) 2000-08-09 2001-08-02 Vorbereitungsdatenpaket zur Vermeidung von Übertragungsverzögerung
DE60134701T Expired - Lifetime DE60134701D1 (de) 2000-08-09 2001-08-02 Schnelle dynamische Messung der Bandbreite in einem TCP-Netzwerk
DE60133324T Expired - Lifetime DE60133324T2 (de) 2000-08-09 2001-08-02 Schubsdatenpaket zur Minimierung von Datenpufferungsverzögerung
DE60141782T Expired - Lifetime DE60141782D1 (de) 2000-08-09 2001-08-02 Vorbereitungsdatenpaket zur Vermeidung von Übertragungsverzögerung

Family Applications Before (2)

Application Number Title Priority Date Filing Date
DE60134793T Expired - Lifetime DE60134793D1 (de) 2000-08-09 2001-08-02 Vorbereitungsdatenpaket zur Vermeidung von Übertragungsverzögerung
DE60134701T Expired - Lifetime DE60134701D1 (de) 2000-08-09 2001-08-02 Schnelle dynamische Messung der Bandbreite in einem TCP-Netzwerk

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE60141782T Expired - Lifetime DE60141782D1 (de) 2000-08-09 2001-08-02 Vorbereitungsdatenpaket zur Vermeidung von Übertragungsverzögerung

Country Status (5)

Country Link
US (5) US7266613B1 (de)
EP (4) EP1912393B1 (de)
JP (1) JP4806141B2 (de)
AT (4) ATE400947T1 (de)
DE (4) DE60134793D1 (de)

Families Citing this family (94)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7266613B1 (en) * 2000-08-09 2007-09-04 Microsoft Corporation Fast dynamic measurement of bandwidth in a TCP network environment
US7353289B2 (en) 2000-11-06 2008-04-01 Telecommunication Systems, Inc. System for an open architecture development platform with centralized synchronization
US7150045B2 (en) * 2000-12-14 2006-12-12 Widevine Technologies, Inc. Method and apparatus for protection of electronic media
US7606909B1 (en) * 2001-02-20 2009-10-20 Michael Ely Method and apparatus for a business contact center
US20020169880A1 (en) * 2001-04-19 2002-11-14 Koninklijke Philips Electronics N.V. Method and device for robust real-time estimation of the bottleneck bandwidth in the internet
US7376967B1 (en) 2002-01-14 2008-05-20 F5 Networks, Inc. Method and system for performing asynchronous cryptographic operations
US7979528B2 (en) * 2002-03-27 2011-07-12 Radvision Ltd. System and method for traversing firewalls, NATs, and proxies with rich media communications and other application protocols
EP1497955B1 (de) * 2002-04-19 2010-06-09 Telefonaktiebolaget LM Ericsson (publ) Verfahren und einrichtungen für adaptive proxy-bearbeitung von flüssen
US7525923B2 (en) * 2002-06-28 2009-04-28 Ntt Docomo, Inc. Catprobe
US7729268B2 (en) 2002-06-28 2010-06-01 Ntt Docomo, Inc. Method and apparatus for quality of service determination
US7802008B2 (en) * 2002-08-12 2010-09-21 Matsushita Electric Industrial Co., Ltd. Quality of service management in network gateways
US7430755B1 (en) 2002-09-03 2008-09-30 Fs Networks, Inc. Method and system for providing persistence in a secure network access
US7221685B2 (en) 2002-12-13 2007-05-22 Sbc Properties, L.P. Method and system relating to bandwidth utilization
US7650421B2 (en) * 2002-12-30 2010-01-19 Microsoft Corporation Adaptable accelerated content streaming
US7274740B2 (en) 2003-06-25 2007-09-25 Sharp Laboratories Of America, Inc. Wireless video transmission system
US7107420B2 (en) * 2003-08-29 2006-09-12 International Business Machines Corporation Apparatus and method to adjust data transfer rate
US9325998B2 (en) 2003-09-30 2016-04-26 Sharp Laboratories Of America, Inc. Wireless video transmission system
US9614772B1 (en) 2003-10-20 2017-04-04 F5 Networks, Inc. System and method for directing network traffic in tunneling applications
US8018850B2 (en) 2004-02-23 2011-09-13 Sharp Laboratories Of America, Inc. Wireless video transmission system
US20080259813A1 (en) * 2004-03-09 2008-10-23 Johnny Mikhael Matta Method and apparatus for quality of service determination
JP4433286B2 (ja) * 2004-03-25 2010-03-17 ソニー株式会社 送信装置および方法、受信装置および方法、記録媒体、並びにプログラム
US7925775B2 (en) * 2004-04-07 2011-04-12 Sony Corporation TCP congestion control based on bandwidth estimation techniques
US20060049234A1 (en) * 2004-05-21 2006-03-09 Flak Richard A Friction stirring and its application to drill bits, oil field and mining tools, and components in other industrial applications
US20050265235A1 (en) * 2004-05-27 2005-12-01 International Business Machines Corporation Method, computer program product, and data processing system for improving transaction-oriented client-server application performance
US7080173B2 (en) 2004-05-27 2006-07-18 Microsoft Corporation Reducing information reception delays
US8024483B1 (en) 2004-10-01 2011-09-20 F5 Networks, Inc. Selective compression for network connections
US7784076B2 (en) 2004-10-30 2010-08-24 Sharp Laboratories Of America, Inc. Sender-side bandwidth estimation for video transmission with receiver packet buffer
US8356327B2 (en) 2004-10-30 2013-01-15 Sharp Laboratories Of America, Inc. Wireless video transmission system
US7797723B2 (en) 2004-10-30 2010-09-14 Sharp Laboratories Of America, Inc. Packet scheduling for video transmission with sender queue control
US7440419B2 (en) * 2005-01-27 2008-10-21 International Business Machines Corporation Methods for detecting nagling on a TCP network connection
US7526531B2 (en) * 2005-01-27 2009-04-28 International Business Machines Corporation Methods for detecting outbound nagling on a TCP network connection
US7545749B2 (en) * 2005-02-15 2009-06-09 Microsoft Corporation High-accuracy packet pair for network bottleneck bandwidth measurement
KR20060100512A (ko) * 2005-03-17 2006-09-21 삼성전자주식회사 전송제어 프로토콜 기반의 네트워크에서 평균 대역폭 추정방법 및 시스템
US8418233B1 (en) 2005-07-29 2013-04-09 F5 Networks, Inc. Rule based extensible authentication
US8533308B1 (en) 2005-08-12 2013-09-10 F5 Networks, Inc. Network traffic management through protocol-configurable transaction processing
US8621078B1 (en) 2005-08-15 2013-12-31 F5 Networks, Inc. Certificate selection for virtual host servers
GB2429593A (en) 2005-08-26 2007-02-28 Electrosonic Ltd Data compressing using a wavelet compression scheme
US8065733B2 (en) * 2005-09-23 2011-11-22 Google, Inc. Method for evolving detectors to detect malign behavior in an artificial immune system
WO2007038245A2 (en) 2005-09-23 2007-04-05 Widevine Technologies, Inc. Method for evolving detectors to detect malign behavior in an artificial immune system
US9544602B2 (en) 2005-12-30 2017-01-10 Sharp Laboratories Of America, Inc. Wireless video transmission system
US7873065B1 (en) * 2006-02-01 2011-01-18 F5 Networks, Inc. Selectively enabling network packet concatenation based on metrics
US8565088B1 (en) 2006-02-01 2013-10-22 F5 Networks, Inc. Selectively enabling packet concatenation based on a transaction boundary
US7765307B1 (en) * 2006-02-28 2010-07-27 Symantec Operating Corporation Bulk network transmissions using multiple connections primed to optimize transfer parameters
US8375421B1 (en) 2006-03-02 2013-02-12 F5 Networks, Inc. Enabling a virtual meeting room through a firewall on a network
US8572219B1 (en) 2006-03-02 2013-10-29 F5 Networks, Inc. Selective tunneling based on a client configuration and request
US8782393B1 (en) 2006-03-23 2014-07-15 F5 Networks, Inc. Accessing SSL connection data by a third-party
US7652994B2 (en) 2006-03-31 2010-01-26 Sharp Laboratories Of America, Inc. Accelerated media coding for robust low-delay video streaming over time-varying and bandwidth limited channels
FR2900017B1 (fr) * 2006-04-12 2008-10-31 Arteris Sa Systeme d'interconnexions de blocs fonctionnels externes sur puce muni d'un unique protocole parametrable de communication
FR2901437B1 (fr) * 2006-05-16 2008-08-08 Arteris Sa Procede de realisation d'un circuit de synchronisation de donnees echangees de maniere asynchrone entre deux blocs synchrones, et circuit de synchronisation elabore a partir d'un tel procede
FR2902957B1 (fr) * 2006-06-23 2008-09-12 Arteris Sa Systeme et procede de gestions de messages transmis dans un reseau d'interconnexions
FR2904445B1 (fr) * 2006-07-26 2008-10-10 Arteris Sa Systeme de gestion de messages transmis dans un reseau d'interconnexions sur puce
US8861597B2 (en) 2006-09-18 2014-10-14 Sharp Laboratories Of America, Inc. Distributed channel time allocation for video streaming over wireless networks
EP2084864A1 (de) * 2006-10-24 2009-08-05 Medianet Innovations A/S Verfahren und system zur firewall-freundlichen echtzeit-kommunikation
US7652993B2 (en) 2006-11-03 2010-01-26 Sharp Laboratories Of America, Inc. Multi-stream pro-active rate adaptation for robust video transmission
CN101188601B (zh) * 2006-11-15 2011-03-16 中兴通讯股份有限公司 一种多媒体数据快速发送和接收的方法
GB2446195B (en) * 2007-02-01 2011-07-27 Wecomm Ltd Data transmission
US9106606B1 (en) 2007-02-05 2015-08-11 F5 Networks, Inc. Method, intermediate device and computer program code for maintaining persistency
US8139487B2 (en) * 2007-02-28 2012-03-20 Microsoft Corporation Strategies for selecting a format for data transmission based on measured bandwidth
US8171135B2 (en) * 2007-07-12 2012-05-01 Viasat, Inc. Accumulator for prefetch abort
US7782794B2 (en) * 2007-07-12 2010-08-24 Viasat, Inc. Methods and systems for bandwidth measurement techniques
US8549099B2 (en) * 2007-07-12 2013-10-01 Viasat, Inc. Methods and systems for javascript parsing
US20090016222A1 (en) * 2007-07-12 2009-01-15 Viasat, Inc. Methods and systems for implementing time-slice flow control
US8966053B2 (en) * 2007-07-12 2015-02-24 Viasat, Inc. Methods and systems for performing a prefetch abort operation for network acceleration
US20100146415A1 (en) * 2007-07-12 2010-06-10 Viasat, Inc. Dns prefetch
US8245287B2 (en) 2007-10-01 2012-08-14 Viasat, Inc. Server message block (SMB) security signatures seamless session switch
US8743284B2 (en) * 2007-10-08 2014-06-03 Motorola Mobility Llc Synchronizing remote audio with fixed video
US9654328B2 (en) 2007-10-15 2017-05-16 Viasat, Inc. Methods and systems for implementing a cache model in a prefetching system
CN101316157B (zh) * 2008-01-17 2010-12-22 上海交通大学 基于浮点窗口增量因子的自适应包长方法
JP2009231857A (ja) 2008-03-19 2009-10-08 Sony Corp 通信制御装置、通信制御方法および通信制御プログラム
US8325800B2 (en) 2008-05-07 2012-12-04 Microsoft Corporation Encoding streaming media as a high bit rate layer, a low bit rate layer, and one or more intermediate bit rate layers
US8379851B2 (en) 2008-05-12 2013-02-19 Microsoft Corporation Optimized client side rate control and indexed file layout for streaming media
US7925774B2 (en) 2008-05-30 2011-04-12 Microsoft Corporation Media streaming using an index file
US9832069B1 (en) 2008-05-30 2017-11-28 F5 Networks, Inc. Persistence based on server response in an IP multimedia subsystem (IMS)
US9130846B1 (en) 2008-08-27 2015-09-08 F5 Networks, Inc. Exposed control components for customizable load balancing and persistence
US8265140B2 (en) 2008-09-30 2012-09-11 Microsoft Corporation Fine-grained client-side control of scalable media delivery
BRPI0919932A8 (pt) 2008-10-24 2018-02-06 Novartis Ag Pirrolina-carbóxi-lisina gerada biossinteticamente, bem como processo para preparar método para derivatizar uma proteína
US20100180082A1 (en) * 2009-01-12 2010-07-15 Viasat, Inc. Methods and systems for implementing url masking
US8966374B1 (en) * 2009-03-30 2015-02-24 Glance Networks, Inc. Method and apparatus for enabling participants to assume control over a presentation in a remote viewing session
US8639836B2 (en) * 2009-06-29 2014-01-28 International Business Machines Corporation Smart nagling in a TCP connection
US8274886B2 (en) * 2009-10-28 2012-09-25 At&T Intellectual Property I, L.P. Inferring TCP initial congestion window
US8700892B2 (en) 2010-03-19 2014-04-15 F5 Networks, Inc. Proxy SSL authentication in split SSL for client-side proxy agent resources with content insertion
US8879571B2 (en) 2011-11-01 2014-11-04 Hewlett-Packard Development Company, L.P. Delays based on packet sizes
WO2013091180A1 (zh) * 2011-12-21 2013-06-27 华为技术有限公司 文件初始传输速率的确定方法、装置和系统
US9386128B2 (en) * 2012-03-23 2016-07-05 Qualcomm Incorporated Delay based active queue management for uplink traffic in user equipment
KR102197248B1 (ko) 2012-07-19 2020-12-31 글랜스 네트웍스, 인크 다른 형태의 정보 공유를 통한 코브라우징의 통합
RU2530663C2 (ru) * 2012-11-16 2014-10-10 Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы" Способ передачи данных в цифровых сетях передачи данных по протоколу тср/ip через нттр
US9148379B1 (en) * 2013-01-09 2015-09-29 “Intermind” société à responsabilité limitée Method and system for prioritizing audio traffic in IP networks
CN105075202B (zh) 2013-03-28 2019-07-12 英国电讯有限公司 用于在分组网络中处理分组的方法、节点和分组网络
CN105207828A (zh) * 2014-05-29 2015-12-30 国基电子(上海)有限公司 路由器及其测量上行频宽的方法
EP3332522B8 (de) 2015-08-06 2019-07-31 British Telecommunications public limited company Datenpaketnetzwerk
US10645016B2 (en) 2015-08-06 2020-05-05 British Telecommunications Public Limited Company Data packet network
US9992252B2 (en) * 2015-09-29 2018-06-05 Rgb Systems, Inc. Method and apparatus for adaptively compressing streaming video
US11223689B1 (en) 2018-01-05 2022-01-11 F5 Networks, Inc. Methods for multipath transmission control protocol (MPTCP) based session migration and devices thereof
US11044350B1 (en) * 2018-02-07 2021-06-22 F5 Networks, Inc. Methods for dynamically managing utilization of Nagle's algorithm in transmission control protocol (TCP) connections and devices thereof

Family Cites Families (98)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US236902A (en) * 1881-01-25 Hugh a
US605943A (en) * 1898-06-21 Balanced valve
US3101A (en) * 1843-05-26 Ltjthbr jones
US238902A (en) * 1881-03-15 Geoege m
US47899A (en) * 1865-05-23 Improved tool for opening boxes
US18799A (en) * 1857-12-08 Billiard-table cushion
US48448A (en) * 1865-06-27 Improved heel-shave
US90027A (en) * 1869-05-11 Improvement in lumber-driers
US49817A (en) * 1865-09-05 Improvement in grain-registers
US236912A (en) * 1881-01-25 Moses b
JPH021671A (ja) * 1988-03-17 1990-01-05 Toshiba Corp パケット交換機の負荷制御方式
US5057932A (en) 1988-12-27 1991-10-15 Explore Technology, Inc. Audio/video transceiver apparatus including compression means, random access storage means, and microwave transceiver means
US4963995A (en) 1988-12-27 1990-10-16 Explore Technology, Inc. Audio/video transceiver apparatus including compression means
US5164839A (en) 1988-12-27 1992-11-17 Explore Technology, Inc. Method for handling audio/video source information
US5262875A (en) 1992-04-30 1993-11-16 Instant Video Technologies, Inc. Audio/video file server including decompression/playback means
US5412782A (en) * 1992-07-02 1995-05-02 3Com Corporation Programmed I/O ethernet adapter with early interrupts for accelerating data transfer
US5440334A (en) 1993-02-01 1995-08-08 Explore Technology, Inc. Broadcast video burst transmission cyclic distribution apparatus and method
US20020048448A1 (en) 1993-03-29 2002-04-25 Microsoft Corporation Pausing the display of a television program as a signal including the television program is received
CA2130395C (en) 1993-12-09 1999-01-19 David G. Greenwood Multimedia distribution over wide area networks
JPH07219774A (ja) 1994-02-07 1995-08-18 Fujitsu Ltd データ処理装置および例外処理方法
US5978567A (en) 1994-07-27 1999-11-02 Instant Video Technologies Inc. System for distribution of interactive multimedia and linear programs by enabling program webs which include control scripts to define presentation by client transceiver
US5758076A (en) 1995-07-19 1998-05-26 International Business Machines Corporation Multimedia server system having rate adjustable data retrieval based on buffer capacity
US5787472A (en) 1995-07-31 1998-07-28 Ibm Corporation Disk caching system for selectively providing interval caching or segment caching of vided data
US5835495A (en) 1995-10-11 1998-11-10 Microsoft Corporation System and method for scaleable streamed audio transmission over a network
US6041345A (en) 1996-03-08 2000-03-21 Microsoft Corporation Active stream format for holding multiple media streams
US5931961A (en) 1996-05-08 1999-08-03 Apple Computer, Inc. Discovery of acceptable packet size using ICMP echo
US6658010B1 (en) 1996-07-25 2003-12-02 Hybrid Networks, Inc. High-speed internet access system
JPH10150468A (ja) * 1996-11-18 1998-06-02 Fujitsu Ltd 送信履歴ビットを持つデータ処理装置およびデータ通信方法
US5913038A (en) 1996-12-13 1999-06-15 Microsoft Corporation System and method for processing multimedia data streams using filter graphs
US6005621A (en) 1996-12-23 1999-12-21 C-Cube Microsystems, Inc. Multiple resolution video compression
US6014706A (en) 1997-01-30 2000-01-11 Microsoft Corporation Methods and apparatus for implementing control functions in a streamed video display system
US6292834B1 (en) 1997-03-14 2001-09-18 Microsoft Corporation Dynamic bandwidth selection for efficient transmission of multimedia streams in a computer network
US6118817A (en) 1997-03-14 2000-09-12 Microsoft Corporation Digital video signal encoder and encoding method having adjustable quantization
US6111567A (en) 1997-04-03 2000-08-29 Microsoft Corporation Seamless multimedia branching
US6209041B1 (en) 1997-04-04 2001-03-27 Microsoft Corporation Method and computer program product for reducing inter-buffer data transfers between separate processing components
US5963202A (en) 1997-04-14 1999-10-05 Instant Video Technologies, Inc. System and method for distributing and managing digital video information in a video distribution network
US6216163B1 (en) 1997-04-14 2001-04-10 Lucent Technologies Inc. Method and apparatus providing for automatically restarting a client-server connection in a distributed network
US6195692B1 (en) 1997-06-02 2001-02-27 Sony Corporation Television/internet system having multiple data stream connections
US6385647B1 (en) 1997-08-18 2002-05-07 Mci Communications Corporations System for selectively routing data via either a network that supports Internet protocol or via satellite transmission network based on size of the data
JPH11163947A (ja) 1997-09-22 1999-06-18 Toshiba Corp ゲートウェイ装置、無線端末装置、ルータ装置および通信ネットワークのゲートウェイ制御方法
US5996015A (en) 1997-10-31 1999-11-30 International Business Machines Corporation Method of delivering seamless and continuous presentation of multimedia data files to a target device by assembling and concatenating multimedia segments in memory
JP3655071B2 (ja) 1997-10-31 2005-06-02 株式会社ニデック 眼屈折力測定装置
JP3235655B2 (ja) * 1997-12-01 2001-12-04 日本電気株式会社 バースト性をもつ低速汎用データの固定長パケット多重装置
US5983263A (en) 1998-01-02 1999-11-09 Intel Corporation Method and apparatus for transmitting images during a multimedia teleconference
US6161201A (en) 1998-02-26 2000-12-12 3Com Corporation Method and apparatus for concurrent interaction with a modem having an open connection
US6327421B1 (en) 1998-03-10 2001-12-04 International Business Machines Corporation Multiple speed fast forward/rewind compressed video delivery system
US6054943A (en) 1998-03-25 2000-04-25 Lawrence; John Clifton Multilevel digital information compression based on lawrence algorithm
US6292880B1 (en) * 1998-04-15 2001-09-18 Inktomi Corporation Alias-free content-indexed object cache
US6314492B1 (en) 1998-05-27 2001-11-06 International Business Machines Corporation System and method for server control of client cache
US6421348B1 (en) * 1998-07-01 2002-07-16 National Semiconductor Corporation High-speed network switch bus
US6480498B1 (en) * 1998-07-01 2002-11-12 National Semiconductor Corporation High speed network switch bus clock
JP3602972B2 (ja) * 1998-07-28 2004-12-15 富士通株式会社 通信性能測定装置及びその測定方法
US6502135B1 (en) * 1998-10-30 2002-12-31 Science Applications International Corporation Agile network protocol for secure communications with assured system availability
US6249844B1 (en) 1998-11-13 2001-06-19 International Business Machines Corporation Identifying, processing and caching object fragments in a web environment
US6553376B1 (en) 1998-11-18 2003-04-22 Infolibria, Inc. Efficient content server using request redirection
US6449269B1 (en) 1998-12-31 2002-09-10 Nortel Networks Limited Packet voice telephony system and method
US6351767B1 (en) * 1999-01-25 2002-02-26 International Business Machines Corporation Method and system for automatically caching dynamic content based on a cacheability determination
JP3587352B2 (ja) 1999-02-04 2004-11-10 富士通株式会社 ネットワーク通信性能測定方法及び装置並びにネットワーク通信性能測定プログラムを格納したコンピュータ読取り可能な記録媒体
US6405256B1 (en) 1999-03-31 2002-06-11 Lucent Technologies Inc. Data streaming using caching servers with expandable buffers and adjustable rate of data transmission to absorb network congestion
US6725333B1 (en) * 1999-04-22 2004-04-20 International Business Machines Corporation System and method for managing cachable entities
US6611868B1 (en) 1999-05-21 2003-08-26 3Com Corporation Method and system for automatic link hang up
US6735634B1 (en) 1999-06-10 2004-05-11 Blue Coat Systems Method for real time protocol media recording
JP3463803B2 (ja) 1999-11-09 2003-11-05 松下電器産業株式会社 クラスタサーバ装置
US6643259B1 (en) * 1999-11-12 2003-11-04 3Com Corporation Method for optimizing data transfer in a data network
US6779043B1 (en) * 1999-11-16 2004-08-17 National Semiconductor Corporation Network address manager
US6990070B1 (en) * 1999-12-17 2006-01-24 Nortel Networks Limited Method and apparatus for adjusting packet transmission volume from a source
US7051110B2 (en) 1999-12-20 2006-05-23 Matsushita Electric Industrial Co., Ltd. Data reception/playback method and apparatus and data transmission method and apparatus for providing playback control functions
US6329165B1 (en) 1999-12-30 2001-12-11 Nalco Chemical Company Measurement and control of sessile and planktonic microbiological activity in industrial water systems
US6389467B1 (en) 2000-01-24 2002-05-14 Friskit, Inc. Streaming media search and continuous playback system of media resources located by multiple network addresses
US6519648B1 (en) 2000-01-24 2003-02-11 Friskit, Inc. Streaming media search and continuous playback of multiple media resources located on a network
US7159233B2 (en) 2000-01-28 2007-01-02 Sedna Patent Services, Llc Method and apparatus for preprocessing and postprocessing content in an interactive information distribution system
US6643269B1 (en) * 2000-03-03 2003-11-04 Luminous Networks, Inc. Routing switch automatically identifying network topology
SE0000908L (sv) * 2000-03-20 2001-09-21 Ericsson Telefon Ab L M Load regulation
US6765878B1 (en) * 2000-03-28 2004-07-20 Intel Corporation Selective use of transmit complete interrupt delay on small sized packets in an ethernet controller
US7007090B1 (en) 2000-03-31 2006-02-28 Intel Corporation Techniques of utilizing actually unused bandwidth
US6952424B1 (en) * 2000-04-13 2005-10-04 International Business Machines Corporation Method and system for network processor scheduling outputs using queueing
US7266613B1 (en) 2000-08-09 2007-09-04 Microsoft Corporation Fast dynamic measurement of bandwidth in a TCP network environment
US6741648B2 (en) 2000-11-10 2004-05-25 Nokia Corporation Apparatus, and associated method, for selecting an encoding rate by which to encode video frames of a video sequence
US6407680B1 (en) 2000-12-22 2002-06-18 Generic Media, Inc. Distributed on-demand media transcoding system and method
US6611898B1 (en) 2000-12-22 2003-08-26 Convergys Customer Management Group, Inc. Object-oriented cache management system and method
US6772375B1 (en) * 2000-12-22 2004-08-03 Network Appliance, Inc. Auto-detection of limiting factors in a TCP connection
US7054949B2 (en) * 2001-01-19 2006-05-30 World Streaming Network, Inc. System and method for streaming media
WO2002078348A2 (en) 2001-03-23 2002-10-03 Popwire.Com Method and apparatus for streaming video
US20020194608A1 (en) 2001-04-26 2002-12-19 Goldhor Richard S. Method and apparatus for a playback enhancement system implementing a "Say Again" feature
US6742082B1 (en) * 2001-06-12 2004-05-25 Network Appliance Pre-computing streaming media payload method and apparatus
US7076560B1 (en) 2001-06-12 2006-07-11 Network Appliance, Inc. Methods and apparatus for storing and serving streaming media data
US7054911B1 (en) * 2001-06-12 2006-05-30 Network Appliance, Inc. Streaming media bitrate switching methods and apparatus
US6986018B2 (en) * 2001-06-26 2006-01-10 Microsoft Corporation Method and apparatus for selecting cache and proxy policy
US20020049817A1 (en) 2001-07-12 2002-04-25 Eatamar Drory Storageless system and method for unified messaging on existing mail accounts via standard internet mail protocols
US20030099364A1 (en) 2001-11-28 2003-05-29 Thompson Mark R. Playback manipulation of HTTP streamed content objects
US7133881B2 (en) * 2002-04-29 2006-11-07 Intel Corporation Encoding and transferring media content onto removable storage
US7457312B2 (en) 2002-06-19 2008-11-25 Microsoft Corporation Bandwidth sharing in advanced streaming format
US7451229B2 (en) 2002-06-24 2008-11-11 Microsoft Corporation System and method for embedding a streaming media format header within a session description message
US20040003101A1 (en) 2002-06-26 2004-01-01 Roth David J. Caching control for streaming media
US7401221B2 (en) 2002-09-04 2008-07-15 Microsoft Corporation Advanced stream format (ASF) data stream header object protection
US7020087B2 (en) * 2003-01-13 2006-03-28 Motorola, Inc. Segmented and distributed path optimization in a communication network
US7454510B2 (en) 2003-05-29 2008-11-18 Microsoft Corporation Controlled relay of media streams across network perimeters
US7054774B2 (en) * 2003-06-27 2006-05-30 Microsoft Corporation Midstream determination of varying bandwidth availability

Also Published As

Publication number Publication date
US7349977B2 (en) 2008-03-25
US20080183888A1 (en) 2008-07-31
EP1912393A1 (de) 2008-04-16
EP1912393B1 (de) 2010-04-07
US20080147877A1 (en) 2008-06-19
US7266613B1 (en) 2007-09-04
EP1179925A2 (de) 2002-02-13
EP1179925B1 (de) 2008-07-09
EP1538795A2 (de) 2005-06-08
EP1538795A3 (de) 2005-06-15
DE60133324D1 (de) 2008-04-30
ATE400947T1 (de) 2008-07-15
EP1538796A3 (de) 2005-06-15
US20050108420A1 (en) 2005-05-19
JP2002094567A (ja) 2002-03-29
DE60134701D1 (de) 2008-08-21
JP4806141B2 (ja) 2011-11-02
DE60134793D1 (de) 2008-08-21
EP1538796A2 (de) 2005-06-08
EP1538796B1 (de) 2008-07-09
DE60141782D1 (de) 2010-05-20
EP1538795B1 (de) 2008-03-19
US20050100014A1 (en) 2005-05-12
EP1179925A3 (de) 2003-08-13
ATE389999T1 (de) 2008-04-15
ATE463906T1 (de) 2010-04-15
ATE400949T1 (de) 2008-07-15
US7353286B2 (en) 2008-04-01

Similar Documents

Publication Publication Date Title
DE60133324T2 (de) Schubsdatenpaket zur Minimierung von Datenpufferungsverzögerung
DE60110002T2 (de) System zur Übertragung von Streaming-Daten und Zwischenverstärker dafür
DE19983404B4 (de) Verfahren und Vorrichtung zur Verwendung bei der Einstellung eines TCP Gleitfensters
DE69930992T2 (de) Verfahren und Rechnerprogrammprodukt zum effizienten und sicheren Senden von kleinen Datennachrichten von einem Sender zu einer grossen Anzahl von Empfangssystemen
DE60211322T2 (de) Empfängerinitiierte Inkrementierung der Übertragungsrate
DE60302051T2 (de) Verfahren, netzwerk und gerät zur konfiguration und steuerung von netzressourcen beim zurverfügungstellen von inhalten mit verteilungsregeln
DE60311677T2 (de) Verfahren und vorrichtung zur durchführung von netzwerkverarbeitungsfunktionen
DE69931215T2 (de) Verfahren und Rechnerprogrammprodukt zum effizienten und sicheren Senden von kleinen Datennachrichten von einem Sender zu einer grossen Anzahl von Empfangssystemen
DE60112759T2 (de) Vorrichtungen und verfahren zur datenübertragung
DE60316494T2 (de) Zeitfensterbeschränkte Mehrfachsendung unter Benutzung von Verbindungsablau ffolgeplanung
DE60020413T2 (de) Verfahren und Einrichtung zur Bestimmung eines Zeit-Parameters
DE60112089T2 (de) Verfahren und system zur verwaltung der dienstqualität durch einspeisen von informationen in das paketnetz
DE60113549T2 (de) Tcp-flusssteurung
DE602005005219T2 (de) Paketzusammenführung
DE60022082T2 (de) Synchronisierter transport durch nichtsynchrone netzwerke
DE60212383T2 (de) Verfahren zur Übertragung von Datenströmen mit Datensegmenten variabler Länge
DE602004008099T2 (de) Verfahren, system und artikel zur dynamischen echtzeit-stream-aggregation in einem netzwerk
DE602004011638T2 (de) Verringern von Pufferanforderungen in einem Nachrichtenübermittlungssystem
DE112006002644T5 (de) Mediendatenverarbeitung unter Verwendung von charakteristischen Elementen für Streaming- und Steuerprozesse
DE602004010704T2 (de) Verfahren und systeme zum dynamischen konfigurieren einer netzwerkkomponente
DE60125611T2 (de) Verfahren und Vorrichtung zur Kommunikation zwischen einem ersten und einem zweiten Netz
DE102005039192A1 (de) Verfahren zur Störungsanalyse eines Datenstroms, insbesondere eines Echtzeit-Datenstroms, in einem Datennetz, Kommunikationssystem und Überwachungsrechner
DE102015115896B4 (de) Adaptives Verwalten eines Medienpuffers
DE60210918T2 (de) Verfahren zur Überlastdetektion von IP-Flows über ein drahtloses Netzwerk
DE60310752T2 (de) Datenzugriffsprozess

Legal Events

Date Code Title Description
8364 No opposition during term of opposition