DE60122676T2 - Verfahren und methode für das übertragen von daten über ein netz - Google Patents

Verfahren und methode für das übertragen von daten über ein netz Download PDF

Info

Publication number
DE60122676T2
DE60122676T2 DE60122676T DE60122676T DE60122676T2 DE 60122676 T2 DE60122676 T2 DE 60122676T2 DE 60122676 T DE60122676 T DE 60122676T DE 60122676 T DE60122676 T DE 60122676T DE 60122676 T2 DE60122676 T2 DE 60122676T2
Authority
DE
Germany
Prior art keywords
network
data
level
computing device
actual
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
DE60122676T
Other languages
English (en)
Other versions
DE60122676D1 (de
Inventor
Alessandro Redmond MUTI
A. Darshatkumar Bellevue SHAH
Joseph Brian Redmond MOORE
S. Jeffrey Kirkland ROBERTS
Stephen Scott Redmond EVANS
Michael D. Redmond ZORAN
F. Edward Woodenville REUS
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
Priority claimed from US09/505,735 external-priority patent/US7437428B1/en
Priority claimed from US09/783,407 external-priority patent/US6920110B2/en
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of DE60122676D1 publication Critical patent/DE60122676D1/de
Application granted granted Critical
Publication of DE60122676T2 publication Critical patent/DE60122676T2/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
    • 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/0882Utilisation of link capacity
    • 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
    • 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/11Identifying congestion
    • 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/15Flow control; Congestion control in relation to multipoint traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/62Establishing a time schedule for servicing the requests
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/02Capturing of monitoring data
    • H04L43/022Capturing of monitoring data by sampling
    • 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/10Active monitoring, e.g. heartbeat, ping or trace-route
    • H04L43/106Active monitoring, e.g. heartbeat, ping or trace-route using time related information in packets, e.g. by adding timestamps
    • 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/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Environmental & Geological Engineering (AREA)
  • Information Transfer Between Computers (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Description

  • Die vorliegende Erfindung bezieht sich auf Computer-Software und spezieller auf ein System und Verfahren zum Übertragen von Daten über ein Netzwerk, wie z.B. dem Internet.
  • Ein Computersystem, in dem eine oder mehrere Client-Maschinen mit einem oder mehreren Servern über ein Netzwerk kommunizieren, ist eine bekannte Anordnung. Zum Beispiel gibt es Millionen von Personalcomputern (PCs), die mit dem Internet zur Kommunikation mit verschiedenen Servern verbunden sind. Viele dieser PC-Benutzer schaffen sich neue oder aktualisierte Software auf ihren PCs durch das Herunterladen der Software von einem Remote-Server über das Internet an.
  • Herkömmliche Verfahren zum Heraufladen und Herunterladen von Daten, wie z.B. neuer oder aktualisierter Software, zu einem PC über ein Netzwerk wie dem Internet beeinträchtigt die Fähigkeit des PC-Benutzers, das Internet zu durchsuchen oder andernfalls während des Herunterladens über das Netzwerk zu kommunizieren. Mit zunehmender Verarbeitungsgeschwindigkeit der PCs ist es die Bandbreite zum Internet, die zu einer signifikanten Verschlechterung (bottleneck) der Wahrnehmung des Benutzers während des Durchsuchens wird. Weil ein konventionelles Herunterladen üblicherweise 100 % der für den Benutzer verfügbaren Datenübertragungsbandbreite belegt, bis das Herunterladen abgeschlossen ist, ist der Benutzer nicht in der Lage das Netzwerk für andere Aufgaben während des Herunterladens zu benutzen. Außerdem kann es notwendig sein, wenn das Herunterladen aus irgendeinem Grund unterbrochen wird (z.B. die Netzwerkverbindung geht verloren), das Herunterladen vom Anfang der Datei neu zu starten, wobei erhebliche Netzwerkressourcen verschwendet werden. Andere herkömmliche Software zum Herunterladen erlaubt es dem Benutzer das Herunterladen für eine designierte Zeit zu planen. Auf jeden Fall schränken herkömmliche Verfahren zum Herunterladen von Software über ein Netzwerk wie dem Internet die Fähigkeit des Benutzers empfindlich ein, sich mit anderen Netzwerkaktivitäten zu befassen.
  • Das Bereitstellen von Software-Aktualisierungen ist für PC-Benutzer vorteilhaft, weil es Probleme korrigiert und die Leistung ihrer PCs verbessert. Zusätzlich profitiert der Software-Verkäufer von einer Reduzierung der Anzahl an Anrufen zur Unterstützung mit dem Produkt (product support calls), was wiederum die erheblichen Ressourcen reduziert, die der Verkäufer andernfalls zuweisen müsste, um solche Anrufe zu bedienen.
  • Microsoft Corporation stellt einen Software-Aktualisierungsservice in Verbindung mit seiner MICROSOFT WINDOWS-Familie von Betriebssystemprodukten unter dem Markennamen "WINDOWS UPDATE" bereit. Durch das Zugreifen auf die "WINDOWS UPDATE"-Internet-Website können MICROSOFT WINDOWS-Benutzer ihr System untersuchen lassen und können sowohl kritische als auch nicht kritische Software-Aktualisierungen (z.B. eine Reparatur (fix) oder eine Korrektur (patch)) über das Internet herunterladen. Auf das Ermitteln hin, dass Aktualisierungen verfügbar sind, die noch nicht auf den PC des Benutzers geladen sind, wird der Benutzer darauf hingewiesen, dass solche Aktualisierungen verfügbar sind, und der Benutzer wird aufgefordert, eins oder mehrere von ihnen zum Herunterladen über das Internet auszuwählen. Während dies ein angenehmes Verfahren zum Bereitstellen von Software-Aktualisierungen an Benutzer ist, kann solch ein Herunterladen andere Netzwerkaktivitäten beeinträchtigen. Außerdem ist es wahrscheinlich, dass viele Benutzer nicht die Initiative ergreifen werden, zu der "WINDOWS UPDATE"-Website zu navigieren, und Betriebssystemaktualisierungen für ihre PCs herunterladen werden. Konsequenterweise werden Benutzer, die kritische Aktualisierungen noch nicht heruntergeladen haben, wahrscheinlicher auf Probleme mit ihren PCs treffen, und sie werden wahrscheinlich die Produktunterstützungsrufnummer des Verkäufers anrufen, wenn sich ein Problem ergibt.
  • WO 00/01123 bezieht sich auf das Erkennen einer Stauung in einem Computernetzwerk, das zwei zurückgegebene Fenster umfasst. Eine empfangende Station ermittelt eine erste Anzahl von Nachrichten, die in einem ersten Bestätigungsfenster (acknowledgement window) fehlen. Die Station ermittelt dann eine zweite Anzahl von Nachrichten, die in einem darauffolgenden Bestätigungsfenster fehlen. Die Station misst dann die Stauung auf dem Netzwerk als Antwort auf eine Zunahme zwischen der ersten Anzahl der fehlenden Nachrichten in dem ersten Bestätigungsfenster und der zweiten Anzahl von fehlenden Nachrichten in dem zweiten Bestätigungsfenster. Eine übermittelnde Station reagiert anschließend auf die Nachrichten, die eine Stauung auf dem Netzwerk indizieren, durch das Reduzieren seiner Übertragungsrate. Durch das Verwenden einer vorher gemessenen hohen Übertragungsrate versucht die Übertragungsstation zu dieser gemessenen Rate nach jedem Fall von einer Reduzierung der Rate durch das Hinzufügen eines konstanten Wertes zu der reduzierten Rate, abhängig von der vorher gemessenen hohen Rate, zurückzukehren.
  • Floyd S. und andere: "Link-Sharing and Resource Management Models for Packet Networks", IEEE/ACM Trans. on Networking, Vol. 3, Nr. 4, Seiten 365-386, diskutiert die Verwendung eines Verbindungsteilungsmechanismuses (link-sharing mechanisms) in Paketnetzwerken und präsentiert Algorithmen für eine hierarchische Verbindungsteilung, welche es mehreren Vermittlungen (agencies), Protokollfamilien oder Datenverkehrstypen erlaubt, Bandbreite auf einer Verbindung in einer kontrollierten Weise zu teilen.
  • Dementsprechend gibt es ein Bedürfnis nach einem effektiven Verfahren zum Herunterladen von Software-Aktualisierungen über ein Netzwerk, so dass Beeinträchtigungen mit anderen Netzwerkaktivitäten minimiert werden. Eine mögliche Lösung ist einfach, die Netzwerkbandbreite zu vergrößern. Eine vergrößerte Bandbreite ist jedoch teuer und wurde in der Vergangenheit gefolgt von zunehmenden Benutzeranforderungen. Selbst wenn die verfügbare Bandbreite mit technologischen Fortschritten zunimmt, wird es deshalb weiterhin ein Bedürfnis geben, Beeinträchtigungen mit anderen Netzwerkaktivitäten aufgrund der entsprechenden Zunahme der Benutzeranforderungen zu vermeiden.
  • Es ist die Aufgabe der vorliegenden Erfindung eine verbesserte Datenübertragung über ein Netzwerk zu ermöglichen.
  • Die Aufgabe ist durch den Gegenstand der unabhängigen Ansprüche gelöst.
  • Bevorzugte Ausführungsformen der vorliegenden Erfindung werden durch die abhängigen Ansprüche definiert.
  • In einem Aspekt ist die vorliegende Erfindung auf ein Verfahren zum Übertragen einer Reihe von Daten über ein Netzwerk gerichtet. Das Verfahren schließt die Schritte des Überwachens des Levels einer aktuellen Netzwerkbandbreitenausnutzung und des Identifizierens eines maximal beobachteten Levels der tatsächlichen Verwendung ein. Anschließend berechnet das Verfahren ein Schwellenwertlevel der Benutzung als eine Funktion des maximal beobachteten Levels der Benutzung. Wenn das tatsächliche Level geringer ist als das Schwellenwertlevel, wird mindestens ein Teil der Reihe von Daten über das Netzwerk empfangen.
  • Ein anderer Aspekt der vorliegenden Erfindung ist auf einen Computer-lesbaren Datenträger gerichtet, der darauf eine Datenstruktur gespeichert hat, welche ein erstes Datenfeld und ein zweites Datenfeld einschließt. Das erste Datenfeld enthält Daten, die ein maximal beobachtetes Level der tatsächlichen Netzwerkbandbreitennutzung darstellt. Das zweite Datenfeld enthält Daten, die ein Schwellenwertlevel einer Netzwerkbandbreitenbenutzung darstellen, unterhalb dessen Daten über das Netzwerk ohne Beeinträchti gung mit anderen Netzwerkaktivitäten übertragen werden können. Das zweite Datenfeld wird von dem ersten Datenfeld durch das Berechnen des Schwellenwertlevels als eine Funktion des maximal überwachten Levels abgeleitet.
  • Noch ein anderer Aspekt der vorliegenden Erfindung bezieht einen Computer-lesbaren Datenträger ein, der Computer-ausführbare Komponenten zum Verwalten der Übertragung von Daten über ein Netzwerk aufweist. Die erste Komponente ist eine Bandbreitenüberwachungskomponente, die das Level der tatsächlichen Bandbreitenbenutzung für eine Netzwerkverbindung überwacht und ein maximal überwachtes Level der Benutzung identifiziert. Die zweite Komponente ist eine schwellenwertberechnende Komponente, die ein Schwellenwertlevel der Benutzung als eine Funktion des maximal überwachten Levels der Benutzung berechnet, die durch die erste Komponente identifiziert wurde. Die dritte Komponente ist eine Übertragungsverwaltungskomponente, die die Übertragung von Daten über das Netzwerk verwaltet, wenn das Level der tatsächlichen Bandbreitenbenutzung kleiner ist als das Schwellenwertlevel der Benutzung.
  • Ein weiterer anderer Aspekt der vorliegenden Erfindung ist auf ein Verfahren zur Datenübertragung zwischen einem Client-Prozess und einem Server-Prozess über ein Netzwerk gerichtet. Das Verfahren schließt das Ausstellen einer ersten Anfrage zum Herunterladen an den Server-Prozess ein, die eine Datei identifiziert und die anfragt, dass der Server-Prozess ein erstes Segment der Datei über das Netzwerk herunterlädt. Das Verfahren schließt auch das Herunterladen des ersten Segments der Datei durch den Server-Prozess ein. Anschließend erteilt das Verfahren eine weitere Anfrage zum Herunterladen an den Server-Prozess, die zugehörig ist zu der Datei und die anfragt, dass der Server-Prozess ein weiteres Segment der Datei über das Netzwerk herunterlädt, vorausgesetzt, die tatsächliche Netzwerkbandbreitennutzung ist geringer als das Schwellenwertlevel. Das Verfahren schließt des Weiteren das Herunterladen des weiteren Segments der Datei durch den Server-Prozess ein. Letztendlich schließt das Verfahren das Wiederholen der Schritt zum Ausstellen einer weiteren Anfrage zum Herunterladen und des Schritts des Herunterladens des weiteren Segments ein, bis der Server-Prozess jedes Segment der Datei über das Netzwerk heruntergeladen hat.
  • In einer wechselweisen Ausführungsform der vorliegenden Erfindung ist ein Aspekt auf ein Verfahren zum Übertragen einer Reihe von Daten über ein Netzwerk gerichtet. Das Verfahren schließt die Schritte des Überwachens des Levels der tatsächlichen Netzwerkbandbreitennutzung und Identifizierens eines durchschnittlichen überwachten Le vels der tatsächlichen Nutzung ein. Anschließend berechnet das Verfahren die Größe eines Datenblocks, der übertragen werden soll, als eine Funktion der aktuellen Aktivität und eines Bandbreitenschwellenwertes. Ein Block der berechneten Größe wird dann Heruntergeladen.
  • Ein anderer Aspekt der wechselweisen Ausführungsform der vorliegenden Erfindung ist auf einen Computer-lesbaren Datenträger gerichtet, der darauf eine Datenstruktur gespeichert hat, die ein erstes Datenfeld und ein zweites Datenfeld einschließt. Das erste Datenfeld enthält Daten, die einen Zeitstempel darstellen, der einer Sample-Zeit der Netzwerknutzung entspricht. Das zweite Datenfeld enthält Daten, die eine Gesamtanzahl an Bytes darstellen, die durch den Netzwerkadapter weitergeleitet wurden.
  • Noch ein anderer Aspekt der wahlweisen Ausführungsform der vorliegenden Erfindung bezieht einen Computer-lesbaren Datenträger ein, der Computer-ausführbare Komponenten zum Verwalten der Übertragung von Daten über ein Netzwerk aufweist. Die erste Komponente ist eine Bandbreitenüberwachungskomponente, die das Level der tatsächlichen Bandbreitennutzung für eine Netzwerkverbindung überwacht und ein durchschnittliches überwachtes Level der Nutzung identifiziert. Die zweite Komponente ist eine Komponente zum Berechnen der Übertragungsblockgröße, die die zu übertragende Blockgröße basierend auf der Nutzung als eine Funktion des Durchschnittslevels der Nutzung, das durch die erste Komponente identifiziert wurde, berechnet. Die dritte Komponente ist eine Übertragungsverwaltungskomponente, die die Übertragung von Daten über das Netzwerk mit der berechneten Blockgröße verwaltet.
  • Noch ein weiterer Aspekt der wahlweisen Ausführungsform der vorliegenden Erfindung ist auf ein Verfahren zum fortlaufenden Verfeinern der Netzwerkgeschwindigkeitsberechnung und somit der Datenblockgrößenberechnung gerichtet. Das Verfahren schließt das Prüfen (sampling) der Netzwerkverwendung in Abständen und das Berechnen eines gleitenden Durchschnitts der erlangten Geschwindigkeit über eine Anzahl von Samples ein. Dem letzten Sample wird eine schwerere Gewichtung in der Durchschnittsberechnung gegeben. Das Sampling-Intervall des Netzwerks wird basierend auf der Geschwindigkeit des Netzwerks angepasst.
  • KURZE BESCHREIBUNG DER VERSCHIEDENEN BETRACHTUNGEN DER ZEICHNUNGEN
  • Die vorliegende Erfindung ist unterhalb mit Bezug auf die angehängten Zeichnungen detailliert beschrieben, wobei:
  • 1 ein Blockdiagramm einer geeigneten Computersystemumgebung für die Verwendung beim Implementieren der vorliegenden Erfindung ist;
  • 2 ein Blockdiagramm eines Systems ist, das ein Client-Gerät einschließt, welches mit einem Server über ein Netzwerk kommuniziert;
  • 3 ein Blockdiagramm ähnlich zu 2 ist, aber mit einem ersten und zweiten Client-Gerät, die miteinander über ein Intranet verbunden sind;
  • 4 ein Diagramm ist, das eine Netzwerkbandbreitennutzung über die Zeit mit einer Kurve darstellt, die die aktuelle Netzwerkbandbreitennutzung repräsentiert und eine unterbrochene Linie, die ein Schwellenwertlevel der Nutzung darstellt, die gemäß der vorliegenden Erfindung berechnet wurde;
  • 5 ein Blockdiagramm ist, das die Architektur eines Client-Geräts gemäß der vorliegenden Erfindung darstellt;
  • 6 ein Blockdiagramm einer Datenstruktur gemäß der vorliegenden Erfindung ist;
  • 7 ein Ablaufdiagramm ist, das repräsentativ für ein Computerprogramm zum Übertragen von Daten über ein Netzwerk gemäß der vorliegenden Erfindung ist;
  • 8 ein Diagramm ist, das eine Netzwerkbandbreitennutzung über die Zeit mit einer festen Kurve darstellt, die die aktuelle Netzwerkbandbreitennutzung repräsentiert und eine unterbrochene Linienkurve, die die beobachtete Transferrate zwischen dem Client und Server und die Datenflussrate durch das Netzwerk gemäß einer weiteren Ausführungsform der vorliegenden Erfindung darstellt;
  • 9 ein Blockdiagramm einer Datenstruktur gemäß der weiteren Ausführungsform der vorliegenden Erfindung ist;
  • 10 ein Flussdiagramm ist, das repräsentativ für ein Computerprogramm zum Übertragen von Daten über ein Netzwerk gemäß der weiteren Ausführungsform der vorliegenden Erfindung ist.
  • DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
  • Die vorliegende Erfindung stellt ein System und Verfahren zum Übertragen von Daten über ein Netzwerk wie dem Internet bereit.
  • 1 stellt ein Beispiel einer geeigneten Computersystemumgebung dar, in der die Erfindung implementiert werden kann. Die Computersystemumgebung ist nur ein Beispiel einer geeigneten Computerumgebung und ist nicht gedacht, irgendeine Einschränkung auf den Umfang der Verwendung oder Funktionalität der Erfindung vorzuschlagen. Noch sollte die Computerumgebung interpretiert werden, als hätte sie irgendeine Abhängigkeit oder Erfordernis bezüglich irgendeiner oder einer Kombination von Komponenten, die in der exemplarischen verarbeitenden Umgebung dargestellt sind.
  • Die Erfindung ist mit einer Vielzahl anderer Allzweck- oder Spezialcomputersystemumgebungen oder -konfigurationen betriebsbereit. Beispiele für gut bekannte Computersysteme, -umgebungen und/oder -konfigurationen, die zur Verwendung mit der Erfindung geeignet sein können, schließen ein, sind aber nicht darauf begrenzt, Personalcomputer, Servercomputer, Hand-Held- oder Laptopgeräte, Multiprozessorsysteme, mikroprozessorbasierte Systeme, programmierbare Unterhaltungselektronik, Netzwerk PCs, Minicomputer, Mainframe-Computer, verteilte Computerumgebungen, die irgendeins der obengenannten Systeme oder Geräte einschließen, und Ähnliches.
  • Die Erfindung kann im allgemeinen Kontext von computerausführbaren Instruktionen beschrieben werden, wie z.B. Programmmodulen, die durch einen Computer ausgeführt werden. Im Allgemeinen schließen Programmmodule Routinen, Programme, Objekte, Komponenten, Datenstrukturen etc. ein, die bestimmte Aufgaben ausführen oder bestimmte abstrakte Datentypen implementieren. Die Erfindung kann auch in verteilten Computerumgebungen praktiziert werden, wo Aufgaben durch Remote-verarbeitende Geräte ausgeführt werden, die durch ein Datenübertragungsnetzwerk verbunden sind. In einer verteilten Computerumgebung können Programmmodule sowohl auf lokalen als auch Remote-Computerspeichermedien einschließlich Datenspeichergeräten liegen.
  • Mit Bezug auf 1 schließt ein exemplarisches System zum Implementieren der Erfindung ein Allzweckcomputergerät in der Form eines Computers 20 ein. Komponenten des Computers 20 schließen ein, sind aber nicht darauf begrenzt, eine Prozessoreinheit 22, ein Systemspeicher 24 und ein Systembus 26, der verschiedene Systemkomponenten einschließlich dem Systemspeicher und der Prozessoreinheit 22 koppelt. Der Systembus 26 kann irgendeiner von verschiedenen Busstrukturtypen sein, einschließlich einem Speicherbus oder Speichercontroller, einem Peripheriebus und einem lokalen Bus, der irgendeine einer Sorte von Busarchitekturen verwendet. Als Beispiel, und nicht Einschränkung, enthalten solche Architekturen Industry-Standard-Architecture-Bus (ISA-Bus), Micro-Channel-Architecture-Bus (MCA-Bus), Enhanced-ISA-Bus (EISA-Bus), Video-Electronics-Standards-Association-local-Bus (VESA-local-Bus) und Peripheral-Component-Interconnect-Bus (PCI-Bus), auch bekannt als Mezzanine-Bus.
  • Der Computer 20 schließt üblicherweise eine Vielfalt von Computer-lesbaren Datenträgern ein. Computer-lesbare Datenträger können irgendwelche verfügbaren Datenträger sein, auf die durch den Computer 20 zugegriffen werden kann, und schließen sowohl flüchtige als auch nicht-flüchtige Datenträger, entfernbare und nicht-entfernbare Datenträger ein. Als Beispiel, und nicht Einschränkung, können Computer-lesbare Datenträger Computerspeicherdatenträger und Kommunikationsdatenträger umfassen. Computerspeicherdatenträger schließen sowohl flüchtige und nicht-flüchtige, entfernbare und nicht-entfernbare Datenträger ein, die durch irgendein Verfahren oder eine Technologie zum Speichern von Informationen implementiert sind, wie z.B. Computer-lesbare Instruktionen, Datenstrukturen, Programmmodule oder andere Daten. Computerspeicherdatenträger schließen ein, sind aber nicht darauf begrenzt, RAM, ROM, EEPROM, Flash-Speicher oder andere Speichertechnologie, CD-ROM, Digital Versatile Disks (DVD) oder andere optische Disk-Speicher, magnetische Kassetten, magnetisches Tape, magnetische Disk-Speicher oder andere magnetische Speichergeräte oder irgendein anderer Datenträger, der verwendet werden kann, um die gewünschten Informationen zu speichern, und auf den durch den Computer 20 zugegriffen werden kann. Kommunikationsdatenträger enthalten üblicherweise Computer-lesbare Instruktionen, Datenstrukturen, Programmmodule oder andere Daten in einem modulierten Datensignal, wie z.B. einer Trägerwelle oder anderem Transportmechanismus und schließen irgendwelche Informationslieferdatenträger ein. Der Begriff "moduliertes Datensignal" meint ein Signal, das eine oder mehrere seiner Charakteristiken in solch einer Weise gesetzt oder verändert hat, um Informationen in dem Signal zu codieren. Als Beispiel, und nicht Einschränkung, schließen Kommunikationsdatenträger verkabelte Datenträger ein, wie z.B. ein verkabeltes Netzwerk oder direkte verkabelte Verbindungen und schließen kabellose Datenträger ein, wie z.B. akustische, RF-, infrarote und andere kabellose Datenträger. Kombinationen von irgendwelchen der obengenannten sollten auch in dem Umfang der Computerlesbaren Datenträger eingeschlossen sein.
  • Der Systemspeicher 24 schließt Computerspeicherdatenträger in der Form von flüchtigem und/oder nicht-flüchtigem Speicher ein, wie z.B. Read Only Memory (ROM) 28 und Random Access Memory (RAM) 30. Ein Basic-Input/Output-System 32 (BIOS), das die Basisroutinen enthält, die helfen, Informationen zwischen Elementen innerhalb des Computers 20 zu übertragen, wie z.B. während des Hochfahrens, ist üblicherweise in dem ROM 28 gespeichert. RAM 30 enthält üblicherweise Daten und/oder Programmmodule, die sofort zugreifbar sind für und/oder auf denen momentan gearbeitet wird durch die Prozessoreinheit 22. Als Beispiel, und nicht Einschränkung, stellt 1 ein Betriebssystem 46, Anwendungsprogramme 48, andere Programmmodule 50 und Programmdaten 52 dar.
  • Der Computer 20 kann auch andere entfernbare/nicht-entfernbare, flüchtige/nicht-flüchtige Computerspeichermedien einschließen. Nur als Beispiel stellt 1 ein Festplattenlaufwerk 34, das von/zu einem nicht-entfernbaren, nicht-flüchtigen magnetischen Datenträger liest oder schreibt, ein magnetisches Disklaufwerk 36, das von/zu einer entfernbaren, nicht-flüchtigen magnetischen Disk 28 liest oder schreibt, und einem optischen Disklaufwerk 40, das von/zu einer entfernbaren, nicht-flüchtigen optischen Disk 42 liest oder schreibt, wie z.B. einer CD ROM oder anderen optischen Datenträgern dar. Andere entfernbare/nicht-entfernbare, flüchtige/nicht-flüchtige Computerspeichermedien, die in der exemplarischen Arbeitsumgebung verwendet werden können, schließen ein, sind aber nicht darauf begrenzt, magnetische Bandkassetten, Flash-Memory-Karten, digitale Videodisks, digitales Videoband, Bernoulli-Kartuschen, Solid-State-RAM, Solid-State-ROM und Ähnliches. Das Festplattenlaufwerk 34, magnetische Disklaufwerk 36 und optische Disklaufwerk 40 sind üblicherweise mit dem Systembus 26 durch eine kleine Computersystemschnittstelle (Small Computer System Interface (SCSI)) 44 verbunden. Alternativ kann das Festplattenlaufwerk 34, magnetische Disklaufwerk 36 und optische Disklaufwerk 40 mit dem Systembus 26 durch eine Festplattenlaufwerkschnittstelle, eine Schnittstelle für magnetische Disklaufwerke bzw. eine Schnittstelle für optische Laufwerke verbunden sein.
  • Die Laufwerke und ihre zugehörigen Computerspeicherdatenträger, die oberhalb diskutiert und in 1 dargestellt wurden, bieten Speicher für Computer-lesbare Instruktionen, Datenstrukturen, Programmmodule und andere Daten für den Computer 20. In 1 z.B. ist das Festplattenlaufwerk 34 so dargestellt, dass es das Betriebssystem 46, Anwendungsprogramme 48, andere Programmmodule 50 und Programmdaten 52 speichert. Es ist zu beachten, dass diese Komponenten entweder dieselben sein können oder verschieden von dem Betriebssystem 46, den Anwendungsprogrammen 48, anderen Programmmodulen 50 und Programmdaten 52 sein können. Ein Benutzer kann Befehle und Informationen in den Computer 20 durch Eingabegeräte eingeben, wie z.B. eine Tastatur/Keyboard 54 und Zeigergerät 56, allgemein bezeichnet als eine Maus, Trackball oder Touchpad. Andere Eingabegeräte (nicht gezeigt) können ein Mikrofon, einen Joystick, ein Gamepad, eine Satellitenschüssel, eine Scanner oder Ähnliches einschließen. Diese und andere Eingabegeräte sind oft mit der Prozessoreinheit 22 durch eine Benutzereingabeschnittstelle 58 oder eine serielle Anschlussschnittstelle 60, die mit dem Systembus gekoppelt ist, verbunden, können aber durch andere Schnittstellen und Busstrukturen verbunden sein, wie z.B. einem Parallelanschluss, Spieleanschluss oder Universal Serial Bus (USB). Ein Monitor 61 oder anderer Anzeigegerätetyp ist ebenso mit dem Systembus 26 über eine Schnittstelle verbunden, wie z.B. einem Videoadapter 62. Zusätzlich zu dem Monitor 61 können Computer auch andere periphere Ausgabegeräte einschließen, wie z.B. Lautsprecher und Drucker, welche durch eine Ausgangsperipherieschnittstelle verbunden sind.
  • Der Computer kann in einer Netzwerkumgebung betrieben werden, die logische Verbindungen zu einem oder mehreren Remote-Computern verwendet, wie z.B. einem Remote-Computer 64. Der Remote-Computer 64 kann ein Personalcomputer, ein Server, ein Router, ein Netzwerk PC, ein Peer-Gerät oder anderer bekannter Netzwerkknoten sein, und schließt üblicherweise viele oder alle der oben bezüglich dem Computer 20 beschriebenen Elemente ein, obwohl nur ein Datenspeichergerät in 1 dargestellt worden ist. Die logischen Verbindungen, die in 1 bildlich dargestellt sind, schließen ein Local Area Network (LAN) 66 und ein Wide Area Network (WAN) 68 ein, können aber ebenso andere Netzwerke einschließen. Solche Netzwerkumgebungen sind alltäglich in Büros, unternehmensweiten Computernetzwerken, Intranets und dem Internet.
  • Wenn er in einer LAN-Netzwerkumgebung verwendet wird, ist der Computer 20 mit dem LAN 66 durch eine Netzwerkschnittstelle oder -adapter 70 verbunden. Wenn er in einer WAN-Netzwerkumgebung verwendet wird, schließt der Computer 20 üblicherweise ein Modem 72 oder andere Mittel zum Herstellen von Datenübertragungen über das WAN 68, wie z.B. dem Internet, ein. Das Modem 72, welches intern oder extern sein kann, kann mit dem Systembus 26 über die serielle Anschlussschnittstelle oder anderen passenden Mechanismus verbunden sein. In einer Netzwerkumgebung können Programmmodule, die bezüglich Computer 20 dargestellt sind, oder Teile davon in dem Remote-Datenspeichergerät gespeichert sein. Als Beispiel, und nicht Einschränkung, stellt 1 Remote-Anwendungsprogramme 48 so dar, dass sie sich auf dem Datenspeichergerät 64 befinden. Es wird begrüßt, dass die gezeigten Netzwerkverbindungen exemplarisch sind, und andere Mittel zum Herstellen einer Datenübertragungsverbindung zwischen den Computern verwendet werden kann.
  • Obwohl viele andere interne Komponenten des Computers 20 nicht gezeigt sind, werden es Fachleute begrüßen, dass solche Komponenten und die Zusammenschaltung gut bekannt sind. Dementsprechend brauchen zusätzliche Details, die die interne Konstruktion des Computers 20 betreffen, nicht in Verbindung mit der vorliegenden Erfindung offenbart sein.
  • Fachleute werden verstehen, dass Programmmodule, wie z.B. das Betriebssystem 46, Anwendungsprogramme 48 und Daten 52 dem Computer 20 über eins seiner Datenspeichergeräte bereitgestellt werden, was den ROM 28, RAM 30, Festplattenlaufwerk 34, magnetisches Disklaufwerk 36 oder optisches Disklaufwerk 40 einschließen kann. Vorzugsweise wird das Festplattenlaufwerk 34 verwendet, um Daten 52 und Programme zu speichern, einschließlich dem Betriebssystem 46 und Anwendungsprogrammen 48.
  • Wenn der Computer angeschaltet wird oder zurückgesetzt wird (Reset), instruiert das BIOS 32, welches in dem ROM 28 gespeichert ist, die Prozessoreinheit 22, das Betriebssystem von dem Festplattenlaufwerk 34 in den RAM 30 zu laden. Sobald das Betriebssystem 46 in den RAM 30 geladen ist, führt die Prozessoreinheit 22 den Betriebssystemcode aus und verursacht, dass die visuellen Elemente zugehörig zu der Benutzerschnittstelle des Betriebssystems 46 auf dem Monitor 61 dargestellt werden. Wenn ein Anwendungsprogramm 48 durch einen Benutzer geöffnet wird, werden der Programmcode und relevante Daten von dem Festplattenlaufwerk 34 gelesen und in dem RAM 30 gespeichert.
  • Mit Bezug auf 2 ist ein exemplarisches System zum Praktizieren der vorliegenden Erfindung allgemein durch die Bezugsziffer 74 gekennzeichnet. Das System 74 schließt ein Client-Gerät ein, wie z.B. einen PC 76 und ein Datenübertragungsgerät 78, wie z.B. ein Modem, zum Zugriff auf ein Netzwerk 80 (z.B. das Internet). Ein Server 82 ist ebenso mit dem Netzwerk 80 in einer konventionellen Weise verbunden. Der PC 76 und das Modem 78 stellen eine Verbindung mit dem Server 82 über das Netzwerk 80 her, um die Übertragung von Daten zwischen dem Client und dem Server zu ermöglichen.
  • Ein System 84, das in 3 dargelegt ist, ist ähnlich dem System 74 von 2, ausgenommen, dass das System 84 einen ersten Client 86A und einen zweiten Client 86B einschließt, welche miteinander über eine Verbindung 88, wie z.B. einem Intranet, verbunden sind. Wie das System 74 stellt das Datenübertragungsgerät 78 (z.B. ein Modem) eine Verbindung zwischen dem ersten Client 86A und dem Netzwerk 80 her. Dementsprechend können die Clients 86A und 86B Daten mit dem Server 82 über das Netzwerk 80 austauschen.
  • Fachleute werden es bereitwillig begrüßen, dass die vorliegende Erfindung viele mögliche Variationen der Systeme 74 und 84, die in den 2 und 3 gezeigt sind, umfasst. Natürlich kann irgendeine Anzahl von Client- und Server-Geräten mit dem Netzwerk 80 (entweder direkt oder indirekt) verbunden sein. Zum Beispiel könnte das System 84 mehr als zwei Client-Geräte einschließen, von denen eins als ein Proxy für die anderen arbeiten würde. In diesem Fall könnten die Client-Geräte miteinander über ein Intranet verbunden sein, und die Netzwerkkarte in dem Proxy-Gerät könnte zu einem Router verbunden sein, der mit dem Netzwerk 80 über eine T1-Leitung verbunden ist. Außerdem könnte das Netzwerk 80 das Internet oder irgendein anderes öffentliches oder privates Netzwerk sein. Zusätzlich könnte das Datenübertragungsgerät 78 Teil des PCs 76 sein oder ein unabhängiges Hardware-Gerät.
  • In einer Anwendung der vorliegenden Erfindung ist das Client-Gerät der PC 76, das Gerät 78 ein 56 Kbps (Kilobits pro Sekunde) Modem, das Netzwerk 80 das Internet und der Server 82 eine Website, auf die zum Herunterladen von Software-Aktualisierungen für das Betriebssystem des PCs über das Internet zugegriffen werden kann. Mit Bezug auf 4 stellt eine Kurve 90 das Level der tatsächlichen Netzwerkbandbreitennutzung für einen Client-PC dar, der über einen Zeitraum auf das Internet zugreift. Die Kurve 90 steigt von T0 bis T2, um die Unruhe an Netzwerkaktivität zu reflektieren, die üblicherweise auftritt, wenn der Benutzer zunächst auf das Internet zugreift. Anschließend, nach einer kurzen Abnahme der Netzwerkaktivität bei T3, steigt die tatsächliche Nutzung des Clients zu einem Peak bei T4 stark an. Dieser Peak könnte irgendeine Anzahl von möglichen Aktionen darstellen, die durch den Client initiiert wurden, wie z.B. dem Herunterladen einer Webseite oder das Öffnen einer E-Mail-Nachricht. Während der Benutzer an dem Client-Gerät die Webseite oder die E-Mail-Nachricht liest, oder möglicherweise Musik über das Internet hört, nimmt die tatsächliche Netzwerknutzung zu einem signifikant geringerem Level zwischen T5 bis T8 ab.
  • Das relativ geringe Level der tatsächlichen Netzwerkbandbreitennutzung, das von T5 bis T8 (4) gezeigt ist, wird manchmal als "Netzwerkleerlauf" bezeichnet. Dieses Konzept unterscheidet sich von "Geräteleerlauf", welches auftritt, wenn ein PC-Benutzer gegenwärtig nicht das Keyboard oder die Maus verwendet. Wenn das Gerät für eine Zeitspanne im Leerlauf verbleibt, kann ein Bildschirmschoner aufgerufen werden. Jedoch kann die Netzwerknutzung zu derselben Zeit hoch sein, in der das Gerät im Leerlauf ist (z.B. während eines Downloads), und die Netzwerkschnittstelle kann im "Leerlauf" sein, wenn es die Maschine nicht ist. Deshalb ist die vorliegende Erfindung auf die Übertragung einer Reihe von Daten gerichtet, wie z.B. einer Software-Aktualisierung über ein Netzwerk zu einer Zeit, wenn die Netzwerknutzung relativ gering ist. Diese Übertragung von Daten ist gedacht, für den Benutzer unsichtbar zu sein, und das Gerät das Benutzers braucht während der Übertragung nicht im Leerlauf zu sein. Diese Übertragung von Daten könnte sich einfach nur auf Aktivitäten beziehen, die durch eine Benutzeraktion auf dem PC initiiert wurde, wie z.B. das Spielen eines Videospiels oder das Herunterladen von Musik-MP3-Dateien, eBooks usw. Außerdem können die zu übertragenden Daten Text-, Bild- und/oder Audio-Daten einschließen. Die vorliegende Erfindung ist ebenso gleichwertig einsetzbar für das Heraufladen von dem Client zu dem Server oder für andere Datenübertragungen zwischen Computern.
  • Wie unterhalb in Verbindung mit 7 beschrieben, überwacht die vorliegende Erfindung das Level der tatsächlichen Nutzung, die durch die Kurve 90 (4) dargestellt ist, und berechnet ein Schwellenwertlevel der Nutzung, unterhalb dessen die Übertragung von Daten zwischen dem Client und dem Server wahrscheinlich nicht durch andere Netzwerkaktivitäten beeinträchtigt ist. In einer bevorzugten Ausführungsform entspricht das Schwellenwertlevel ungefähr 33 % des maximal gefundenen Levels der tatsächlichen Netzwerknutzung. Wie es in 4 gezeigt ist, ist das Schwellenwertlevel allgemein durch Bezugsnummer 92 gekennzeichnet und ist anfänglich auf Null gesetzt. Die Netzwerkaktivität wird periodisch geprüft und ein neues Schwellenwertlevel jedes Mal berechnet, wenn ein neues Maximum identifiziert wird. Bei T1 ist das Level der tatsächlichen Bandbreitenverwendung 15 Kbps, was ein neues Maximum darstellt, weshalb der Schwellenwert 92 auf 5 Kbps gesetzt wird. Das Level der tatsächlichen Bandbreitennutzung wird wieder bei T2 geprüft und ein anderes neues Maximum von 30 Kbps wird identifiziert. Konsequenterweise wird der neue Schwellenwert 92 auf 10 Kbps berechnet.
  • Wenn das Level der tatsächlichen Nutzung 90 unter das Schwellenwertlevel 92 fällt, wie bei T3, sollte eine kurze Datenübertragung andere Netzwerkaktivitäten nicht signifikant beeinträchtigen. Die Datenübertragung könnte sofort nach dem ersten Entdecken, dass die tatsächliche Nutzung unterhalb des Schwellenwertlevels ist, ausgelöst werden. Ein konservativerer Ansatz, in dem es für den Benutzer zurückhaltender ist, ist es jedoch, mindestens zwei aufeinanderfolgende Ereignisse einer geringen Nutzung zu erkennen, bevor ein Herunterladen ausgelöst wird. Auf jeden Fall wird ein neues Maximum von 45 Kbps bei T4 entdeckt, und dabei die Berechnung eines aktualisierten Schwellenwertlevels von 15 Kbps ausgelöst. Wenn irgendeine Datenübertragung bei T3 gestartet worden wäre, würde es dann konsequenterweise bei T4 sofort unterbrochen werden. Bei T5 fällt die tatsächliche Nutzung 90 wieder unter das Schwellenwertlevel 92. Dieses Mal bleibt das Level der tatsächlichen Nutzung 90 von T5 bis T8 zwischen 5-10 Kbps, was weniger als das Schwellenwertlevel von 15 Kbps ist. Deshalb würde die Datenübertragung über das Netzwerk andere Netzwerkaktivitäten während dieser Zeitspanne nicht beeinträchtigen. Eine bevorzugte Architektur des Clients der vorliegenden Erfindung wird in 5 dargelegt. Ein Client 94 schließt einen Aktualisierungsclient 96, eine Aktualisierungs-Engine 98, einen Aktualisierungs-Downloader 100 (Herunterlade-Programm) und ein Aktualisierungs-Applet 102 ein. Der Client 94 ist mit einem Server, z.B. über eine Aktualisierungs-Website 104, über ein Verbindungspaar 106, 108, welches vorzugsweise HTTP-Verbindungen (Hypertext-Transfer-Protocol-Verbindungen) sind, verbunden. Der Aktualisierungs-Client 96 ist für Bekanntmachungen und Personalisierungsoptionen für den Benutzer verantwortlich. Die Aktualisierungs-Engine 98 kontrolliert Inhaltsinteraktionen mit der Aktualisierungs-Site 104, sowie das Erkennen, die Installation und die Protokollierung (logging) von Software-Aktualisierungen. Der Aktualisierungs-Downloader 100 ist für die Implementierung des Hintergrund-Herunterladens/-Drosselns von Paketen und der Verwaltung einer eingehenden Paketwarteschlange verantwortlich. Das Aktualisierungs-Applet 102 ermittelt die Konfiguration von Aktualisierungs-Bekanntmachungen für den Benutzer und andere Interaktionen mit dem Benutzer. Der Backend-Inhalt und -Katologe sind von der Aktualisierungs-Site 104 verfügbar.
  • Die vorliegende Erfindung nutzt eine Datenstruktur 110, die in 6 dargestellt ist. Die Datenstruktur 110 enthält ein erstes Feld 112, welches das maximal identifizierte Level der tatsächlichen Bandbreitennutzung enthält, und ein zweites Feld 114, welches das Schwellenwertlevel der Nutzung enthält. Wie in 4 gezeigt können sowohl das maximal identifizierte Level und das Schwellenwertlevel mit der Zeit variieren, abhängig von dem Level der tatsächlichen Nutzung. Wie oberhalb erwähnt wird das Schwellenwertlevel als eine Funktion des maximal identifizierten Levels der tatsächlichen Nutzung be rechnet. Deshalb wird ein neues Schwellenwertlevel jedes Mal berechnet, wenn ein neues maximales Level entdeckt wird.
  • 7 legt ein Ablaufdiagramm stellvertretend für ein Computerprogramm zum wahlweisen Übertragen von Daten über ein Netzwerk gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung dar. Das Programm wird bei Schritt 120 gestartet, wenn bestimmte vorgegebene Konditionen vorliegen. Üblicherweise sollte der Client-PC angeschaltet werden und mit dem Netzwerk verbunden werden, bevor das Programm gestartet wird. Während es für das Programm möglich wäre, die Verbindung zwischen dem PC und dem Netzwerk herzustellen, könnten manche PC-Benutzer durch die unerwarteten Geräusche ihres Modems erschrecken, das sich selbständig in das Netzwerk einwählt. Es ist ebenso möglich, dass der Client mit einem anderen Netzwerk verbunden ist (z.B. einem privaten Netzwerk), so dass ein Zugriff auf einen Webserver nicht möglich ist, bis der Client sich von dem privaten Netzwerk trennt und wieder mit dem Internet verbindet. Es kann durch "Pinging" des Servers und durch das Empfangen einer Bestätigung von dem Server bestätigt werden, dass der Client und der Server mit demselben Netzwerk verbunden sind. Die Fachleute können leicht ermitteln, welche vorbereitenden Konditionen angesichts einer Situation angebracht wären.
  • Sobald der Client mit demselben Netzwerk wie der Server verbunden ist, wird das Level der tatsächlichen Netzwerkbandbreitennutzung bei Schritt 122 erlangt. Wie in 4 gezeigt wird die tatsächliche Nutzung periodisch geprüft (sampled) (z.B. alle fünf Sekunden). Vorzugsweise wird dies durch das Verfolgen der Anzahl von eingehenden und ausgehenden Paketen über eine gegebene Zeitspanne (z.B. eine Sekunde) bei der Datenübertragungsschnittstelle zwischen dem Client und dem Netzwerk getan. Für einen PC, auf dem das "WINDOWS 98"-Betriebssystem läuft, ist diese Information unter Verwendung der GetIfEntry-Funktion aus der "iphlpapi.dll" verfügbar.
  • Relativ große Dateien bieten eine genauere Basis zum Messen des Levels der tatsächlichen Netzwerkbandbreitennutzung bei der Netzwerkschnittstelle. Zum Beispiel ist es schwierig, die Zeit zum Herunterladen für eine 200 Byte-Datei genau zu messen, weil der Overhead der Messung erheblich ist, und die kleine Datei die verfügbare Bandbreite nicht saturiert. Konsequenterweise aktualisiert die vorliegende Erfindung vorzugsweise das maximale Level der Nutzung nur, wenn die Messung des aktuellen Levels der Nutzung auf der Übertragungsgeschwindigkeit einer Datei basiert, die mindestens 4 KB groß ist.
  • Vorzugsweise wird jedes der "virtuellen Geräte" einzeln benannt, um eine genaue Überwachung sicherzustellen, besonders in einem System, welches komplexer ist als das System 74. Der Begriff "virtuelles Gerät", wie hierin verwendet, bezieht sich auf irgendein Netzwerkgerät mit einem Gerätetreiber, wie z.B. Modems (einschließlich Kabelmodems und ISDN-Modems), Netzwerkkarten und DSLs (Digital Subscriber Lines). Jeder Kanal eines 2-Kanal-ISDN-Modems wird als ein separates virtuelles Gerät für den Zweck der vorliegenden Erfindung betrachtet.
  • Es ist wesentlich, dass das Level der tatsächlichen Netzwerkbandbreitennutzung überwacht wird, als einfach auf den bewerteten (rated) oder aufgelisteten Durchsatz eines Netzwerkgeräts zu vertrauen. Der bewertete Wert ist nicht glaubwürdig, weil der maximale Durchsatz aus praktischer Sicht, der durch ein Modem erreicht wird, geringer ist als sein aufgelisteter Durchsatz, und für jede Netzwerksession unterschiedlich sein könnte. Variablen, wie z.B. die Qualität der Telefonverbindung, führen üblicherweise zu einer maximal verfügbaren Bandbreite von weniger als 50 Kbps für ein 56 Kbps-Modem.
  • Außerdem können bewertete Werte nicht als genau angenommen werden, wenn ein Client mit dem Netzwerk über einen Proxy verbunden ist. In dem System 84 gibt es eine Peer-to-Peer-Verbindung zwischen dem ersten Client 86A und dem zweiten Client 86B über das Intranet 88, und der erste Client 86A ist wiederum mit dem Netzwerk 80 durch ein Modem 78 verbunden. Unter Annahme eines 56 Kbps-Modems und eines 10 Mbps-Intranets, ist das Modem 78 der Engpass zu dem Netzwerk 80. Wenn der erste Client 86A 40 Kbps der Netzwerkbandbreite zu derselben Zeit verwenden würde, zu der der zweite Client 86B nur 5 Kbps der Bandbreite nutzt, wäre deshalb keine ausreichende Netzwerkbandbreite verfügbar, um eine Reihe von Daten (z.B. eine Software-Aktualisierung) von dem Server 82 zu einem der Clients herunterzuladen, ohne deren andere Netzwerkaktivitäten zu schwächen. Außerdem würde es nicht genau sein, anzunehmen, dass entweder der zweite Client 86B einen maximalen Durchsatz von 10 Mbps hat, oder dass reichlich Bandbreite verfügbar ist, weil der zweite Client 86B nur 5 Kbps der Netzwerkschnittstelle verwendet. Hier, in dem Fall eines Remote-Zugriffs, kann das Level der tatsächlichen Bandbreitennutzung für den zweiten Client 86B von der RAS-Gerätetabelle (Remote-Access-Service-Gerätetabelle) erlangt werden. Deshalb passt sich das Überwachen des tatsächlichen Durchsatzes bei jedem virtuellen Gerät vorteilhafterweise auf Konfigurationsveränderungen zwischen Sessions an und ist deshalb ein verlässlicherer Ansatz.
  • Nun wieder Bezug nehmend auf 7 wird das maximal erkannte Level der tatsächlichen Nutzung zunächst auf Null gesetzt. Anschließend, bei Schritt 124, wird ermittelt, ob die tatsächliche Nutzung größer als das aktuelle Maximum ist. Wenn nicht, wird die tatsächliche Nutzung bei Schritt 122 wieder geprüft. Wenn die tatsächliche Nutzung jedoch größer als das aktuelle Maximum ist, dann wird bei Schritt 126 ein neues Maximum gleich dem aktuellen tatsächlichen Level gesetzt. Als nächstes wird ein Schwellenwertlevel als eine Funktion des Maximums bei Schritt 128 berechnet. Der Schwellenwert wird anfänglich auf Null gesetzt, und ein neuer Schwellenwert wird jedes Mal berechnet, wenn ein neues Maximum entdeckt wird. Als eine allgemeine Aussage gilt, dass das Schwellenwertlevel irgendwo von ungefähr 5 % bis 80 % des maximal entdeckten Levels sein könnte. Jedoch ist das vorliegende bevorzugte Schwellenwertlevel für Internetanwendungen ungefähr 33 % des maximal entdeckten Levels. Sobald das neue Schwellenwertlevel berechnet worden ist, wird die tatsächliche Nutzung wieder bei Schritt 122 geprüft.
  • Es sollte beachtet werden, dass die vorliegende Erfindung das Schwellenwertlevel als einen Prozentsatz der tatsächlichen Netzwerkbandbreite in Kilobits pro Sekunde berechnet, im Gegensatz zu anderen Parametern, wie z.B. dem Prozentsatz der Zeit, in der die Netzwerkverbindung für eine gegebene Zeitspanne belegt ist. Zum Beispiel verwendet ein Client-Gerät, der seine Netzwerkverbindung 75 % der Zeit im Verlauf einer Stunde nutzt, nicht notwendigerweise 75 % seiner verfügbaren Bandbreite. Wenn der Benutzer bei dem Client-PC lediglich eine Webseite liest, eine E-Mail liest, Musik zuhört oder Ähnliches, ist es tatsächlich wahrscheinlich, dass das Level der tatsächlichen Bandbreitennutzung gut unterhalb der maximal verfügbaren Bandbreite ist. Fachleute werden verstehen, dass die vorliegende Erfindung, welche auf Client-Level implementiert ist, grundsätzlich unterschiedlich ist von Verfahren zum Beschränken der Bandbreite auf Hardware-Level (z.B. Sockets).
  • Jedes Mal, wenn das Level der tatsächlichen Netzwerkbandbreitennutzung bei Schritt 122 erlangt wird, wird es auch mit dem aktuellen Schwellenwertlevel verglichen. Bei Schritt 130 wird ermittelt, ob die tatsächliche Nutzung geringer als das Schwellenwertlevel ist. Wenn dem so ist, kann eine Software-Aktualisierung (oder andere Reihe von Daten), die von dem Server verfügbar ist, über das Netzwerk zu dem Client heruntergeladen werden. Um Beeinträchtigungen mit irgendwelchen anderen derzeitigen oder zukünftigen Netzwerkaktivitäten des Clients zu minimieren, wird das Herunterladen vorzugsweise durch das Herunterladen der Software-Aktualisierung in mehreren Segmen ten ausgeführt. Dementsprechend wird bei Schritt 132 ein Segment der Datei von dem Server zu dem Client heruntergeladen. Wenn die Netzwerkaktivität des Clients nach dem Herunterladen des ersten Segments zunimmt, kann das Herunterladen der gesamten Datei unterbrochen werden, bis die tatsächliche Nutzung unterhalb des Schwellenwertlevels zurückfällt. Wenn jedoch das Netzwerk für eine verlängerte Zeitspanne im Leerlauf ist, kann das Herunterladen durch das Herunterladen stufenweise größere Segmente der Datei über das Netzwerk beschleunigt werden.
  • In einer bevorzugten Ausführungsform der vorliegenden Erfindung wird ein Zählgerät bereitgestellt. Um das Herunterladen von stufenweise größeren Dateisegmenten zu ermöglichen. Zum Beispiel kann eine 144 KB-Datei von dem Server zu dem Client über das Internet dadurch heruntergeladen werden, dass zuerst ein 8 KB-Segment der Datei bei Schritt 132 aus 7 übertragen wird. Ein kleines Segment, wie z.B. 8 KB, wurde als effektiver Standard befunden, weil es 100 % der Pipeline für eine kurze Zeitspanne benutzt und ein häufiges Überwachen der tatsächlichen Nutzung zwischen Segmenten ermöglicht. Selbst wenn ein Benutzer auf eine URL (Uniform Resource Locator) während des Herunterladens eines 8 KB-Blocks klickt, wird es für den Benutzer keine merkliche Verzögerung geben. Außerdem sind, in dem Fall, dass eine Unterbrechung auftritt, 8 KB die meisten Daten, die verloren gehen können.
  • Bei Schritt 134 wird es ermittelt, ob die gesamte Datei heruntergeladen worden ist. Weil der 8 KB-Block das erste Segment der 144 KB-Datei war, wurde die gesamte Datei noch nicht heruntergeladen, und der Zähler, welcher anfänglich auf Null gesetzt wurde, wird bei Schritt 136 auf "1" erhöht. Der Zähler verfolgt die Anzahl der Segmente die nacheinander ohne Unterbrechung heruntergeladen worden sind, so dass die Größe der Segmente vergrößert werden kann, solange wie die Netzwerkaktivitäten gering bleiben. Als ein Beispiel könnte die Größe der Segmente auf 16 KB erhöht werden, wenn der Zähler gleich "2" ist, und die Größe der Segmente könnte auf 32 KB erhöht werden, wenn der Zähler gleich "4" ist. Dies würde ermöglichen, die 144 KB-Datei in sieben stufenweise größeren Segmenten herunterzuladen, im Gegensatz zu 18 der kleineren 8 KB-Segmente, vorausgesetzt, die Netzwerkaktivität bleibt unterhalb des Schwellenwertlevels. Obwohl die größeren Segmente länger brauchen, um heruntergeladen zu werden, und dies deshalb zu einer weniger häufigen Überwachung der tatsächlichen Nutzung führt, nutzt dieser Ansatz alle längeren Zeitspannen mit geringer Netzwerkaktivität. Üblicherweise liegt jedem Segment ein Kopf (Header) bei, so dass das Übertragen einer kleineren Anzahl von größeren Segmenten auch den Netzwerk-Overhead durch das Re duzieren der Gesamtanzahl an Köpfen, die über das Netzwerk übermittelt werden, reduziert. Gegenwärtig ist ein 64 KB-Segment das größte Segmente, das bevorzugt wird, wenn ein 56 Kbps-Modem verwendet wird.
  • Nachdem bei Schritt 136 der Zähler erhöht wurde, werden die Schritte 122 und 130 wiederholt. Wenn das Level der tatsächlichen Nutzung nicht länger kleiner als das Schwellenwertlevel ist, wird das Herunterladen der Datei unterbrochen und der Zähler bei Schritt 138 gelöscht (d.h. auf Null gesetzt). Anschließend wird die tatsächliche Nutzung wieder bei Schritt 122 geprüft. Für den Fall, dass das Herunterladen unterbrochen wurde, wird das Herunterladen von dem Punkt der Unterbrechung wieder aufgenommen. Wenn jedoch die tatsächliche Nutzung unterhalb des Schwellenwertlevels bleibt, wird das nächste Segment bei Schritt 132 heruntergeladen, und der Vorgang wird wiederholt, bis es bei Schritt 134 ermittelt wird, dass die gesamte Datei heruntergeladen worden ist. Wenn dem so ist, wird der Zähler bei Schritt 140 gelöscht und die Schleife endet bei Schritt 142.
  • Es sollte beachtet werden, dass das Merkmal des schrittweise Herunterladens der vorliegenden Erfindung einen Filtern oder eine ähnliche Technik erfordern kann, um die Einschränkungen mancher existierender Server zu bewältigen. Während stufenweises Herunterladen auf dem FTP-Level (File Transfer Protocol-Level) weitgehend verfügbar ist, ist es auf dem HTTP-Level nicht verfügbar, bis HTTP-1.1-Server verfügbar wurden. Wie oberhalb diskutiert, verwendet die vorliegende Erfindung einen Ansatz mit Byte-Bereich mit standardmäßig 8 KB-Dateisegmenten. Für das erste Segment wird in der Anfrage zum Herunterladen ein Byte-Bereich von "0-7999" von dem Client spezifiziert, der Bereich "8000-15999" wird in der Anfrage zum Herunterladen für das zweite Segment spezifiziert usw. Der Byte-Bereichteil der Anfrage würde jedoch verloren gehen, wenn auf einen HTTP-1.0-Server gestoßen wird, und die gesamte Datei auf einmal heruntergeladen werden würde. Einen Weg, um dieses Problem zu vermeiden, ist die Verwendung eines ISAPI-Filters (Internet Server Application Programming Interface Filter), um eine HTTP-1.1-Byteanfrage über einen HTTP-1.0-Proxy zu simulieren. Selbst wenn auf einen HTTP-1.0-Server gestoßen wird, wird die Byte-Bereichinformation dann nicht verloren gehen.
  • Natürlich kann die bevorzugte Größe der Segmente oder der Byte-Bereich basierend auf Faktoren, wie z.B. der Geschwindigkeit des Modems, drastisch variieren. Die vorangegangenen Beispiele (z.B. die Standardsegmentgröße von 8 KB) basieren auf der An nahme, dass eine große Anzahl von Benutzern auf das Netzwerk mit 56 Kbps-Modems zugreifen werden. Es kann jedoch angebracht sein, anzunehmen, dass eine große Anzahl von Benutzern auf das Netzwerk mit 28 Kbps-Modems zugreifen werden. In diesem Fall würde die bevorzugte Standardsegmentgröße eher 4 KB sein als 8 KB. In ähnlicher Weise würden die stufenweise größeren Segmente 8 KB und 16 KB sein als 16 KB und 32 KB. Fachleute werden begrüßen, dass die Verwendung einer Vielfalt von anderen Segmentgrößen ebenso durch die vorliegende Erfindung betrachtet wird.
  • In einer anderen Ausführungsform der vorliegenden Erfindung kann die Überwachung der tatsächlichen Bandbreitennutzung während eines umfangreichen Herunterladens eine größere Gewichtung gegeben werden als das Überwachen der tatsächlichen Bandbreitennutzung vor oder nach solch einem Herunterladen. Das heißt, wenn eine vorbestimmte Anzahl von Segmenten nacheinander heruntergeladen würden, wird das Durchschnittslevel der Verwendung für jedes der Segmente als das neue "Maximum"-Level angepasst. Zum Beispiel, wenn die vorgegebene Anzahl von Segmenten 10 ist, würde das Durchschnittslevel der Verwendung während des Herunterladens von 10 fortlaufenden Segmenten das vorherige maximale Level ersetzen, selbst wenn das Durchschnittslevel geringer als der vorherige Maximumwert ist. Außerdem würde, wenn 11 Segmente nacheinander heruntergeladen werden, das Durchschnittslevel für die Segmente 2-11 berechnet werden, so dass ein gleitender Durchschnitt von 10 Herunterladevorgängen sowohl ein neues Maximumlevel als auch ein neues Schwellenwertlevel ermittelt.
  • Das Verwenden eines gleitenden Durchschnitts, um das Maximumlevel zu identifizieren, stellt vorteilhafterweise eine dynamische Zunahme oder Abnahme des Schwellenwertlevels in Erwiderung auf eine Veränderung der Netzwerkdatenübertragungsbedingungen bereit, ohne die Genauigkeit der Messungen zu kompromittieren. Vorzugsweise wird das Maximumlevel bei dem letzten gleitenden Durchschnitt (der vorbestimmten Anzahl von Segmenten) eingefroren bleiben, bis ein anderes ausgedehntes Herunterladen eintritt. Mit anderen Worten wird ein Maximumlevel, das auf einem ausgedehnten Herunterladen basiert, als eine genauere Widerspiegelung der verfügbaren Bandbreite betrachtet als das anfängliche Maximumlevel, das vor einem Herunterladen gemessen wurde. In ähnlicher Weise kann das Herunterladen eines isolierten Segments keine genaue Widerspiegelung der verfügbaren Bandbreite bereitstellen. Um die Anzahl der nachfolgenden Herunterladevorgänge für den gleitenden Durchschnitt zu verfolgen, kann ein Zähler, wie z.B. der eine, auf den in 7 verwiesen wurde, verwendet werden.
  • Eine andere Ausführungsform der vorliegenden Erfindung wird unterhalb in Verbindung mit den 8-10 beschrieben. Mit Bezug auf 10 überwacht die weitere Ausführungsform der vorliegenden Erfindung das Level der tatsächlichen Netzwerknutzung, die durch die Kurve 804 (8) dargestellt wird, und berechnet die Größe eines Datenblocks, der innerhalb eines vorgegebenen Intervalls (Tn-1 – Tn) (8) übertragen werden kann, so dass die Übertragung von Daten zwischen dem Client und Server wahrscheinlich andere Netzwerkaktivitäten nicht beeinträchtigt. Ein Block stellt einen Teil einer gesamten Reihe von Daten, die übertragen werden müssen, oder eine andere unabhängige, nützliche Dateneinheit dar. Diese weitere Ausführungsform verwendet die verfügbare Bandbreite eines Netzwerks durch verarbeitende Blockgrößen (computing block sizes) und Verfeinern der Netzwerkgeschwindigkeitsschätzungen vollständiger, im Gegensatz zu einer Ausführungsform wie oben beschrieben, die einen festen Schwellenwert verwendet, um zu vermitteln, wann Daten übertragen werden sollen.
  • In der Praxis und als Beispiel und nicht Einschränkung, stellt 8 manche Konzepte von der weiteren Ausführungsform dieser Erfindung dar. Wie in 8 gezeigt, ist die Prüfzeit (sampling time) im Allgemeinen durch Tn bezeichnet und das Intervall Tn-1 – Tn ist anfänglich auf einen Wert, wie z.B. 1 Sekunde, gesetzt. In 8 würde der Bereich (Gebiet 1) unter der externen Verwendungskurve 804 zwischen den Intervallen T1 und T2 (808) die gesamte Anzahl von Bytes darstellen, die durch andere Prozesse, als die der aktuelle Erfindung, übertragen worden wären. Der Bereich (Gebiet 2), der durch den beobachteten Netzwerkdurchsatz 802, die externe Verwendungskurve 804 und die Intervalle T1 und T2 (808) begrenzt ist, repräsentiert die Menge an Bytes, die möglicherweise für eine Blockgröße zugewiesen werden könnten. Wie gezeigt schwanken der Netzwerkdurchsatz 802 und die externe Verwendung 804 mit der Zeit, und erfordern dabei die Wiederberechnung der Blockgröße, um die verfügbare Bandbreite voll zu nutzen. Die Netzwerkaktivität wird an verschiedenen Punkten während jedem Intervall geprüft. Das Prüfintervall wird dann in Erwiderung auf die ermittelte Netzwerkgeschwindigkeit und -nutzung eher angepasst, als im Gegensatz zu der Ausführungsform der 4-7 bei einem festen Wert aufrechterhalten zu werden. Dies reduziert CPU- und Netzwerk-Overhead, der von der Verwendung von Blockgrößen entsteht, die nicht für das Netzwerk optimiert sind.
  • Diese Ausführungsform schließt drei Komponenten ein. Es gibt eine Netzwerkschnittstellenkomponente, die Daten über eine Anzahl von Bytes sammelt, die durch die Netzwerkschnittstellen-Hardware gesendet und empfangen wurde. Es gibt eine Netzwerk geschwindigkeitberechnungskomponente, die die globale Geschwindigkeit, Herunterladegeschwindigkeit (Download speed) und freie Bandbreite ermittelt. Letztlich gibt es eine Datenblockherunterladekomponente (Data Block Download component), die die Werte verwendet, die durch die Geschwindigkeitskomponente berechnet wurden, um eine Blockgröße und Herunterladeintervallgröße zu berechnen.
  • Die Algorithmen, die durch diese weitere Ausführungsform verwendet werden, werden unterhalb genau beschrieben. Es sollte hier nochmals beachtet werden, dass die Bezüge innerhalb der folgenden Algorithmen exemplarisch sind, weil dieser Algorithmus ebenso auf das Heraufladen von Daten anwendbar ist.
  • Die Ausführungsform teilt jedes Zeitintervall in zwei Phasen, eine Download-Phase und eine Leerlauf-Phase. Während der Download-Phase, lädt die Software einen Datenblock vom Server herunter. Während der Leerlauf-Phase überlässt die Software das Netzwerk anderen Anwendungen.
  • Die Netzwerküberwachungskomponente der Ausführungsform hat Zugriff auf einen Zähler, der die Anzahl an Bytes aufzeichnet, die durch eine Netzwerkschnittstelle zu einem gegebenen Moment durchgelaufen sind. Die Differenz zwischen zwei Ablesungen des Zählers gibt die Anzahl an Bytes an, die in der Zeit zwischen den zwei Ablesungen übertragen worden sind.
  • Während jedem Zeitintervall (Tn-1 – Tn) prüft die Netzwerküberwachungskomponente die Systemuhr und den Zähler für übertragene Bytes an drei Punkten: (1) dem Beginn des Intervalls, welcher ebenso der Beginn der Download-Phase ist, (2) das Ende der Download-Phase und (3) das Ende des Intervalls. Die Download-Komponente zeichnet die Intervalllänge, die Größe des Blocks, der heruntergeladen werden soll, und die erwartete Dauer der Download-Phase auf. Am Ende des Intervalls aktualisiert die Netzwerkgeschwindigkeitskomponente ihre Geschwindigkeitsschätzungen wie folgt:
    • 1. Wenn ein Block während des Intervalls heruntergeladen wurde, wird die Download-Rate (Herunterladerate) berechnet: letzte Rate = (Blockgröße + Netzwerkkopfgröße)/(Zeit bei Punkt 2 – Zeit bei Punkt 1)und die durchschnittliche Download-Rate wird aktualisiert. Die derzeitige Ausführungsform verwendet die Formel 1. neue Download-Rate = alte Download-Rate·(Prüfzähler – 1)/Prüfzähler; 2. neue Download-Rate = neue Download-Rate + (letzte Rate/Prüfzähler);mit dem Prüfzähler (sample-count) gleich 3 gesetzt. Jedoch könnten viele andere Mittelwertberechnungsformeln anstatt dessen verwendet werden. Dies gilt auch für die anderen Durchschnittswerte, die der Downloader berechnet. Die durchschnittliche Download-Rate wird es der Blockherunterladekomponente ermöglichen, eine Blockgröße auszuwählen, die während der Download-Phase des nächsten Intervalls abgeschlossen werden kann.
    • 2. Die Komponente misst Netzwerknutzung während der Download-Phase, um bei der globalen Geschwindigkeit anzukommen: übertragene Bytes = (Bytes bei Punkt 2 – Bytes bei Punkt 1) Download-Phasenlänge = (Zeit bei Punkt 2 – Zeit bei Punkt 1) letzte globale Geschwindigkeit = übertragene Bytes/Download-PhasenlängeWenn dies das erste Intervall seit dem Beginn des Herunterladens ist, wird die globale Geschwindigkeit auf die letzte globale Geschwindigkeit gesetzt. Andernfalls, wenn letzte globale Geschwindigkeit < globale Geschwindigkeit/2 dann globale Geschwindigkeit = (globale Geschwindigkeit·0,9). Letzte globale Geschwindigkeit wird durch denselben Algorithmus, der für die durchschnittliche Download-Rate verwendet wird, in eine globale Geschwindigkeit gemittelt. Die globale Geschwindigkeit wird als eine Schätzung des gesamten Durchsatzes der Netzwerkschnittstelle verwendet.
    • 3. Messe die Netzwerknutzung über das gesamte Intervall, berechne den Teil, der von Quellen außerhalb des Downloaders ist, und berechne freien Prozentsatz: übertragene Bytes = (Bytes bei Punkt 3 – Bytes bei Punkt 1) – (Blockgröße + Overhead) tatsächliche Intervalllänge = (Zeit bei Punkt 3 – Zeit bei Punkt 1) externe Nutzung = übertragene Bytes/tatsächliche Intervalllänge freier Prozentsatz = 100·(1 – externe Nutzung/globale Geschwindigkeit)
  • Die Block-Download-Komponente verwendet den freien Prozentsatz, um die relative Länge der Download-Phase und Leerlauf-Phase des nachfolgenden Download-Intervalls auszuwählen. Die weitere Ausführungsform begrenzt den freien Prozentsatz auf 80 % als Absicherung gegenüber externen Aktivitäten, während andere ähnliche Richtlinien ebenso möglich sind.
  • Die weitere Ausführungsform passt die Dauer des Prüfintervalls in Abhängigkeit von der Netzwerkgeschwindigkeit und -nutzung eher an, als einen festen Wert wie in den 1-7 zu verwenden. Dies reduziert den CPU- und Netzwerk-Overhead, der aus der Verwendung von Blockgrößen entsteht, die nicht für das Netzwerk optimiert sind. In vielen Implementierungen z.B. würde die Verwendung einer sehr großen Blockgröße erfordern, dass eine unerschwingliche Menge an Speicher als ein Puffer reserviert wird. Umgekehrt könnte das Senden von Daten als eine Reihe von sehr kleinen Blöcken Ressourcen dadurch verschwenden, dass zusätzliche Netzwerkkopffelder und Netzwerkprotokollbestätigungen erforderlich wären. Das Erlangen von Blockgrößen, die den vollen Nutzen aus der Netzwerkbandbreite ziehen, und die Beeinträchtigungen für Netzwerkdatenverkehr minimieren, ist ein Vorteil dieser weiteren Ausführungsform. Es gibt mehrere Schritte und Komponenten, die zum Ermitteln der passenden Blockgrößen involviert sind.
  • Zum Zweck der weiteren Darstellung und mit Bezug auf 8 soll angenommen werden, dass die obere Grenze für eine Blockgröße, welche durch den Speicher des Downloaders vorgeschrieben ist, 30 Kb ist, d.h., der Downloader kann 30 Kb an Daten haften, bevor er auf eine Disk schreiben muss. Es ist des Weiteren anzunehmen, dass die Standardintervalldauer eine Sekunde ist, und die berechnete Blockgröße für das Intervall T5 – T6 35 Kb ist, was über das Maximum hinausgeht. Als solches werden die Algorithmen der vorliegenden Erfindung die Dauern für die nächsten Intervalle T6 – T7 schrumpfen, um die Blockgröße unter das Maximum zu reduzieren. Mit dieser Darstellung fortfahrend, wird es, wenn das Intervall T6 – T7 z.B. auf 0,8 Sekunden reduziert wäre, in einer berechneten Blockgröße von 28 Kb resultieren, was innerhalb der Grenzen für eine Blockgröße ist. Deshalb wird das nächste Intervall T7 – T8 (820) ebenso auf 0,8 Sekunden gesetzt, anstatt auf 1 Sekunde. Fachleute werden feststellen, dass die Verwendung von einer Vielfalt an Intervallwerten und anderen Blockgrößengrenzen ebenso durch die vorliegende Erfindung in Erwägung gezogen werden. Umgekehrt wird eine Blockgröße als zu klein betrachtet, wenn die berechnete Größe unter eine untere Standardgrenze fällt, welche als eine ineffiziente Datengröße ermittelt worden ist, um sie in einem gegebenen Intervall zu übertragen. In diesem Fall kann der Downloader wählen, die Minimumgröße herunterzuladen und anschließend für ein oder mehrere Intervalle nichts herunterzuladen, oder er kann wählen, die Intervalllänge zu vergrößern.
  • Etliche konservative Ansätze wurden in diese weitere Ausführungsform aufgenommen, um ein akzeptables Level an System-Ansprechempfindlichkeit (system responsiveness) zu unterstützen, während die verfügbare Netzwerkbandbreite vollständiger genutzt wird. Fachleute werden erkennen, dass irgendeine Anzahl von mehr oder weniger konservativen Ansätzen verwendet werden könnte und durch die vorliegende Erfindung in Erwägung gezogen werden. Genauer gesagt, eine Glättung der geprüften Netzwerkdaten (sampled network data) wird durch die Verwendung eines Durchschnitts für die globale Geschwindigkeit und Download-Geschwindigkeit erreicht, wobei der Durchschnitt zugunsten des letzen Samples gewichtet ist. Beim Berechnen des laufenden Durchschnitts zählt das letzte Sample zu 30 % für die neue Summe, wobei der vorherige Wert zu 70 % zählt. Während dieses bestimmte Verfahren zum Abschwächen des letzten Wertes mit vorherigen Durchschnittswerten verwendet wird, würden andere Implementierungen dasselbe Ergebnis erreichen, welches die Besserung (recovery) von Spitzen in der Netzwerkaktivität erlaubt. Zum Beispiel würde jedes Mal das Halten der letzten 10 Samples und das anschließende Wiederberechnen eines Durchschnitts unter Verwendung aller gespeicherten Samples und des neu erlangten Samples das gleiche Resultat erreichen. Ein anderer Ansatz, der beansprucht wurde, bezieht eine globale Rate ein, von der ermittelt wurde, dass sie kleiner als eine Hälfte der durchschnittlichen Nutzungsrate ist. In diesem Fall wird angenommen, dass die Reduzierung eher eine Folge von Inaktivität des Clients ist, als ein plötzlicher Verlust an Bandbreite. Deshalb wird der neu ermittelte globale Geschwindigkeitswert nicht in den Durchschnitt eingebracht, weil dies den Bandbreitendurchschnitt übermäßig reduzieren würde. Jedoch wird der globale Geschwindigkeitsdurchschnitt ein wenig durch einen Wert, wie z.B. 10 %, für den Fall, dass die Bandbreite sich wirklich verändert hat, reduziert. Ein Beispiel für solch eine Bandbreitenveränderung wäre, wenn das Telefonleitungsrauschen plötzlich aufgrund eines Gewitters in dem Gebiet ansteigt. Noch ein anderer konservativer Ansatz der einbezogen wurde, bezieht eine Begrenzung des freien Prozentsatzes auf einen Wert, wie z.B. 80 %, ein, um einen kleinen Puffer für andere Applikationen zu lassen.
  • Die weitere Ausführungsform der vorliegenden Erfindung verwendet eine Datenstruktur 900, die in 9 dargestellt ist. Die Datenstruktur 900 schließt ein erstes Feld 902 ein, welches die Zeit enthält, zu der das identifizierte Level der tatsächlichen Bandbreitennutzung genommen wurde, und ein zweites Feld 914, welches die Gesamtanzahl an Bytes enthält, die durch die Netzwerkschnittstelle gehen, was ein monoton ansteigender Zähler von Bytes, die durch den Adapter gesendet oder empfangen worden sind, ist. Wie in 8 gezeigt, variieren sowohl der Zeitstempel als auch der Byte-Zähler mit jeder Abtastung (sampling), abhängig von dem Level der tatsächlichen Nutzung 802. Durch das Abziehen aufeinanderfolgender Messungen dieser Werte werden eine Intervallperiode und eine Anzahl an Bytes, die während dieser Intervallperiode übertragen werden, erlangt.
  • 10 legt ein Flussdiagramm dar, das repräsentativ für ein Computerprogramm zum wahlweisen übertragen von Daten über ein Netzwerk gemäß der weiteren Ausführungsform der vorliegenden Erfindung ist. Das Programm wird bei Schritt 1000 gestartet, wenn bestimmte vorgegebene Bedingungen vorliegen. Sobald der Client mit demselben Netzwerk wie der Server verbunden ist, werden die Blockgröße, freie Prozentsatz und das Sampling-Intervall auf Standardwerte bei Schritt 1002 initialisiert. Wie in 8 gezeigt wird die tatsächliche Nutzung periodisch (z.B. jede Sekunde) geprüft. Vorzugsweise, wie oben diskutiert, wird dies durch das Verfolgen der Anzahl an eingehenden und ausgehenden Bytes zu wichtigen Momenten der Intervall-Sample-Zeitspanne (z.B. dem Start des Intervalls, Ende einer Blockübertragung und Ende des Intervalls) bei der Datenübertragungsschnittstelle zwischen dem Client und dem Netzwerk getan.
  • Wieder Bezug nehmend auf 10, finden basierend auf den initialisierten Werten für die Blockgröße, freien Prozentsatz und Intervall ein Herunterladen eines Blocks und eine Netzwerkdatensammlung bei Schritt 1004 statt. Anschließend, bei Schritt 1006, werden die netzwerkgeschwindigkeitsbezogenen Elemente, nämlich Download-Geschwindigkeit, globale Geschwindigkeit und freier Prozentsatz, entsprechend verfeinert und aktualisiert. Als nächstes wird eine Blockgröße als eine Funktion der netzwerkgeschwindigkeitsbezogenen Elemente bei Schritt 1008 berechnet. Eine neue Blockgröße wird jedes Mal nach dem Herunterladen eines Blocks berechnet. Als eine allgemeine Prämisse könnte die Blockgröße irgendwo zwischen der Größe der Datenübertragungspaketköpfe und der Größe des Speichers, der für den Downloader reserviert ist, liegen. Die derzeit bevorzugte minimale Blockgröße für Internet-Anwendungen ist ungefähr 1000 Bytes, 500 für Blockdaten und 500 für HTTP-Anfrage- und -Antwort-Paketköpfe. Sobald die Größe berechnet worden ist, wird die tatsächliche Nutzung bei Schritt 1004 wieder geprüft.
  • Bei Schritt 1006 werden ein Durchschnitt der Herunterladegeschwindigkeit und der globalen Geschwindigkeit zusammen mit dem freien Prozentsatzwert des Netzwerks berechnet. Wie vorher mit Bezug auf 8 diskutiert, wird während dieses Prozesses ermittelt, ob die beobachtete globale Geschwindigkeit innerhalb eines akzeptablen Bereichs der durchschnittlichen globalen Geschwindigkeit ist, und ob der freie Prozentsatz kleiner als ein vordefinierter maximaler Anteil des Bandbreitenwertes ist. In der weiteren Ausführungsform dieser Erfindung muss die beobachtete globale Geschwindigkeit größer als eine Hälfte der durchschnittlichen globalen Geschwindigkeit sein, um in der Berechnung einer neuen durchschnittlichen globalen Geschwindigkeit eingeschlossen zu werden. Andersfalls wird der neue Durchschnitt als 90 % der vorher durchschnittlichen globalen Geschwindigkeit ermittelt. Mit Bezug auf den freien Prozentsatz kann die weitere Ausführungsform dieser Erfindung es erfordern, dass ein berechneter freier Prozentsatzwert nicht größer als 80 % sein kann.
  • Software-Aktualisierungen (oder andere Reihen von Daten), die von dem Server verfügbar sind, können über das Netzwerk zu dem Client heruntergeladen werden. Um Beeinträchtigungen mit irgendwelchen anderen derzeitigen oder zukünftigen Netzwerkaktivitäten des Clients zu minimieren, wird wie oberhalb diskutiert das Herunterladen bevorzugt durch das Herunterladen der Software-Aktualisierung in etlichen Segmenten, sonst als Block bezeichnet, ausgeführt. Entsprechend wird bei Schritt 1004 ein Segment der Datei von dem Server zu dem Client heruntergeladen. Wenn die Netzwerkaktivität des Clients nach dem Herunterladen des ersten Segments zunimmt, wird die weitere Ausführungsform kleinere Blöcke herunterladen, es sei denn, die Blockgröße fällt unter das vorher diskutierte Minimum. Wenn das Netzwerk in den Leerlauf fällt, wird jedoch die nächste Iteration des Schritts 1006 die Blockgröße angemessen vergrößern.
  • Bei Schritt 1008 wird die berechnete Blockgröße an einen unteren und oberen Wert gebunden. Die untere Grenze ist eine Größe, die so klein ist, dass es effizienter ist, in diesem bestimmten Intervall nichts zu tun. Wenn eine berechnete Blockgröße während zwei aufeinanderfolgender Intervalle unter dieser Grenze liegt, wird die Größe des Intervalls erhöht, und es wird kein Block während des zweiten Intervalls, wie bei Schritt 1010 gezeigt, heruntergeladen. Wenn die berechnete Blockgröße während des neu vergrößerten Intervalls unter der unteren Blockgrenze bleibt, wird die Blockgröße auf eine "belegte Blockgröße" ("Busy-block-size") gesetzt, und das Intervall wird auf einen Standard-Intervallwert gesetzt. Die "belegte Blockgröße" ist ein Wert, der es erlaubt, dass ein minimales Herunterladen stattfindet, so dass 1) etwas Fortschritt in dem Herunterladepro zess gemacht wird, 2) die Erfindung in der Lage ist, sich mit einer Situation zu befassen, worin ein Server so langsam ist, dass die berechnete Blockgröße nie mehr zu dem Downloader-Minimum anwachsen wird, und 3) der Prozess des Herunterladens die Verfeinerung von geschätzten Netzwerkgeschwindigkeiten erlaubt. Eine Blockgröße, die die maximale Grenze übersteigt, führt zu einem Verkleinern des Intervalls, so dass die berechnete Blockgröße innerhalb der Grenzen gehalten werden kann.
  • Die vorliegende Erfindung ist in Verbindung mit beispielhaften Ausführungsformen beschrieben worden, welche eher als illustrativ, als einschränkend, gedacht sind. Zum Beispiel ist die Erfindung in dem Kontext des Herunterladens von Software-Aktualisierungen für das Betriebssystem des PCs beschrieben worden. Die Software-Aktualisierungen könnten sich ebenso einfach auf viele andere Software-Typen beziehen, wie z.B. Aktualisierungen für Videospiele auf einem PC. Außerdem können die Daten, die heruntergeladen werden sollen, Text-, Bild- und/oder Audio-Daten einschließen. Die vorliegende Erfindung ist ebenso für das Heraufladen von dem Client zu dem Server verwendbar.
  • Alternative Ausführungsformen der vorliegenden Erfindung werden jenen Fachleuten, zu deren Fach es gehört, nach Durchsicht der Beschreibung einschließlich der gezeichneten Figuren ersichtlich werden. Dementsprechend ist der Umfang der vorliegenden Erfindung eher durch die anhängigen Ansprüche als die vorangegangene Beschreibung definiert.

Claims (42)

  1. Verfahren zum Übertragen einer Reihe von Daten zwischen einem lokalen Computergerät und einem Remote-Computergerät über ein Netzwerk, wobei das Verfahren umfasst: Überwachen des Levels der tatsächlichen Bandbreitennutzung einer Netzwerkverbindung des lokalen Computergeräts durch wiederholendes Ermitteln einer Anzahl von Bytes, die über die Netzwerkverbindung des lokalen Computergeräts übertragen wird; Identifizieren eines maximalen überwachten Levels der überwachten tatsächlichen Bandbreitennutzung der Netzwerkverbindung des lokalen Computergeräts; Berechnen eines Schwellenwertlevels der Bandbreitennutzung als eine Funktion des maximalen überwachten Levels der Bandbreitennutzung; und wenn das tatsächliche Level kleiner ist als das Schwellenwertlevel, Übertragen mindestens eines Teils der Reihe von Daten zwischen dem lokalen Computergerät und dem Remote-Computergerät über das Netzwerk.
  2. Verfahren nach Anspruch 1, wobei der mindestens eine Teil der Reihe von Daten über das Netzwerk von dem Remote-Computergerät zu dem lokalen Computergerät übertragen wird.
  3. Verfahren nach Anspruch 1, wobei der mindestens eine Teil der Reihe von Daten über das Netzwerk von dem lokalen Computergerät zu dem Remote-Computergerät übertragen wird.
  4. Verfahren nach einem der Ansprüche 1 bis 3, wobei das Überwachen an der Schnittstelle zwischen dem Client und dem Netzwerk stattfindet.
  5. Verfahren nach einem der Ansprüche 1 bis 4, wobei das Netzwerk das Internet ist.
  6. Verfahren nach einem der Ansprüche 1 bis 5, wobei das Schwellenwertlevel gleich einem vorgegebenem Prozentsatz des maximalen überwachten Levels ist.
  7. Verfahren nach einem der Ansprüche 1 bis 6, wobei die Reihe von Daten ein Software-Update einschliesst.
  8. Verfahren nach einem der Ansprüche 1 bis 7, das des Weiteren jedes Mal, wenn ein Teil der Reihe von Daten empfangen wird, das Wiederholen von mindestens dem Schritt des Überwachens umfasst.
  9. Verfahren nach einem der Ansprüche 1 bis 8, wobei der Schritt des Übertragens das getrennte Übertragen einer Vielzahl von einzelnen Teilen der Reihe von Daten zwischen dem lokalen Computergerät und dem Remote-Computergerät über das Netzwerk einschliesst, wenn das tatsächliche Level kleiner als das Schwellenwertlevel ist.
  10. Verfahren nach Anspruch 9, das des Weiteren jedes Mal, wenn ein einzelner Teil der Daten zwischen dem lokalen Computergerät und dem Remote-Computergerät über das Netzwerk übertragen wird, das Erhöhen eines Zählers umfasst.
  11. Verfahren nach Anspruch 10, wobei die Grösse der einzelnen Teile der Daten eine Funktion des Zählerwertes ist.
  12. Verfahren nach Anspruch 11, das des Weiteren das Vergrössern der Grösse der einzelnen Teile der Daten umfasst, wenn der Zählerwert grösser als ein vorgegebener Wert ist.
  13. Verfahren nach Anspruch 10, das des Weiteren das Löschen des Zählers umfasst, nachdem alle der Vielzahl von einzelnen Teile der Daten zwischen dem lokalen Computergerät und dem Remote-Computergerät über das Netzwerk übertragen worden sind.
  14. Verfahren nach Anspruch 10, das des Weiteren das Löschen des Zählers umfasst, wenn das Levels der tatsächlichen Nutzung grösser als das Schwellenwertlevel wird.
  15. Verfahren nach Anspruch 9, das des Weiteren das Aussetzen des Übertragens einzelner Teile der Daten umfasst, wenn das Levels der tatsächlichen Nutzung grösser als das Schwellenwertlevel wird.
  16. Verfahren nach Anspruch 15, das des Weiteren das Wiederaufnehmen des Übertragens einzelner Teile der Daten umfasst, an dem Punkt der Unterbrechung, wenn das Levels der tatsächlichen Nutzung kleiner als das Schwellenwertlevel wird.
  17. Verfahren nach Anspruch 1, des Weiteren umfassend: Wiederholen des Schritts des Überwachens, jedes Mal, wenn ein Teil der Reihe von Daten übertragen ist; Identifizieren eines maximalen Levels der Nutzung während des Übertragens der Reihe von Daten; und Berechnen eines Schwellenwertlevels der Nutzung für die Reihe von Daten als eine Funktion des maximalen Levels der Nutzung, das während der Übertragung der Reihe von Daten identifiziert wurde.
  18. Verfahren nach Anspruch 17, wobei der Schritt des Identifizierens das Schätzen des maximalen Levels der Nutzung während der Übertragung der Reihe von Daten durch das Berechnen, nach der Wiederholung des Überwachungsschritts für eine vorgegebenen Anzahl von Malen während der Übertragung der Reihe von Daten, eines Durchschnittslevels der Nutzung für die Reihe von Daten einschliesst,
  19. Verfahren nach Anspruch 17, das des Weiteren das Übertragen mindestens eines Teils der Reihe von Daten zwischen dem lokalen Computergerät und dem Remote-Computergerät über das Netzwerk umfasst, wenn das tatsächliche Level kleiner ist als das Schwellenwertlevel für die Reihe von Daten.
  20. Verfahren nach Anspruch 17, das des Weiteren das Übertragen mindestens eines Teils einer zweiten Reihe von Daten zwischen dem lokalen Computergerät und dem Remote-Computergerät über das Netzwerk umfasst, wenn das tatsächliche Level kleiner ist als das Schwellenwertlevel für die Reihe von Daten.
  21. Computer-lesbares Medium, das Computer-ausführbare Instruktionen zum Ausführen der Schritte nach einem der Ansprüche 1 bis 20 aufweist.
  22. Computersystem, das einen Speicher, ein Betriebssystem und einen Zentralprozessor aufweist, wobei der Zentralprozessor in Betrieb fähig ist, die Schritte nach einem der Ansprüche 1 bis 20 auszuführen.
  23. Verfahren zum Kommunizieren zwischen einem Client-Prozess und einem Server-Prozess über ein Netzwerk, wobei das Verfahren umfasst: (a) Ausgeben einer ersten Download-Anfrage durch den Client-Prozess an den Server-Prozess, die eine Datei identifiziert, und die anfragt, dass der Server-Prozess ein erstes Segment der Datei über das Netzwerk herunterlädt; (b) Herunterladen des ersten Segments der Datei durch den Server-Prozess; (c) Überwachen des Levels der tatsächlichen Bandbreitennutzung einer Netzwerkverbindung des Client-Prozesses durch wiederholendes Ermitteln einer Anzahl von Bytes, die über die Netzwerkverbindung des Client-Prozesses übertragen wird; (d) Identifizieren eines maximalen überwachten Levels der überwachten tatsächlichen Bandbreitennutzung der Netzwerkverbindung des Client-Prozesses; (e) Berechnen eines Schwellenwertlevels der Bandbreitennutzung als eine Funktion des maximalen überwachten Levels der Bandbreitennutzung; (f) Ausgeben einer weiteren Download-Anfrage durch den Client-Prozess an den Server-Prozess, die mit der Datei assoziiert ist, und die anfragt, das der Server-Prozess ein weiteres Segment der Datei über das Netzwerk herunterlädt, sofern die tatsächliche Bandbreitennutzung kleiner ist als das Schwellenwertlevel der Bandbreitennutzung; (g) Herunterladen des weiteren Segments der Datei durch den Server-Prozess, sofern die tatsächliche Bandbreitennutzung kleiner ist als das Schwellenwertlevel der Bandbreitennutzung; und (h) Wiederholen der Schritte (c) bis (g), bis der Server-Prozess jedes Segment der Datei über das Netzwerk heruntergeladen hat.
  24. Computer-lesbares Medium, das Computer-ausführbare Instruktionen zum Ausführen der Schritte nach Anspruch 23 aufweist.
  25. Computersystem, das einen Speicher, ein Betriebssystem und einen Zentralprozessor aufweist, wobei der Zentralprozessor im Betrieb fähig ist, die Schritte nach Anspruch 23 auszuführen.
  26. Verfahren zum Übertragen einer Reihe von Daten zwischen einem lokalen Computergerät und einem Remote-Computergerät über ein Netzwerk, wobei das Verfahren umfasst: Überwachen des Levels der tatsächlichen Bandbreitennutzung einer Netzwerkverbindung des lokalen Computergeräts durch wiederholendes Ermitteln einer Anzahl von Bytes, die über die Netzwerkverbindung des lokalen Computergeräts übertragen wird; Identifizieren eines maximalen überwachten Levels der überwachten tatsächlichen Bandbreitennutzung der Netzwerkverbindung des lokalen Computergeräts; Berechnen einer Blockgrösse zum Übertragen als eine Funktion des maximalen überwachten Levels der Bandbreitennutzung; und Übertragen des Teils der Reihe von Daten mit besagter Blockgrösse zwischen dem lokalen Computergerät und dem Remote-Computergerät über das Netzwerk in einem oder mehreren Intervallen.
  27. Verfahren nach Anspruch 26, wobei das Identifizieren des maximalen Levels der tatsächlichen Nutzung umfasst: Berechnen eines Durchschnitts der Bandbreitennutzung der Netzwerkverbindung des lokalen Computergeräts; Berechnen einer Durchschnittsübertragungsrate der Netzwerkverbindung des lokalen Computergeräts; und Berechnen eines Prozentsatzes der Bandbreitenverfügbarkeit der Netzwerkverbindung des lokalen Computergeräts.
  28. Verfahren nach Anspruch 26, wobei die Blockgrösse entsprechend dem maximalen Level der tatsächlichen Nutzung angepasst wird, wobei das Verfahren das Eingrenzen der Blockgrösse zwischen einem maximalen Schwellenwert und einem minimalen Schwellenwert umfasst.
  29. Verfahren nach Anspruch 28, wobei der maximalen Schwellenwert eine Funktion des verfügbaren Speichers in dem empfangenden Gerät ist, und wobei der minimale Schwellenwert basierend auf einer Netzwerk-Paket-Header-Grösse ermittelt wird.
  30. Verfahren nach einem der Ansprüche 26 bis 29, wobei das Überwachen bei der Schnittstelle zwischen dem lokalen Computergerät und dem Netzwerk stattfindet.
  31. Verfahren nach Anspruch 26, des Weiteren umfassend: Vergrössern der Intervallgrösse, wenn die Blockgrösse unter einem minimalen Schwellenwert ist; und Veringern der Intervallgrösse, wenn die Blockgrösse einen maximalen Schwellenwert übersteigt.
  32. Verfahren nach einem der Ansprüche 26 bis 31, wobei das Netzwerk das Internet ist.
  33. Verfahren nach einem der Ansprüche 26 bis 32, wobei die Reihe von Daten ein Software-Update einschliesst.
  34. Verfahren nach einem der Ansprüche 26 bis 33, das des Weiteren jedes Mal, wenn ein Teil der Reihe von Daten übertragen wird, das Wiederholen zu mindest von dem Überwachen umfasst.
  35. Verfahren nach Anspruch 26, wobei das Erhalten des maximalen Levels das Berechnen eines Durchschnittslevels der Nutzung durch das Wiederholen des Überwachens für eine vorgegebene Häufigkeit während des Übertragens des Teils der Reihe von Daten einschliesst.
  36. Verfahren nach Anspruch 26, das des Weiteren jedes Mal, wenn ein Teil der Reihe von Daten übertragen ist, das Wiederholen der Identifizierung des maximalen Levels der tatsächlichen Nutzung umfasst.
  37. Computer-lesbares Medium, das Computer-ausführbare Instruktionen zum Ausführen des Verfahrens nach einem der Ansprüche 26 bis 36 aufweist.
  38. Computersystem, das einen Speicher, ein Betriebssystem und einen Zentralprozessor aufweist, wobei der Zentralprozessor im Betrieb fähig ist, die Schritte nach einem der Ansprüche 26 bis 36 auszuführen.
  39. Verfahren zum Verwalten der Übertragung von Daten zwischen einem lokalen Computergerät und einem Remote-Computergerät über ein Netzwerk, wobei das Verfahren umfasst: Überwachen des Levels der tatsächlichen Bandbreitennutzung einer Netzwerkverbindung des lokalen Computergeräts durch wiederholendes Ermitteln einer Anzahl von Bytes, die über die Netzwerkverbindung des lokalen Computergeräts übertragen wird; Berechnen einer Übertragungsgeschwindigkeit als eine Funktion des überwachten Levels der Bandbreitennutzung der Netzwerkverbindung des lokalen Computergeräts; und Verwalten des Übertragens der Daten zwischen dem lokalen Computergerät und dem Remote-Computergerät über das Netzwerk in Abhängigkeit von der berechneten Übertragungsgeschwindigkeit.
  40. Verfahren nach Anspruch 39, wobei die Netzwerkverbindung eine Schnittstelle zwischen dem lokalen Computergerät und dem Netzwerk ist.
  41. Computer-lesbares Medium, das Computer-ausführbare Instruktionen zum Ausführen der Schritte nach Anspruch 39 aufweist.
  42. Computersystem, das einen Speicher, ein Betriebssystem und einen Zentralprozessor aufweist, wobei der Zentralprozessor im Betrieb fähig ist, die Schritte nach Anspruch 39 auszuführen.
DE60122676T 2000-02-16 2001-02-16 Verfahren und methode für das übertragen von daten über ein netz Expired - Lifetime DE60122676T2 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US09/505,735 US7437428B1 (en) 2000-02-16 2000-02-16 System and method for transferring data over a network
US505735 2000-02-16
US783407 2001-02-14
US09/783,407 US6920110B2 (en) 2001-02-14 2001-02-14 System and method for transferring data over a network
PCT/US2001/004885 WO2001061944A1 (en) 2000-02-16 2001-02-16 System and method for transferring data over a network

Publications (2)

Publication Number Publication Date
DE60122676D1 DE60122676D1 (de) 2006-10-12
DE60122676T2 true DE60122676T2 (de) 2007-09-06

Family

ID=27055235

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60122676T Expired - Lifetime DE60122676T2 (de) 2000-02-16 2001-02-16 Verfahren und methode für das übertragen von daten über ein netz

Country Status (6)

Country Link
EP (2) EP1720304A2 (de)
JP (1) JP4711586B2 (de)
AT (1) ATE338406T1 (de)
AU (2) AU2001238419A1 (de)
DE (1) DE60122676T2 (de)
WO (2) WO2001061945A1 (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8272020B2 (en) * 2002-08-17 2012-09-18 Disney Enterprises, Inc. System for the delivery and dynamic presentation of large media assets over bandwidth constrained networks
JP4651912B2 (ja) * 2003-01-27 2011-03-16 Necインフロンティア株式会社 インタネット電話システム、呼接続制御装置及びそれに用いる端末連携方法並びにそのプログラム
EP1665634A2 (de) * 2003-09-11 2006-06-07 Siemens Aktiengesellschaft Verfahren zur ratenbestimmung durch einen zeitlich gewichteten gleitenden durchschnitt
WO2005034463A1 (de) * 2003-09-29 2005-04-14 Siemens Aktiengesellschaft Verfahren zur bereitstellung von leistungsmerkmalen bei bedarf
DE102004013438A1 (de) * 2004-03-18 2005-10-13 Siemens Ag Verfahren zur Ratenbestimmung durch einen zeitlich gewichteten gleitenden Durchschnitt
US7603473B2 (en) 2005-07-15 2009-10-13 Microsoft Corporation Background network bandwidth sharing behind gateway devices
EP1936517A1 (de) * 2006-12-19 2008-06-25 Alcatel Lucent Verfahren zur Verteilung von Nichtechtzeitmedien in einem Nichtechtzeitmedien-Verteilersystem, ein damit verbundenes System, ein damit verbundener Medienserver und Medienclient
US9078072B2 (en) * 2013-10-07 2015-07-07 Bose Corporation Audio distribution
US9596281B2 (en) * 2014-03-18 2017-03-14 Qualcomm Incorporated Transport accelerator implementing request manager and connection manager functionality
US11184447B2 (en) 2019-05-14 2021-11-23 Swiftly Systems, Inc. Systems and methods for efficient transmission of catalog data
CN112887146A (zh) * 2021-01-28 2021-06-01 杭州迪普科技股份有限公司 网络节点升级方法、装置与电子设备

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05153154A (ja) * 1991-11-28 1993-06-18 Nippon Telegr & Teleph Corp <Ntt> チヤネル帯域管理処理方式
AU2316495A (en) * 1994-04-28 1995-11-29 British Telecommunications Public Limited Company Service provision system for communications networks
US5913040A (en) * 1995-08-22 1999-06-15 Backweb Ltd. Method and apparatus for transmitting and displaying information between a remote network and a local computer
US5701292A (en) * 1995-12-04 1997-12-23 Lucent Technologies Inc. Method and apparatus for controlling data transfer rates of data sources in asynchronous transfer mode-based networks
US6963923B1 (en) * 1997-02-10 2005-11-08 International Business Machines Corporation Method for file transfer restarts using standard internet protocol
JPH11261632A (ja) * 1998-03-06 1999-09-24 Chokosoku Network Computer Gijutsu Kenkyusho:Kk 帯域割当制御方法
US6628666B1 (en) * 1998-03-30 2003-09-30 Genesys Telecomm Lab Inc Managing bandwidth on demand for internet protocol messaging with capability for transforming telephony calls from one media type to another media type
EP1018248A1 (de) * 1998-06-30 2000-07-12 Sun Microsystems, Inc. Überlastregelung in betriebsicherem mehrfachsende-protokoll

Also Published As

Publication number Publication date
AU2001238326A1 (en) 2001-08-27
JP4711586B2 (ja) 2011-06-29
WO2001061944A1 (en) 2001-08-23
WO2001061945A1 (en) 2001-08-23
DE60122676D1 (de) 2006-10-12
EP1256212B1 (de) 2006-08-30
EP1256212A1 (de) 2002-11-13
JP2003527800A (ja) 2003-09-16
AU2001238419A1 (en) 2001-08-27
ATE338406T1 (de) 2006-09-15
EP1720304A2 (de) 2006-11-08
WO2001061944A8 (en) 2001-11-01

Similar Documents

Publication Publication Date Title
US7325068B2 (en) Method and system for managing data transfer over a network
US7437428B1 (en) System and method for transferring data over a network
US10389599B2 (en) Server side content delivery network quality of service
DE19983761B3 (de) Vorrichtung und Verfahren zum Sammeln und Analysieren von Kommunikationsdaten
DE60316494T2 (de) Zeitfensterbeschränkte Mehrfachsendung unter Benutzung von Verbindungsablau ffolgeplanung
DE60122676T2 (de) Verfahren und methode für das übertragen von daten über ein netz
Crovella et al. Self-similarity in world wide web traffic: Evidence and possible causes
DE69624543T2 (de) System und Verfahren zur Erkennung von Netzwerkfehlern
Van der Mei et al. Web server performance modeling
US6343085B1 (en) Adaptive bandwidth throttling for individual virtual services supported on a network server
US7941538B2 (en) Dynamic management of resource utilization
US6108800A (en) Method and apparatus for analyzing the performance of an information system
DE60313567T2 (de) Zugriffsrelayvorrichtung
US20030046383A1 (en) Method and system for measuring network performance from a server
DE202011052142U1 (de) System zum Anpassen von Inhalten basierend auf der verfügbaren Bandbreite
US8392499B2 (en) System and method for relating aborted client accesses of data to quality of service provided by a server in a client-server network
DE202021103602U1 (de) Benchmark-Funktion für Ausgangsknoten
DE102021109229A1 (de) Burst-paket-vorbelastung für abw-schätzung mit ratenbegrenzern
DE602004003690T2 (de) Verfahren und system zur dienstqualitätsoptimierung in einem datennetzwerk
DE202018100131U1 (de) Reduzierern von Umleitungen
DE69605797T2 (de) Verfahren und vorrichtung zur unterdrückung redundanten schreibens
EP1623554A1 (de) Ermittlung einer daten bertragungsqualität
WO2002042933A2 (de) Verfahren und anordnung zum ferngesteuerten zugriff auf daten und zur datenübertragung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition