DE602005001815T2 - Verfahren zur effizienten Mehrfachverbreitung von Inhalten in einem Peer-to-peer Netzwerk - Google Patents

Verfahren zur effizienten Mehrfachverbreitung von Inhalten in einem Peer-to-peer Netzwerk Download PDF

Info

Publication number
DE602005001815T2
DE602005001815T2 DE602005001815T DE602005001815T DE602005001815T2 DE 602005001815 T2 DE602005001815 T2 DE 602005001815T2 DE 602005001815 T DE602005001815 T DE 602005001815T DE 602005001815 T DE602005001815 T DE 602005001815T DE 602005001815 T2 DE602005001815 T2 DE 602005001815T2
Authority
DE
Germany
Prior art keywords
content
node
nodes
blocks
peer
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.)
Active
Application number
DE602005001815T
Other languages
English (en)
Other versions
DE602005001815D1 (de
Inventor
Cha 98052 Zhang
Jin 98052 Li
Philip A. 98052 Chou
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of DE602005001815D1 publication Critical patent/DE602005001815D1/de
Application granted granted Critical
Publication of DE602005001815T2 publication Critical patent/DE602005001815T2/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1863Arrangements for providing special services to substations for broadcast or conference, e.g. multicast comprising mechanisms for improved reliability, e.g. status reports
    • H04L12/1877Measures taken prior to transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1854Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with non-centralised forwarding system, e.g. chaincast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1101Session protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/70Media network packetisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1074Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
    • H04L67/1076Resource dissemination mechanisms or network resource keeping policies for optimal resource availability in the overlay network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1074Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
    • H04L67/1078Resource delivery mechanisms
    • H04L67/108Resource delivery mechanisms characterised by resources being split in blocks or fragments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/165Combined use of TCP and UDP protocols; selection criteria therefor
    • 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 

Description

  • Technisches Gebiet
  • Die vorliegende Erfindung bezieht sich im Allgemeinen auf eine Rechner-Vernetzung und im Besonderen auf ein effizientes Verfahren und System, um einen Inhalt über ein Peer-to-Peer-Netzwerk so zu verteilen, dass der Lieferdurchsatz maximiert wird.
  • Hintergrund der Erfindung
  • Viele Anwendungen benötigen eine Mehrfachinhaltverteilung, wobei ein Rechner in einem Rechnernetzwerk den Inhalt an verschiedene andere Rechner in dem Netzwerk sendet. Ein Beispiel solcher Anwendungen beinhaltet die Verteilung von Software, das Internet-TV/Video-Streaming, Videokonferenzen, private Medienverteilung und die Peer-to-Peer-(P2P)-Web-Inhalts-Vervielfältigung. Ein P2P-Netzwerk ist ein Netzwerktyp, in welchem jeder Rechner gleichwertige Fähigkeiten und Zuständigkeiten aufweist.
  • 1 ist ein Blockdiagramm, das das Problem der Mehrfachinhaltverteilung darstellt. Das Netzwerk 100 beinhaltet einen Quellknoten s, der den Inhalt enthält, der verteilt werden soll, und mehrere Peer-Knoten ti, i = 1, 2, .... N, von denen jeder eine Kopie des Inhalts anfordern kann oder nicht. Sowohl der Quellknoten als auch die Peer-Knoten sind Endnutzer-Knoten. Es sind üblicherweise Rechner, die mit dem Internet durch einen Internet-Service-Provider (ISP) verbunden sind, der eine Asymmetric-Digital-Subscriber-Line (ADSL, asymmetrischer digitaler Benutzeranschluss), ein Kabelmodem, einen Campus oder einen Corporate-Netzwerk-Link verwenden. Der einfachste Ansatz für einen Quellknoten, um den Inhalt in der Ausstattung zu verteilen, die in 1 gezeigt wird, besteht darin, dem Quellknoten zu ermöglichen, den Inhalt direkt an die Bestimmungsknoten zu senden. Aber offen gesagt ist der Durchsatz der Inhaltverteilung durch die Upload-Bandbreite des Quellknotens beschränkt, welche üblicherweise ziemlich begrenzt ist.
  • Eine Lösung auf der Internet-Ebene, solch ein Inhaltverteilungsproblem zu behandeln, das in 1 gezeigt wird, ist das Internet-Protokoll-(IP)-Multicast. Bei IP-Multicast wird ein einzelnes Paket, das von einer Quelle übertragen wird, in Routern entlang eines Verteilungsbaumes vervielfältigt, der an der Quelle verwurzelt ist. Auf diese Weise wird der Inhalt an eine beliebige Anzahl von Empfängern geliefert. Obwohl das IP-Multicast eine effiziente Lösung darstellt, war seine Verwendung in Wirklichkeit langsam wegen Fragen und Problemen wie etwa Inner-Domain-Routing-Protokollen, Internet-Service-Provider (ISP)-Geschäftsmodellen, einer Überlastungssteuerung längs des Verteilungsbaumes und so weiter. Wegen dieser Probleme bei der Verwendung eines Multicast-Services auf Netzwerkebene basiert die weitgehende Mehrheit des Internet-Verkehrs heute auf dem Unicast, wodurch zwei Rechner direkt miteinander kommunizieren.
  • Weil eine Lösung auf Netzwerkebene aus den genannten Gründen im Allgemeinen nicht durchführbar ist, wurde eine Vielfalt von unterschiedlichen Ansätzen entwickelt, um es P2P-Rechnern anstelle von Routern zu ermöglichen, den Inhalt von der Quelle zu verteilen. Im Allgemeinen ist der vielversprechendste Ansatz der Application-Level-Multicast (ALM, Anwendungsebenen-Multicast). In dem ALM wird ein Multicast-Verteilungsbaum ausgebildet und einem vorhandenen Netzwerk überlagert. Anstatt das Multicast-Protokoll zu verwenden, verwendet jeder Peer-Rechner in dem Verteilungsbaum ein Unicast-Protokoll, um alle Multicast-bezogenen Funktionalitäten zu implementieren, einschließlich der Paketvervielfältigung, der Verwaltung der Zugehörigkeit und der Lieferung von Inhalt in dem überlagerten Netzwerk.
  • Einige Beispiele von ALM-Systemen beinhalten das Scattercast, welches in einer Veröffentlichung von Y. Chawathe beschrieben ist mit dem Titel: „Scattercast: an architecture for Internet broadcast distribution as an infrastructure service", eine Dissertation an der University of California, Berkely, August 2000, und den Overcast, welcher in einer Veröffentlichung von J. Jannotti, D. K. Gifford, K. L. Johnson, M. F. Kaashoek und J. W. O'Toole Jr. mit dem Titel: „Overcast: reliable multicasting with an overlay network", in Proc. of the Fourth Symposium an Operating System Design and Implementation (OSDI), October 2000 beschrieben ist. Sowohl der Scattercast als auch der Overcast verwenden einen einzigen Baum, um den Inhalt zu verteilen.
  • 2 ist ein Blockdiagramm, das die Techniken der Inhaltverteilung darstellt, wobei ein einziger Verteilungsbaum 200 verwendet wird, wie er in dem Scattercast und dem Overcast verwendet wird. In dieser Konfiguration sendet ein Quellknoten s Daten an einen Knoten t1, welcher die Daten an die Knoten t2 und t3 weiterleitet. Der ALM-Verteilungsbaum 200 benutzt die Upload-Bandbreite des Zwischenknotens t1, wohingegen die Upload-Bandbreiten der Flügelknoten t2 und t3 nicht genutzt werden. Verglichen damit, den Quellknoten seinen Inhalt direkt zu allen anderen Clients senden zu lassen, reduziert der Ansatz mit dem Verteilungsbaum, der in 2 gezeigt wird, die Netzwerkbelastung der Quelle, und erreicht deshalb eine effizientere Inhaltverteilung.
  • Ein Problem mit dem Scattercast und dem Overcast jedoch ist, dass sie bei der Inhaltverteilung ineffizient sind. Besonders verteilen die Zwischenknoten in einem Verteilungsbaum den Inhalt weiter, während die Flügelknoten nur den Inhalt empfangen. Das bedeutet, dass die Upload-Bandbreiten der Flügelknoten nicht für die Inhaltverteilung genutzt werden.
  • Es wurden verschiedene Versuche durchgeführt, um solche Ineffizienz zu überwinden. Diese Techniken beinhalten eine Technik, die CoopNet genannt wird, welche in Veröffentlichungen von V. N. Padmanabhan und K. Sripanidkulchai beschrieben wird, mit dem Titel: „The Case for Cooperative Networking", in Proc. of the First International Workshop an Peer-to-Peer Systems (IPTPS), Cambridge, MA, USA, March 2000 und durch V. N. Padmanabhan et al. mit dem Titel „Distributing streaming media content using cooperative networking", in Proc. of the 12th international workshop an network and operating systems support for digital audio and video, NOSSDAV 2002 Miami, FL, May 12–14, 2002, pages 177–186, ISBN: 1-58113-512-2, KP 1171549, Padmanabhan, H. J. Wang und P. A. Chou, „Resilient Peer-to-Peer Streaming", in Proc. IEEE International Conference an Network Protocols (ICNP), Atlanta, GA, USA, November 2003; und eine Technik, die SplitStream genannt wird, welche in einer Veröffentlichung von M. Castro, P. Druschel, A-M. Kermarrec, A. Nandi, A. Rowstron und A. Singh beschrieben wird, mit dem Titel: „SplitStream: High-bandwith content distribution in a cooperative environment", in Proc. of the International Workshop an Peer-to-Peer Systems, Berkeley, CA, February 2003. Jede dieser Techniken splittet den Inhalt in mehrere Gruppen und verteilte die Gruppen über getrennte Multicast-Bäume mit getrennten internen Knoten. Jeder Peer-Rechner kann ein interner Knoten in einem der Multicast-Bäume sein und kann mitwirken, den Inhalt weiter zu leiten.
  • CoopNet verwendet ein zentralisiertes Baum-Verwaltungsmodell, während SplitStream auf Pastry beruht, um den Verteilungsbaum aufrecht zu erhalten. Pastry wird in einer Veröffentlichung von A. Rowstron und P. Druschel beschrieben mit dem Titel: „Pastry: scalable, distributed object location and routing for large-scale peer-to-peer systems", in Proc. Of IFIP/ACM International Conference an Distributed Systems Platforms (Middleware), Heidelberg, Germany, pages 329–350, November, 2001. CoopNet benutzt weiterhin das Multiple-Description-Coding (MDC) und die Forward-Error-Correction (FEC), um vor dem Paketverlust und Knotenausfällen zu schützen.
  • 3 ist ein Blockdiagramm, das eine Baum-Konfiguration 300 für den Multicast auf zwei Anwendungsebenen darstellt, wie sie in CoopNet und SplitStream verwendet wird. Der Inhalt wird in zwei gleiche Gruppen geteilt. Eine erste Gruppe 310 wird an den Knoten t1 gesendet, welcher die Gruppe an die Knoten t2 und t3 weiter leitet. Eine zweite Gruppe 320 wird an den Knoten t2 gesendet, welcher die Gruppe an die Knoten t1 und t3 weiter leitet. Es sollte beachtet werden, dass der Verteilungsweg der ersten Gruppe in 3 mit einer durchgezogenen Linie markiert ist und der Verteilungsweg der zweiten Gruppe mit einer gestrichelten Linie. Das bedeutet, dass die Inhalte unterschiedlich sind, die zu diesen Links geliefert werden. Es ist ein Problem dieser Konfiguration, dass das System 300 die Upload-Bandbreite der Knoten f1 und f2 benutzt, es aber versäumt, die Upload-Bandbreite des Knotens t3 zu benutzen, was so die Effizienz reduziert.
  • Weitere Techniken, die versuchten, eine solche Ineffizienz zu überwinden, beinhalten eine Technik, die FastReplica genannt wird, welche in einer Veröffentlichung von L. Cherkasova und J. Lee behandelt wird, mit dem Titel: „FastReplica: Efficient Large File Distribution within Content Delivery Networks", in Proc. of the 4th USENIX Symposium an Internet Technologies and Systems, Seattle, Washington, March 26–28, 2003 und eine Technik, die Bullett genannt wird, welche in einer Veröffentlichung von D. Kostic, A. Rodriguez, J. Albrecht, A. Vahdat behandelt wird mit dem Titel: „Bullett: High Bandwidth Data Dissemination Using an Overlay Mesh", in Proc. 19th ACM Symposium an Operating Systems Principles, October 19–22, 2003, the Sagamore, New York. Beide dieser Techniken untersuchten den Problemkreis der effizienten und zuverlässigen Replikation von großen Dateien. Wenn n Knoten vorhanden waren, unterteilte FastReplica die Datei zuerst in n Unterdateien von gleicher Größe. Jede Unterdatei wurde dann an einen unterschiedlichen Peer in der Gruppe übermittelt, die anschließend repliziert und zu den anderen Peers übermittelt wurde. In Bullett wa ren Peer-Knoten in einem Überlagerungsbaum geordnet. Jeder Knoten splittete den Inhalt, den er von dem Vorgänger erhalten hatte, in einen getrennten Satz von Blöcken, wobei jeder Satz zu einem unterschiedlichen Nachfolgeknoten gesendet wurde. Die Nachfolgeknoten erkannten dann die fehlenden Blöcke und die Knoten, die die fehlenden Blöcke enthielten und sendeten Anforderungen, um die fehlenden Blöcke zurück zu gewinnen.
  • Schaut man näher auf die FastReplica-Technik, sollte beachtet werden, dass diese Technik speziell für den Datei-Download ausgelegt ist. Für ein P2P-Netzwerk mit N Knoten verteilt FastReplica die Datei mit N-hoch-2-Multicast-Bäumen mit der Zwischenstufe N-1. 4 ist ein Blockdiagramm, das eine beispielhafte Konfiguration 400 von FastReplica von drei Peer-Knoten darstellt. FastReplica verteilt die Datei in zwei Schritten: dem Verteilungsschritt und dem Sammelschritt. In dem Verteilungsschritt wird die Datei in drei Unterdateien gesplittet und jeweils an die Knoten t1, t2 und t3 gesendet (entlang der durchgezogenen, gestrichelten und punktierten Linien). Im Einzelnen werden die drei Unterdateien entlang der ersten Gruppe 410, einer zweiten Gruppe 420 und einer dritten Gruppe 430 gesendet. Nach dem Verteilungsschritt wird der Sammelschritt implementiert. Jeder Peer-Knoten leitet seine Unterdatei an die anderen Peer-Knoten weiter. Wie in 4 gezeigt, ist jeder der Peer-Knoten mit der Inhaltverteilung in FastReplica beschäftigt.
  • Ein praktisches P2P-System der Inhaltverteilung wurde implementiert, wobei eine Technik verwendet wird, die BitTorrent genannt wird. BitTorrent wird in einer Veröffentlichung von B. Cohen beschrieben, mit dem Titel: „Incentives build robustness in BitTorrent" und ist auf der Web-Seite http://bitconjurer.org/BitTorrent/bittorrentecon.pdf verfügbar. BitTorrent beinhaltet Sharing-Incentive, so dass die Peers bereit sind, den Inhalt zu verteilen, weil, je mehr Inhalt sie uploaden, desto mehr werden sie in der Lage sein, von den Peers downzuloaden. Dies sind nur einige wenige Beispiele für die vielen neuen Modelle für den Multicast auf der Anwendungsebene.
  • Obwohl die obigen ALM-Verteilungsstrategien effizienter sind als das direkte Senden von Inhalt von der Quelle an die Peers, versagen sie dabei, die effizienteste Inhaltverteilung in dem Netzwerk zu erreichen. Besonders hat keine der obigen Techniken die Unterschiede in der Bandbreite zwischen den Peer-Knoten angemessen in Betracht gezogen. Jede Technik versagt auch dabei, die Bandbreiten-Ressourcen all der Peer-Knoten zu erfassen, um den Inhalt zu verteilen.
  • Alle der obigen Ansätze der Mehrfachinhaltverteilung, die oben behandelt wurden, richten sich nach den Fähigkeiten der Peer-Knoten (Die Upload/Download-Bandbreiten der Peer-Knoten) durch die Einrichtung einer geeigneten Netzwerktopologie. Knoten mit einer großen Bandbreite werden im Zentrum des Verteilungsnetzwerks angeordnet und sind für die weitere Inhaltverteilung verantwortlich. Wenn die Netzwerktopologie einmal eingerichtet ist, wird der Inhalt in festen Gruppen durch das eingerichtete Netzwerk verteilt. Das Problem bei diesen Verteilungsstrategien ist, dass das Verteilungsnetzwerk weniger flexibel ist, sich an Änderungen der Netzwerkbedingungen (wie etwa jede Überlastung bestimmter Knoten/Links) anzupassen. Das kann die Effizienz der Inhaltverteilung ernsthaft reduzieren. Deshalb ist das, was benötigt wird, eine Technik zur Mehrfachinhaltverteilung, welche den Inhalt in einer höchstmöglich effizienten Art und Weise verteilt, um das maximale Potenzial eines Rechner-Netzwerks zu verwirklichen.
  • Übersicht über die Erfindung
  • Die Erfindung ist in den Haupt-Verfahrensansprüchen 1, 18 und 24 und dem entsprechenden Anspruch 37 (rechnerlesbares Medium) dargelegt. Die Erfindung, die hier offen gelegt wird, beinhaltet ein Inhaltverteilungsverfahren und -system, um den Inhalt über ein Peer-to-Peer-Netzwerk effizient so zu verteilen, dass der Lieferdurchsatz maximiert wird. Das Inhaltverteilungsverfahren und -system überwinden die oben erwähnten Mängel der derzeitigen Techniken der Mehrfachverteilung. Im Gegensatz zu den vorhandenen Ansätzen erreichen das Verfahren und das System den höchstmöglichen Durchsatz für ihren Inhalt durch das Einbinden von so vielen Knoten wie möglich, um den Inhalt zu verteilen, und durch die vollständige Ausnutzung der verfügbaren Upload-Bandbreite jedes Knotens. Weiterhin können das Inhaltverteilungsverfahren und -system die Senderate des Inhalts dynamisch abgleichen, um den maximalen Durchsatz unter den vorherrschenden Netzwerkbedingungen anzupassen.
  • Das Inhaltverteilungsverfahren und -system beinhalten mindestens drei eindeutige Eigenschaften. Zunächst splitten das Inhaltverteilungsverfahren und -system den Inhalt, der verteilt werden soll – sei es eine Datei oder ein Medien-Stream – in viele kleine Blöcke. Die Anzahl der Blöcke, die durch einen bestimmten Knoten weiter verteilt wird, kann so proportional zu der Ressource (wie etwa einer Upload-Bandbreite) des Knotens sein. Der Knoten mit der größeren Upload-Bandbreite kann mehr Blöcke weiter verteilen und der Knoten mit der kleineren Upload-Bandbreite kann weniger Blöcke weiter verteilen. Zum Zweiten ist jeder Inhaltsblock in dem Inhaltverteilungsverfahren und -system einem einzelnen Knoten für die Weiterlieferung zugeordnet. Der für die Weiterlieferung verantwortliche Knoten kann ein inhaltsanfordernder Peer-Knoten, ein nicht inhaltsanfordernder Peer-Knoten, oder sogar der Quellknoten selbst sein. Als Drittes können das Inhaltverteilungsverfahren und -system durch die Verwendung von Weiterverteilungsschlangen zwischen den Knoten dynamische Änderungen der Netzwerkbedingungen wirkungsvoll behandeln. Das ermöglicht dem Inhaltverteilungsverfahren und -system, den Veränderungen der Upload-Bandbreite, dem Paketverlust und der Paket-Fluktuation jedes Knotens in dem Netzwerk auf einer fortlaufenden Grundlage wirkungsvoll gewachsen zu sein.
  • Das Inhaltverteilungsverfahren beinhaltet so die Aufteilung des Inhalts in eine Vielzahl von Blöcken und das das Zuordnen jeder der Vielzahl von Blöcken zu einem Knoten, proportional einer Kapazität des Knotens, so dass einem Knoten, der eine größere Kapazität aufweist, mehr Blöcke zugeordnet werden und einem Knoten, der eine geringere Kapazität aufweist, weniger Blöcke zugeordnet werden. Die Kapazität des Knotens kann bezüglich einer Bandbreite des Knotens oder einer Upload-Bandbreite des Knotens definiert werden. Alternativ kann die Kapazität des Knotens unter Verwendung von anderen Maßeinheiten, z. B. der Randverzögerung, der Kapazität abzüglich des Paketverlusts, usw. definiert werden. Das Netzwerk kann ein Peer-to-Peer-Rechnernetzwerk sein.
  • Die Größe der Inhaltsblöcke kann geringer als eine maximale Übertragungseinheit (MTU) des Rechnernetzwerks sein, welche in manchen Fallen angenähert 1 Kilobyte (KB) beträgt. Die Größe des Inhaltblocks ist ein Kompromiss zwischen einer Granularität der Verteilung und einem Overhead, der für die Identifizierung der Blöcke benötigt wird.
  • Das Verfahren verwendet eine Bandbreiten-Steuerstrategie, um die dynamische Weiterverteilung von Blöcken auf der Grundlage der Änderungen der Kapazität der Knoten zu ermöglichen. Die Bandbreiten-Steuerstrategie verwendet Weiterverteilungsschlangen zwischen jedem der Knoten in dem Netzwerk. Die Schlangen können die Transport-Control-Protocol-(TCP)-Sende- und -Empfangspuffer sein, oder sie können Anwendungspuffer sein, die am Anfang des User-Datagram-Protocols (UDP) implementiert sind. Im Unterschied zu TCP weist UDP keine Puffer auf. Das bedeutet, sobald UDP verwendet wird, dass der Nutzer zusätzliche Puffer implementieren muss, die als die Weiterverteilungsschlange dienen. Das Verfahren beinhaltet weiter so die Verbindung zwischen Knoten, dass ein Weiterverteilungs-Link als eine Verbindung definiert wird, die Inhaltsblöcke aufweist, die ferner weiter verteilt werden sollen. Desgleichen wird ein Liefer-Link als eine Verbindung definiert, die Inhaltsblöcke aufweist, die ferner nicht weiter verteilt werden sollen.
  • Kurze Beschreibung der Zeichnungen
  • Die vorliegende Erfindung kann weiterhin unter Bezug auf die folgende Beschreibung und die angefügten Zeichnungen verstanden werden, die Aspekte der Erfindung darstellen. Weitere Merkmale und Vorteile werden aus der folgenden ausführlichen Beschreibung der Erfindung ersichtlich, die in Verbindung mit den begleitenden Zeichnungen erhalten werden, welche durch Beispiele die Grundlagen der vorliegenden Erfindung darstellen.
  • Nehmen wir nun Bezug auf die Zeichnungen, in welchen gleiche Bezugszeichen durchweg entsprechende Teile darstellen:
  • 1 ist ein Blockdiagramm, das das Problem der Mehrfachinhaltverteilung darstellt.
  • 2 ist ein Blockdiagramm, das die Techniken der Inhaltverteilung darstellt, wobei ein einzelner Verteilungsbaum verwendet wird.
  • 3 ist ein Blockdiagramm, das die Baum-Konfiguration für den Multicast auf zwei Anwendungsebenen darstellt.
  • 4 ist ein Blockdiagramm, das eine beispielhafte Konfiguration von drei Peer-Knoten darstellt.
  • 5 ist ein Blockdiagramm, das eine exemplarische Implementierung des Inhaltverteilungssystems und -verfahrens darstellt, die hier offen gelegt werden.
  • 6 ist ein allgemeines Ablaufdiagramm, das den allgemeinen Betrieb des Inhaltverteilungssystems und -verfahrens darstellt, die in 5 gezeigt werden.
  • 7 ist ein ausführliches Ablaufdiagramm, das die Betrieb eines Weiterverteilungs-Link-Threads eines Peer-Knotens (sowohl inhaltsanfordernd als auch nicht inhaltsanfordernd) darstellt.
  • 8 ist ein ausführliches Ablaufdiagramm, das den Betrieb eines Weiterlieferungs-Link-Threads eines inhaltsempfangenden Peer-Knotens darstellt.
  • 9 ist ein ausführliches Ablaufdiagramm, das den Betrieb eines Quellknotens in Übereinstimmung mit dem Inhaltverteilungsverfahren darstellt, das hier offen gelegt wird.
  • 10 stellt ein Beispiel einer geeigneten Rechnersystemumgebung dar, in welche das Inhaltverteilungsverfahren und -system implementiert werden können, die in 5 gezeigt werden.
  • 11 ist ein Blockdiagramm, das darstellt, dass eine maximale Übertragungs-Kapazität nicht erreichbar ist, wenn das Multicast-Routing verwendet wird.
  • Ausführliche Beschreibung der Erfindung
  • In der folgenden Beschreibung der Erfindung wird auf die begleitenden Zeichnungen Bezug genommen, welche ein Teil davon bilden und in welchen durch die Darstellung ein typisches Beispiel gezeigt wird, durch welches die Erfindung ausgeführt werden kann.
  • I. Einleitung
  • Obwohl die derzeitigen Techniken der Mehrfachverteilung in Peer-to-Peer-(P2P)-Rechner-Netzwerken effizienter sind als das direkte Senden von Inhalt von dem Quellknoten an die Peer-Knoten, versagen diese Techniken, um die effizienteste Inhaltverteilung in dem Netzwerk zu erreichen. Das beruht auf einer Anzahl von Faktoren. Ein Faktor ist, dass keine dieser derzeitigen Techniken die Unterschiede in der Bandbreite zwischen den Peer-Knoten angemessen berücksichtigt und anpasst. Ein weiterer Faktor besteht darin, dass diese Techniken darin versagen, die Bandbreiten-Fähigkeiten von allen Peer-Knoten in dem Netzwerk vollständig zu benutzen, sobald der Inhalt verteilt wird.
  • Das Inhaltverteilungsverfahren und -system, die hier offen gelegt werden, bilden einen neuen Typ von Liefermechanismus für die Mehrfachinhaltverteilung, insbesondere in Peer-to-Peer-(P2P)-Netzwerken. Verglichen mit den vorherigen Ansätzen der Mehrfachinhaltverteilung, splitten das Inhaltverteilungsverfahren und -system, die hier offen gelegt werden, den Inhalt, der verteilt werden soll, in viele kleine Blöcke. Dies ermöglicht Knoten, die eine größere Kapazität aufweisen (wie etwa die Upload-Bandbreite), mehr Blöcke weiter zu verteilen und Knoten mit geringerer Kapazität, weniger Blöcke weiter zu verteilen. Jeder Inhaltsblock ist einem einzelnen Knoten für die Verteilung zugeordnet und der verantwortliche Knoten kann ein inhaltsanfordernder Peer-Knoten, ein nicht inhaltsanfordernder Peer-Knoten oder sogar der Quellknoten selbst sein.
  • Der Durchsatz der Verteilung wird durch Weiterverteilungsschlangen zwischen der Quell- und Peer-Knoten gesteuert. Das Inhaltverteilungsverfahren und -system benutzen vollständig die Upload-Bandbreiten aller Peer-Knoten, wobei der Lieferdurchsatz maximiert wird. Weiterhin sind das Inhaltverteilungsverfahren und -system einfach und flexibel. Sie können auf den Download von Dateien/Software, den Medien-Streaming und die löschungs-codierte Dateiverteilung in einem P2P-Netzwerk angewendet werden.
  • II. Allgemeine Übersicht
  • 5 ist ein Blockdiagramm, das eine exemplarische Implementierung des Inhaltverteilungssystems und -verfahrens darstellt, die hier offen gelegt werden. Es sollte beachtet werden, dass 5 lediglich eine von verschiedenen Arten ist, mit welchem das Inhaltverteilungssystem und -verfahren implementiert und verwendet werden können.
  • Unter Bezug auf 5 wird in dieser exemplarischen Implementierung ein Peer-to-Peer-(P2P)-Netzwerk 500 gezeigt. Das Netzwerk 500 beinhaltet einen Quellknoten s und vier Peer-Knoten t1, t2, t3 und t4. Unter den Peer-Knoten fordern die Knoten t1, t2 und t3 eine Kopie des Inhalts von dem Quellknoten s an und werden inhaltsanfordernde Peer-Knoten genannt. Der Knoten t4 fordert keine Kopie des Inhalts an und wird ein nicht inhaltsanfordernder Peer-Knoten genannt. Es sollte gemäß dem Inhaltverteilungssystem und -verfahren beachtet werden, die hier offen gelegt werden, dass, obwohl der Peer-Knoten t4 keinen Inhalt anfordert, er doch seine Upload-Bandbreite beisteuert, um den Inhalt an die anderen Peer-Knoten verteilen zu helfen.
  • Der Inhalt, der verteilt werden soll, ist in dem Quellknoten s enthalten und in viele kleine Blöcke aufgeteilt oder getrennt. Der Inhalt kann eine Datei oder einen Medien-Stream beinhalten. Jeder Block wird dann einem der Knoten für die Weiterlieferung zugeordnet. Jeder Block ist nur einem einzigen Knoten zugeordnet. Sobald ein Block inhaltsempfangenden Peer-Knoten t1, t2 und t3 für die Weiterverteilung zugeordnet ist, wie etwa die Blöcke 1, 2, 3 und 4, die in 5 gezeigt werden, dann wird der Block zuerst durch den Quellknoten s zu dem zugeordneten Peer-Knoten (oder dem für das Weiterleiten verantwortlichen Peer-Knoten) gesendet. Der zugeordnete Peer-Knoten leitet dann den Block an die beiden anderen zwei Peer-Knoten weiter. Als Beispiel: wenn der Block 1, der in 5 gezeigt wird, dem Peer-Knoten t, zugeordnet ist, wird der Block 1 durch den Quellknoten s an den Peer-Knoten t1 gesendet und der Peer-Knoten t1 leitet dann den Block 1 an die Peer-Knoten t2 und t3 weiter.
  • Sobald ein Block einem nicht inhaltsempfangenden Peer-Knoten t4 für die Weiterverteilung zugeordnet wird, wie etwa die Blöcke 5, 6 und 7, die in 5 gezeigt werden, werden die Blöcke zuerst durch den Quellknoten s an den Peer-Knoten t4 gesendet. Der nicht inhaltsempfangende Peer-Knoten t4 leitet dann den Block an die anderen drei Peer-Knoten t1, t2 und t3 in dem Netzwerk 500 weiter. Als Beispiel: wenn der Block 5, der in 5 gezeigt wird, dem nicht inhaltsempfangenden Peer-Knoten t4 zugeordnet wird, wird dann der Block 5 durch den Quellknoten s an den Peer-Knoten t4 gesendet, und der Peer-Knoten t4 leitet dann den Block 5 an die die Peer-Knoten t1, t2 und t3 weiter.
  • Der Quellknoten s kann auch auswählen, einen Block direkt zu verteilen. Wie in 5 gezeigt, wird der Block 8 beispielsweise durch den Quellknoten s an die inhaltsanfordernden Peer-Knoten t1, t2 und t3 verteilt. In dieser Situation wird der Block 8 direkt von dem Quellknoten s an die die inhaltsanfordernden Peer-Knoten t1, t2 und t3 gesendet.
  • Das Inhaltverteilungssystem und -verfahren, die hier offen gelegt werden, richten Weiterverteilungsschlangen zwischen jedem Paar der Knoten in dem Netzwerk 500 ein. Wie im Einzelnen unten erklärt wird, ermöglichen diese Weiterverteilungsschlangen dem Inhaltverteilungssystem und -verfahren, dynamischen Veränderungen der Bedingungen des Netzwerks 500 gewachsen zu sein, wie etwa Änderungen der Bandbreite, dem Paketverlust und der Paket-Fluktuation. Die Weiterverteilungsschlangen werden in 5 als durchgezogene und gestrichelte Linien gezeigt. Die durchgezogenen Linien zwischen den Knoten zeigen Weiter leitungs-Links an, während die gestrichelten Linien zwischen den Knoten Liefer-Links anzeigen. Der Weiterleitungs-Link ist eine Verbindung, der Blöcke befördert, die weiter verteilt werden sollen. Der Liefer-Link ist eine Verbindung, der Blöcke befördert, die nicht weiter verteilt werden sollen.
  • III. Übersicht über den Betrieb
  • Der Betrieb des Inhaltverteilungssystems und -verfahrens, der in 5 gezeigt wird, wird nun erläutert. 6 ist ein allgemeines Ablaufdiagramm, das den allgemeinen Betrieb des Inhaltverteilungssystems und -verfahrens darstellt, die in 5 gezeigt werden. Das Inhaltverteilungsverfahren beginnt durch das Eingeben von Inhalt, der verteilt werden soll (Kasten 600). Wie oben angemerkt, kann dieser Inhalt eine Datei oder einen Medien-Stream beinhalten. Als Nächstes wird der Inhalt in eine Vielzahl von kleineren Blöcken (Kasten 610) aufgeteilt oder getrennt. Das Aufteilen des Inhalts in kleinere Blöcke ermöglicht verschiedenen Knoten, eine unterschiedliche Anzahl von Blöcken weiter zu verteilen. Somit kann die Anzahl der Blöcke, die durch einen bestimmten Knoten weiter verteilt werden, proportional zu der Kapazität (wie etwa der Upload-Bandbreite) des Knotens sein. Zum Beispiel kann ein Knoten, der eine größere Upload-Bandbreite aufweist, eine größere Anzahl von Blöcken weiter verteilen, während ein Knoten, der eine geringere Upload-Bandbreite aufweist, weniger Blöcke weiter verteilen kann.
  • Jeder Block mit Inhalt wird dann einem einzelnen Knoten für die Weiterlieferung zugeordnet (Kasten 620). Wie oben beschrieben, kann der verantwortliche Knoten für die Weiterlieferung ein inhaltsanfordernder Peer-Knoten, ein nicht inhaltsanfordernder Peer-Knoten oder sogar der Quellknoten selbst sein. Es werden dann Weiterverteilungsschlangen zwischen den Knoten angewendet, um die dynamischen Änderungen in dem Netzwerk (Kasten 630) zu verarbeiten. Durch die Anwendung dieser Weiterverteilungsschlangen zwischen den Knoten kann das Inhaltverteilungsverfahren effektiv die dynamischen Änderungen der Netzwerkbedingungen behandeln. Als Beispiel werden Änderungen der Netzwerkbedingungen wie etwa Schwankungen der Upload-Bandbreite, der Paketverlust und die Paket-Fluktuation jedes Knotens in dem Netzwerk auf einer fortlaufenden Grundlage so verarbeitet, dass, wenn ein Knoten eine Verringerung der Kapazität erfährt, die Anzahl der Inhaltsblöcke proportional verringert wird, die diesem Knoten für die Weiterlieferung zugeordnet sind.
  • IV. Einzelheiten des Betriebs und Funktionsbeispiel
  • Die Einzelheiten des Betriebs des Inhaltverteilungsverfahrens, die in 6 gezeigt werden, werden jetzt erläutert. Das grundlegende Verteilungsgerüst des Inhaltverteilungsverfahrens sieht wie folgt aus. Der Inhalt, der verteilt werden soll, wird in die Blöcke Bj, j = 1, 2, ..., M aufgeteilt. Für jeden Block Bj wird ein einziger Knoten zugeordnet, um den Inhaltsblock an die übrigen Peer-Knoten zu verteilen. Dieser einzige Knoten ist der verantwortliche Knoten für die Weiterverteilung dieses Blocks. Häufig ist der verantwortliche Knoten für die Weiterverteilung des Blocks Bj ein Peer-Knoten ti. In einem solchen Fall sendet der Quellknoten eine Kopie des Blocks Bj an den Peer-Knoten ti, welcher dann den Block Bj durch das Senden einer Kopie des Blocks an die übrigen Peer-Knoten weiter verteilt. Sobald jedoch der Quellknoten reichliche Bandbreiten-Ressourcen aufweist, kann der verantwortliche Knoten für die Verteilung des Blocks Bj der Quellknoten s selbst sein. In diesem Fall wird der Quellknoten eine Kopie des Blocks Bj direkt an jeden Peer-Knoten ti senden.
  • Aufteilung des Inhalts
  • Wie oben bezüglich 6 angemerkt, teilt das Inhaltverteilungsverfahren zunächst den Inhalt, der verteilt werden soll, in viele kleine Blöcke auf. Die Anzahl der Blöcke, die durch einen Knoten weiter verteilt werden, kann dann proportional zu der Kapazität (oder der Ressource) des Knotens sein. In einer bevorzugten Implementierung wird die Kapazität hinsichtlich der Upload-Bandbreite des Knotens bewertet oder definiert. Einem Knoten, der eine größere Upload-Bandbreite aufweist, kann eine größere Anzahl von Inhaltsblöcken für die Weiterverteilung übergeben werden. Ähnlich kann einem Knoten, der eine geringere Upload-Bandbreite aufweist, eine kleinere Anzahl von Inhaltsblöcken für die Weiterverteilung übergeben werden.
  • Das Inhaltverteilungsverfahren teilt den Inhalt in eine große Anzahl von kleineren Blöcken für die Verteilung auf. Die Größe eines Inhaltsblocks ist ein Kompromiss zwischen der Granularität der Verteilung und dem Overhead, der für die Identifizierung des Blocks benötigt wird. In einer getesteten Implementierung ist die bevorzugte Größe des Inhaltsblocks geringfügig geringer als eine maximale Übertragungseinheit (MTU) des Netzwerks. Das ermöglicht es einem Inhaltsblock, als ein einzelnes Paket über das Netzwerk gesendet zu werden. In der getesteten Implementierung war die Größe des Inhaltsblocks auf 1 Kilobyte (KB) eingestellt.
  • Verteilungswege
  • Während der Inhaltverteilung wird jeder Inhaltsblock einem bestimmten Knoten für die Weiterverteilung zugeordnet. Die Anzahl der Inhaltsblöcke, die einem Peer-Knoten zugeordnet werden, ist proportional seiner Kapazität, welche in einer getesteten Implementierung durch seine Upload-Bandbreite bewertet wird. Die Upload-Bandbreite wird verwendet, weil es hinsichtlich der Mitwirkung eines Peer-Knotens für das Netzwerk die Upload-Bandbreite des Peer-Knotens ist, die von Bedeutung ist. Somit sollte das Inhaltverteilungsverfahren soviel wie möglich Gebrauch von den Upload-Bandbreiten der Peer-Knoten machen, um den Inhalt in einem P2P-Netzwerk effizient zu verteilen.
  • Zusätzlich sollte beachtet werden, dass für die Verteilung der Inhaltsblöcke der primäre Parameter, der die Geschwindigkeit der Verteilung bestimmt, der Durchsatz des Netzwerk-Links ist. Wenn ein Client unter zahlreichen Servern auswählen kann, von welchem er eine Datei empfangen will, sollte er den Server auswählen, der den schnellsten Netzwerk-Durchsatz zwischen den beiden bereitstellt. Weitere Netzwerk-Parameter, wie etwa die Round-Trip-Time (RTT), die Paketverlustrate, die Paket-Fluktuation, sind weniger wichtig als der Durchsatz des Netzwerk-Links. In Netzwerken, die aus Endnutzer-Knoten bestehen, kann das Netzwerk durch die Zuordnung einer Upload-Bandbreite, bedingt für jeden Knoten, eine Download-Bandbreite, bedingt für jeden Knoten und eine Link-Bandbreite, bedingt zwischen jedem von zwei Knoten oder zwei Gruppen von Knoten gekennzeichnet werden. Der Engpass ist jedoch gewöhnlich die Upload-Bandbreite der Knoten.
  • Bei dem Inhaltverteilungsverfahren, das hier beschrieben wird, sendet ein Peer-Knoten den Inhalt an mehrere Bestimmungsorte. Die Ausgabe der Peer-Knoten splittet somit unter mehreren Empfängern. Als ein Ergebnis ist die Link-Bandbreite, die zwischen den zwei Peer-Knoten benötigt wird, nur ein Teil der Upload-Bandbreite des sendenden Knotens, welche üblicherweise nicht zum Engpass wird. Die benötigte Download-Bandbreite für einen Knoten, um den Inhalt zu empfangen, ist immer geringer als die gesamten verfügbaren Upload-Bandbreiten aller Knoten in dem Netzwerk, geteilt durch die gesamte Anzahl der Empfangsknoten. in zunehmend gebräuchlichen Netzwerken sind die gesamten Upload-Bandbreiten der Endnutzer-Knoten viel kleiner als die gesamten Download-Bandbreiten. Das gilt besonders für Endnutzer-Knoten in den Kabelmodem- und ADSL-Netzwerken, für welche das Gleichgewicht asymmetrisch in Richtung größerer Download-Bandbreiten verschoben ist. Sogar für Nutzerknoten in den Campus-Netzwerken oder den Corporate-Netzwerken kann die Download-Bandbreite noch viel größer sein als die verfügbare Upload-Bandbreite, weil der Nutzer die Upload-Bandbreite beschneiden kann, um die Teilnahme an P2P-Netzwerkaktivitäten zu begrenzen. In der folgenden Erläuterung wird angenommen, dass die Empfangsknoten ausreichend Download- und Link-Bandbreiten aufweisen, um den Inhalt durch das Inhaltverteilungsverfahren zu empfangen.
  • Unter nochmaligem Bezug auf 5 wird angenommen, dass die Upload-Bandbreiten der Peer-Knoten t1 und t2 gleich B sind; die des Peer-Knotens t3 ist 2B; die des Peer-Knotens t4 ist 3B, und die die des Quellknotens ist 4B, wobei B eine Einheit der Bandbreite ist. Eine optimale Strategie für die vollständige Nutzung der Upload-Bandbreiten der Quell- und Peer-Knoten wird in Tabelle 1 gezeigt.
  • Figure 00150001
    Tabelle 1
  • Wenn das Netzwerk einen Quellknoten beinhaltet, werden N1 inhaltsanfordernde Peer-Knoten (N1 > 1, weil sonst das Problem trivial ist) und N2 nicht inhaltsanfordernde (aber bereit, teilzunehmen) Peer-Knoten, wobei das Netzwerk das Inhaltverteilungsverfahren verwendet, den Inhalt durch N1-hoch-2-Bäume mit der Zwischenstufe N1 – 1 (wobei der Zwischenknoten einer der inhaltsanfordernden Knoten ist), N2-hoch-2-Bäume mit der Zwischenstufe N1 (wobei der Zwischenknoten einer der nicht inhaltsanfordernden Knoten ist) und einem hoch-1-Baum mit der Stufe N1, die alle in dem Quellknoten verwurzelt sind, verteilen.
  • Es sollte beachtet werden, dass diese Netzwerktopologie, die durch das Inhaltverteilungsverfahren und -system angewendet wird, ein Anzahl von Eigenschaften aufweist, die sie von der oben beschriebenen FastReplica-Technik unterscheidet. Als Erstes trennen das Inhaltverteilungsverfahren und -system nicht die Verteilungs- und die Sammelschritte. Stattdessen werden die Inhaltsblöcke kontinuierlich durch die Quell- und Peer-Knoten verteilt. Zum Zweiten ist die Menge des Inhalts bei dem Inhaltverteilungsverfahren nicht festgelegt, die durch einen bestimmten Peer weiter verteilt wird, sondern sie variiert gemäß den Leistungsfähigkeiten (wie etwa den Upload-Bandbreiten) der Peer-Knoten. Schließlich können das Inhaltverteilungsverfahren und -system den Quellknoten und nicht inhaltsanfordernde Peer-Knoten in die Inhaltweiterverteilung einbinden.
  • Das Inhaltverteilungsverfahren verteilt den Inhalt auf drei Wegen: 1) durch inhaltsanfordernde Peer-Knoten, 2) durch nicht inhaltsanfordernde Peer-Knoten und 3) direkt von dem Quellknoten. Jedes Verteilungsverfahren verlangt unterschiedliche Mengen an Netzwerk-Ressourcen von den beteiligten Knoten. Nochmals, die hauptsächliche Netzwerk-Ressource ist die in Anspruch genommene Upload-Bandbreite. Um einen Anteil des Inhalts zu verteilen, der die Bandbreite B in einem Netzwerk mit N1 inhaltsanfordernden Peer-Knoten unter Verwendung des Inhaltverteilungsverfahrens aufweist, fordert der erste Verteilungsweg die Upload-Bandbreite B von dem Quellknoten und die Upload-Bandbreite (N1 – 1)B von jedem inhaltsanfordernden Peer-Knoten an. Der zweite Verteilungsweg fordert die Upload-Bandbreite B von dem Quellknoten und die Upload-Bandbreite N1·B von jedem nicht inhaltsanfordernden Peer-Knoten an. Der dritte Verteilungsweg fordert die Upload-Bandbreite N1·B von dem Quellknoten an. Somit verwendet das Inhaltverteilungsverfahren die Upload-Bandbreiten der Peer-Knoten (einschließlich der inhaltsanfordernden Peer-Knoten und der nicht inhaltsanfordernden Peer-Knoten), um die Upload-Bandbreite zu verringern, die auf dem Quellknoten lastet. Dies hat die Wirkung, dass die maximale Rate der Inhaltverteilung beschleunigt wird.
  • Es sollte beachtet werden, dass für denselben Weg die Menge der Netzwerk-Ressource, die in Anspruch genommen wird, unabhängig ist von der individuellen Upload-Bandbreite jedes Peer-Knotens. Somit kann das Problem der Zuordnung der Bandbreite unter Bezug auf jede Weg-Kategorie anstatt jedes Peer-Knotens berücksichtigt werden.
  • Zuordnung der Bandbreite
  • In einem Netzwerk, das das Inhaltverteilungsverfahren und -system verwendet, ist die wertvollste Ressource die Upload-Bandbreite des Quellknotens, woher der Inhalt stammt. Wenn die Upload-Bandbreite des Quellknotens aufgebraucht ist, kann die Inhaltverteilung nicht weiter beschleunigt werden, selbst wenn es noch Peer-Knoten mit verfügbaren Upload-Bandbreiten gibt. Es ist offensichtlich, wenn der Quellknoten die Inhaltsblöcke mit einer Rate B durch die Liefer-Links an alle N1 inhaltsanfordernden Peer-Knoten sendet, dass N1·B der Upload-Bandbreite der Quelle in Anspruch genommen wird. Andererseits wird nur eine Menge B der Upload-Bandbreite des Quellknotens benötigt, wenn der Quellknoten Inhaltsblöcke mit der Rate B an einen Peer-Knoten t1 sendet, der wiederum die Blöcke an die übrigen der inhaltsanfordernden Peer-Knoten verteilt. Offensichtlich sollte der Quellknoten so viele Inhaltsblöcke wie möglich an die Peer-Knoten für die Weiterlieferung weiterleiten, so lang es mehr als einen inhaltsanfordernden Peer-Knoten gibt. Zwischen den inhaltsanfordernden und den nicht inhaltsanfordernden Peer-Knoten weisen die inhaltsanfordernden Peer-Knoten einen geringen Vorteil in der Effizienz auf, weil die Inhaltsblöcke nicht ungenutzt sind, die an die Knoten in den Weiterleitungs-Links gesendet werden. Als ein Ergebnis ist unter den oben ausgeführten drei Verbreitungswegen ein am meisten bevorzugter Weg der Weg 1 (durch inhaltsanfordernden Peer-Knoten), gefolgt von dem Weg 2 (durch nicht inhaltsanfordernde Peer-Knoten). Nur wenn der Quellknoten noch Upload-Bandbreite übrig hat, kann er den Weg 3 wählen, um den Inhalt direkt an die Peer-Knoten zu verteilen.
  • Man nehme an, dass das Netzwerk, dass das Inhaltverteilungsverfahren und -system verwendet, einen Quellknoten der Upload-Bandbreite Bs, N1 (N1 > 1), inhaltsanfordernde Peer-Knoten mit der durchschnittlichen Bandbreite B1 und N2 nicht inhaltsanfordernde Peer-Knoten mit der durchschnittlichen Bandbreite B2 beinhaltet. Wenn man die Auswahlstrategie für den Verteilungsweg anwendet, die oben erläutert wird, ist der Verteilungsdurchsatz des Inhaltverteilungsverfahrens und -systems, welcher als die Menge des Inhalt-Multicast zu den inhaltsanfordernden Peer-Knoten pro Sekunde definiert ist:
    Figure 00180001
  • Die Gleichung (1) zeigt, dass der Verteilungsdurchsatz nur durch die Upload-Bandbreite des Quellknotens begrenzt wird, bevor die Upload-Bandbreiten aller Peer-Knoten verbraucht wurden. Alle N1 inhaltsanfordernden Peer-Knoten empfangen den Inhalt mit der Rate der Upload-Bandbreite des Quellknotens. Nachdem die Upload-Bandbreiten aller Peer-Knoten verbraucht wurden, wird der Verteilungsdurchsatz der (1/N1)te Teil der Summe der Upload-Bandbreiten des Netzwerks (N1B1 + N2B2 + B2) abzüglich eines kleinen Anteils (N2B2/N1), der bei der Verteilung durch nicht inhaltsanfordernde Peer-Knoten verbraucht wurde.
  • Auswahl des Verteilungswegs durch Weiterverteilungsschlangen
  • Zusammen mit der Priorität des Verteilungswegs, der, wie oben ausgeführt, implementiert wird, wird angenommen, dass die verfügbaren Upload-Bandbreiten der Quelle und aller Peer-Knoten bekannt sind, so dass die Bandbreite, die zwischen jedem von zwei Peer-Knoten zugeordnet ist, eindeutig berechnet werden kann. Dies stellt die Richtung bereit, so dass die Inhaltsblöcke entsprechend verteilt werden können. Es gibt jedoch noch ein einfacheres Verfahren, welches in einer verteilten Art und Weise arbeitet. Eine Schlange kann verwendet werden, um die Bandbreite bei jedem Verbindungs-Link abzuschätzen und die Auswahl der Verteilungswege der Inhaltsblöcke auf der Grundlage des Status der Schlangen zu regeln. Dies erreicht die implizite Zuordnung der Bandbreite, wenn die Bandbreiten des Netzwerks unbekannt sind.
  • Die Steuerstrategie der Bandbreite des Inhaltverteilungsverfahrens beinhaltet die Einrichtung einer Schlange, um den Inhalt zu Puffern, der von einem Knoten zu einem anderen geliefert wird. Die Schlange wird verwendet, um die Geschwindigkeit der Verteilung zwischen jedem von zwei Knoten zu steuern. In einer getesteten Implementierung des Inhaltverteilungsverfahrens von Inhalt sind die Links zwischen Knoten über TCP-Verbindungen eingerichtet. Die Weiterverteilungsschlangen sind somit TCP-Sende und -Empfangspuffer. Ein zusätzlicher Vorteil der Verwendung von TCP ist, dass die Ablaufsteuerung, die zuverlässige Datenlieferung und der Vorgang des Verlassens des Knotens automatisch durch TCP erledigt werden.
  • Die TCP-Verbindung, die Blöcke überträgt, die weiter verteilt werden sollen, wird ein Weiterleitungs-Link genannt, während die TCP-Verbindung, die Blöcke überträgt, die nicht weiter verteilt werden sollen, der Liefer-Link genannt wird. Eine TCP-Verbindung (der Liefer-Link) ist von jedem Peer-Knoten zu jedem anderen inhaltsanfordernden Peer-Knoten eingerichtet. Darüber hinaus sind eine TCP-Verbindung (der Weiterleitungs-Link) von dem Quellknoten zu jedem nicht inhaltsanfordernden Peer-Knoten und zwei TCP-Verbindungen (der Weiterleitungs-Link und der Liefer-Link) von dem Quellknoten zu jedem inhaltsanfordernden Peer-Knoten eingerichtet. Diese Auswahl der Verteilungswege wird dann verfügbare Slots in den TCP-Verbindungen finden.
  • Der Prozess der Weiterlieferung wird nun im Hinblick auf die Quell- und Peer-Knoten ausführlich erläutert. Jeder inhaltsanfordernde Peer-Knoten beinhaltet mindestens zwei Threads. Ein Thread (der „Liefer-Link"-Thread) empfängt die Inhaltsblöcke von dem Liefer-Link, während ein zweiter Thread (der „Weiterleitungs-Link"-Thread) die Inhaltsblöcke von dem Weiterleitungs-Link empfängt und sie an die übrigen inhaltsanfordernden Peer-Knoten durch ihre Liefer-Links weiterverteilt. Für nicht inhaltsanfordernde Peer-Knoten wird nur der Weiterleitungs-Link-Thread betrieben.
  • 7 ist ein ausführliches Ablaufdiagramm, das den Betrieb eines Weiterleitungs-Link-Threads eines Peer-Knotens (sowohl inhaltsanfordernd als auch nicht inhaltsanfordernd) darstellt. In jeder Wiederholungsschleife des Weiterleitungs-Link-Threads wird bestimmt, ob die herein kommende Weiterleitungs-Link-Schlange leer ist (Kasten 700). Wenn dem so ist, dann wartet der Prozess (Kasten 710). Anderenfalls entfernt der Peer-Knoten einen Inhaltsblock von der herein kommenden Weiterleitungs-Link-Schlange (Kasten 720). Als Nächstes kopiert der Knoten den Inhaltsblock auf die hinaus gehenden Liefer-Link-Schlangen an alle anderen inhaltsanfordernden Peer-Knoten (Kasten 730). Es wird dann bestimmt, ob der In haltsblock erfolgreich in die Schlangen zu allen Peer-Knoten gesetzt wurde (Kasten 740). Wenn nicht, dann wartet der Prozess (Kasten 750) und versucht dann den versagenden inhaltsanfordernden Peer-Knoten erneut. Anderenfalls beginnt die Wiederholung erneut.
  • Es sollte beachtet werden, dass der Weiterleitungs-Link-Thread keinen weiteren Inhaltsblock von der herein kommenden Weiterleitungs-Link-Schlange entfernt, bis er erfolgreich den letzten Inhaltsblock an alle die hinaus gehenden Liefer-Link-Schlangen kopiert hat. Wenn die hinaus gehenden Liefer-Links blockiert sind, was möglicherweise aus dem Erreichen der Grenze der Upload-Bandbreite des Peer-Knotens resultiert, wird auf diese Weise der Peer-Knoten das Entfernen der Inhaltsblöcke von der herein kommenden Weiterleitungs-Link-Schlange anhalten. Dies regelt effektiv die Empfangsrate des Weiterleitungs-Links, um der 1/Mte Teil der Upload-Bandbreite des Peer-Knotens zu sein, wobei M die Anzahl der Knoten ist, zu denen der Inhaltsblock weiter verteilt wird, wobei N1 – 1 für den inhaltsanfordernden Peer-Knoten und N1 für den nicht inhaltsanfordernden Peer-Knoten steht.
  • 8 ist ein ausführliches Ablaufdiagramm, das den Betrieb eines Liefer-Link-Threads eines inhaltsanfordernden Peer-Knotens darstellt. An Anfang wird eine Bestimmung durchgeführt, ob die ankommenden Inhaltsblöcke von dem Quellknoten sind (Kasten 800). Für die Inhaltsblöcke, die von anderen Knoten als dem Quellknoten bei den Liefer-Links ankommen, ist der Ablauf der, die Inhaltsblöcke von der herein kommenden Liefer-Link-Schlange zu entfernen, sobald sie ankommen. Zuerst wird eine Bestimmung durchgeführt, ob die herein kommende Liefer-Link-Schlange leer ist (Kasten 810). Wenn nicht, dann wird der Inhaltsblock von der herein kommenden Liefer-Link-Schlange (Kasten 820) entfernt. Anderenfalls wird der Inhalt von den nächsten Knoten geprüft (Kasten 830).
  • Für Inhaltsblöcke, die bei dem Liefer-Link von dem Quellknoten ankommen, wird der Empfangspuffer des Weiterleitungs-Links geprüft (Box 840). Eine zusätzliche Bedingung ist, dass Inhaltsblöcke von der Liefer-Link-Schlange nur dann entfernt werden, wenn der Umfang des Empfangspuffers des Weiterleitungs-Links von demselben Quellknoten über einem bestimmten Grenzwert liegt (Kasten 850). Wenn der Umfang des Puffers nicht über dem Grenzwert liegt, dann wird der ankommende Inhaltsblock bei dem Liefer-Link von dem Quellknoten deshalb nicht entfernt. Stattdessen wird der Liefer-Link des nächsten Knotens geprüft (Kasten 830). Anderenfalls wird die Bestimmung durchgeführt, ob der Liefer-Link leer ist (Kasten 810) und, wenn nicht, dann wird der Inhaltsblock von dem Liefer-Link entfernt (Kasten 820).
  • Der Grund ist, dass der Liefer-Link und der Weiterleitungs-Link zwei getrennte TCP-Verbindungen sind, die denselben Netzwerk-Pfad von der Quelle zu dem Peer-Knoten teilen. Die Inhaltsblöcke, die durch den Weiterleitungs-Link gesendet werden, weisen eine höhere Priorität auf, da sie an die anderen inhaltsempfangenden Peers weiter geliefert werden sollen. Der Grundsatz des Umfangs des Empfangspuffers garantiert, dass die Bandbreite des Weiterleitungs-Links mindestens der 1/Mte Teil der Upload-Bandbreite sein wird, bevor der Liefer-Link von dem Quellknoten zu dem Peer-Knoten aktiviert wird.
  • 9 ist ein ausführliches Ablaufdiagramm, das den Betrieb eines Quellknotens in Übereinstimmung mit dem Inhaltverteilungsverfahren darstellt, das hier offen gelegt wird. Im Allgemeinen wählt der Quellknoten für jeden Inhaltsblock einen der Verteilungswege auf der Grundlage des Status der Weiterverteilungsschlange. Die Auswahl des Weges erfolgt auf der Grundlage der folgenden Reihenfolge von Prioritäten. Die Weiterverteilung durch einen inhaltsanfordernden Peer-Knoten hat die höchste Priorität. Die Weiterverteilung durch einen nicht inhaltsanfordernden Peer-Knoten hat die zweithöchste Priorität. Die Verteilung direkt von dem Quellknoten an alle die inhaltsanfordernden Peer-Knoten hat die niedrigste Priorität.
  • Wie in 9 gezeigt, beginnt insbesondere der Prozess bei einem nächsten Inhaltsblock (Kasten 900) und einem nächsten inhaltsanfordernden Peer-Knoten (Kasten 905). Der Weiterleitungs-Link des Peer-Knotens wird dann geprüft (Kasten 910). Der Quellknoten überprüft, um zu bestimmen, ob der Platz für den Inhaltsblock in jeder TCP-Verbindung des Weiterleitungs-Links von dem Quellknoten zu dem inhaltsanfordernden Peer-Knoten (Kasten 915) verfügbar ist. Wenn der Sendepuffer einer der TCP-Verbindungen nicht voll ist und einen ganzen Inhaltsblock enthalten kann, wird der Inhaltsblock in diesen TCP-Puffer gesetzt, um an den entsprechenden inhaltsanfordernden Peer-Knoten gesendet zu werden, welcher dann den Inhaltsblock an die anderen inhaltsanfordernden Peer-Knoten durch die entsprechenden Liefer-Links (Kasten 920) weiter verteilt. Wenn kein Platz bei den Weiterleitungs-Links zu den inhaltsanfordernden Peer-Knoten gefunden werden kann, bestimmt der Quellknoten, ob alle inhaltsanfordernden Peers geprüft worden sind (Kasten 925) und über prüft dann die nicht inhaltsanfordernden Peer-Knoten (Kasten 930) und ihre Weiterleitungs-Links (Kasten 935).
  • Wenn der Platz gefunden wurde, der bei einem Link verfügbar ist (Kasten 940), wird der Inhaltsblock in den TCP-Puffer für den entsprechenden Link (Kasten 945) gesetzt. Wenn alle Peers geprüft wurden (Kasten 950) und dort sogar bei den Links zu den nicht inhaltsanfordernden Peer-Knoten noch kein Platz verfügbar ist, verfolgt der Quellknoten einen letzten Verteilungsweg. Dieser letzte Verteilungsweg prüft die Liefer-Links zu allen inhaltsanfordernden Peer-Knoten (Kasten 955) und bestimmt, ob dort Platz für einen Block in allen inhaltsanfordernden Peer-Knoten ist (Kasten 960). Verbunden mit dem Grundsatz des Umfangs des Empfangspuffers stellt dies, wie in 8 gezeigt, sicher, dass die Bandbreite des Weiterleitungs-Links nicht durch den Verkehr des Weiterleitungs-Links verschmälert wird. Wenn der Platz gefunden wird, wird der Inhaltsblock repliziert und in den Liefer-Link zu jedem inhaltsanfordernden Peer-Knoten gesetzt (Kasten 965). Wenn es keinen Platz auf einem der Verbreitungswege gibt, wird der Quellknoten für eine kurze Zeitspanne warten, bevor er erneut versuchen wird, wieder einen verfügbaren Weg für den Inhaltsblock zu finden (Kasten 970).
  • Aufgabe der Weiterverteilunqsschlange
  • Unter Verwendung von Weiterverteilungsschlangen und der obigen Betriebsstrategie für die Peer- und Quellknoten, verarbeitet das Inhaltverteilungsverfahren Unregelmäßigkeiten, wie etwa den Paketverlust und die Netzwerküberlastung während der Inhaltverteilung durch die Abstimmung der Upload-Bandbreiten der Knoten, um den maximalen Durchsatz der Inhaltverteilung durch das vollständige Ausnutzen der Upload-Bandbreiten-Ressourcen der Quell- und Peer-Knoten zu erreichen. Die Optimalität des Inhaltverteilungsverfahrens und -systems wird nun in weiterer Ausführlichkeit erklärt.
  • Die Inhaltsblöcke zwischen jedem von zwei Knoten werden durch eine Weiterverteilungsschlange verteilt, welche in einer getesteten Implementierung eine TCP-Verbindung mit einer Sende- und Empfangspuffer einer bestimmten Größe ist. Wie in dem „Wahl-des-Verteilungswegs-durch-Weiterverteilungsschlangen"-Abschnitt oben dargelegt, schieben die Quell- und Peer-Knoten des Inhaltverteilungsverfahrens und -systems so viele Inhaltsblöcke wie möglich in die TCP-Verbindungen, bis der TCP-Sendepuffer voll ist. Die Inhaltsblöcke, die in den Sendepuffern der TCP-Verbindungen bevorstehen, stellen sicher, dass die Netzwerkpfade zwischen jedem von zwei Peer-Knoten vollständig genutzt werden, wobei sogar Netzwerkunregelmäßigkeiten wie der Paketverlust und die Netzwerküberlastung berücksichtigt werden. Wenn es keine Paketverluste gibt, werden neue Inhaltsblöcke an die Bestimmungs-Peer-Knoten durch die TCP-Verbindungen gesendet. Wenn es Paketverluste oder andere Netzwerkunregelmäßigkeiten gibt, wird TCP versuchen, sich von den Netzwerkfehlern durch die Rückübertragungen zu erholen und die Inhaltsblöcke, die in den TCP-Sendepuffern bevorstehen, werden nicht ausgesendet werden. Die Inhaltsblöcke, die in dem TCP-Empfangspuffer des Weiterleitungs-Links bevorstehen, stellen sicher, dass die Upload-Bandbreite des entsprechenden Peer-Knotens vollständig genutzt wird. Nachdem der Peer-Knoten den letzten Inhaltsblock in den TCP-Sendepuffer des Liefer-Links geschoben hat, kann er den Inhaltsblock abrufen, der in dem TCP-Sendepuffer bevorsteht. Somit kann der Vorgang des Schiebens von Blöcken in die Liefer-Links so fortgesetzt werden, dass die Upload-Bandbreite nicht verbraucht wird.
  • Wie in 79 gezeigt, stellt das Inhaltverteilungsverfahren zusätzlich sicher, dass die Upload-Bandbreiten des Quellknotens und der Peer-Knoten vollständig genutzt werden. Dies wird dadurch erreicht, dass sicher gestellt wird, dass die Wege der Inhaltverteilung zu Gunsten der Verteilung durch inhaltsanfordernde Peer-Knoten gewählt werden, dann der Verteilung durch nicht inhaltsanfordernde Peer-Knoten und letztlich der direkten Verteilung von dem Quellknoten.
  • Wenn die Upload-Bandbreite des Quellknotens gering ist und die Liefer-Links von der Quelle zu den Peer-Knoten nicht aktiviert sind, während das Inhaltverteilungsverfahren verwendet wird, um den Inhalt an IV, inhaltsanfordernde Peer-Knoten zu verteilen, dann wird der Inhaltverteilungs-Durchsatz des Inhaltverteilungsverfahrens die Upload-Bandbreite Bs des Quellknotens sein. In diesem Fall wird der Inhalt von den Quellknoten mit einer Rate Bs ausgesendet, wobei die Peer-Knoten ausreichend Upload-Bandbreite aufweisen, um den Inhalt an alle inhaltsanfordernden Peer-Knoten zu senden. Jeder inhaltsanfordernde Peer-Knoten empfängt den Inhalt mit der Rate Bs, so als ob der Quellknoten den Inhalt nur an ihn allein senden würde. Wenn die Upload-Bandbreite des Quellknotens hoch ist und die Liefer-Links von der Quelle zu den inhaltsanfordernden Peer-Knoten aktiviert sind, dann wird der Durchsatz der Inhaltverteilung des Inhaltverteilungsverfahrens die Summe der Upload-Bandbreiten der Quell- und Peer-Knoten sein, abzüglich eines kleinen Anteils der Bandbrei te, die durch das Senden von Inhaltsblöcken an nicht inhaltsanfordernde Peer-Knoten für die Weiterlieferung verbraucht wurden, alle geteilt durch die Anzahl N1 der inhaltsanfordernden Knoten. Folglich erreicht das Inhaltverteilungsverfahren den maximalen Inhaltverteilungs-Durchsatz, der in der Gleichung (1) berechnet wird, ohne Berücksichtigung der Netzwerk-Ressource oder Kapazitäts- (wie etwa die Upload-Bandbreite) Konfiguration des Netzwerks. Das Inhaltverteilungsverfahren passt sich auch leicht den Änderungen der Bandbreite des Netzwerks durch die Weiterverteilungsschlangen der TCP-Links an. Wenn ein bestimmter Peer-Knoten langsamer wird, werden sich die Inhaltsblöcke in ihren Liefer-Links langsam bewegen, wobei sie die Peer-Knoten veranlassen, weniger Inhaltsblöcke von ihren Weiterleitungs-Links zurück zu holen. Das wiederum veranlasst den Quellknoten, weniger Inhaltsblöcke an diesen langsamer gewordenen Peer-Knoten zu senden und die Inhaltsblöcke an andere, schnellere Peer-Knoten umzuleiten. Wenn ein bestimmter Peer-Knoten schneller wird (zum Beispiel, wenn die Upload-Bandbreite ansteigt), kann sich ersatzweise das Inhaltverteilungsverfahren gleichermaßen anpassen, indem es mehr Inhaltsblöcke an diesen Peer-Knoten sendet.
  • Funktionsbeispiel
  • Um das Inhaltverteilungsverfahren und -system besser zu verstehen, das hier offen gelegt wird, werden die Einzelheiten des Betriebs eines exemplarischen Funktionsbeispiels vorgelegt. Es sollte beachtet werden, dass dieses Funktionsbeispiel nur eine Art ist, mit der das Inhaltverteilungsverfahren und -system implementiert werden können.
  • In dieser Implementierung beinhalteten das Inhaltverteilungsverfahren und -system ein Sendermodul, das durch den Quellknoten betrieben wird und ein Empfangsmodul, dass von jedem der Peer-Knoten betrieben wird. Um die Leistung des Inhaltverteilungsverfahrens und -systems zu bestätigen, wurde ein Inhalts-Liefer-P2P-Netzwerk aufgebaut, das einen Quellknoten und 4 inhaltsanfordernde Peer-Knoten aufweist. Eine Mediendatei, die eine Größe von ungefähr 1 MB aufweist, wurde dann von dem Quellknoten zu all den Peer-Knoten verteilt. Der tatsächliche Durchsatz wurde durch Teilen der Verteilung der Dateigroße durch die Zeit gemessen, die das Inhaltverteilungsverfahren und -system brauchten, um die Datei zu verteilen. Dies wurde dann mit der theoretischen Übertragungs-Kapazität des Netzwerks verglichen, wobei das Inhaltverteilungsverfahren gegenüber dem tatsächlichen Durchsatz unter einer Auswahl von Konfigurationen der Upload-Bandbreite des Quellknotens und der Peer-Knoten verwendet wurde. Die Ergebnisse werden in Tabelle 2 gezeigt, während die theoretische Übertragungs-Kapazität weiter unten dargelegt wird.
  • Unter Verwendung der Implementierung des Inhaltverteilungsverfahrens und -systems in Sende- und Empfänger-Komponenten, die in 79 gezeigt werden, ist der tatsächliche Durchsatz eines Netzwerks, das das Inhalts-Empfangsverfahren und -system verwenden, bemerkenswert nahe an der analytischen Übertragungs-Kapazität des Peer-to-Peer-Netzwerks.
  • Figure 00250001
    Tabelle 2
  • V. Exemplarische Betriebsumgebung
  • Das Inhaltverteilungsverfahren und -system wurden entwickelt, um in einer EDV-Umgebung und in einem EDV-Gerät zu arbeiten. Die EDV-Umgebung, in welcher das Inhaltverteilungsverfahren und -system arbeiten, wird nun erläutert. Die folgende Erläuterung ist gedacht, um eine kurze, allgemeine Beschreibung einer geeigneten EDV-Umgebung zu bieten, in welche das Inhaltverteilungsverfahren und -system implementiert werden können.
  • 10 stellt ein Beispiel einer geeigneten EDV-Systemumgebung dar, in welche das Inhaltverteilungsverfahren und -system, die in 5 gezeigt werden, implementiert werden können. Die EDV-Systemumgebung 1000 ist nur ein Beispiel für eine geeignete EDV- Umgebung und ist nicht dazu gedacht, irgendeine Beschränkung für den Anwendungsbereich anzudeuten, was die Verwendung oder die Funktionalität der Erfindung anbetrifft. Genauso wenig sollte die EDV-Umgebung 1000 so interpretiert werden, als ob sie irgendeine Abhängigkeit oder einen Bedarf bezüglich irgendeiner Komponente oder einer Kombination von Komponenten aufweisen würde, die in der exemplarischen EDV-Umgebung 1000 dargestellt ist.
  • Das Inhaltverteilungsverfahren und -system sind mit zahlreichen weiteren Mehrzweck- oder Sonderzweck-EDV-Systemumgebungen oder Konfigurationen betriebsfähig. Beispiele bekannter EDV-Systeme, Umgebungen und/oder Konfigurationen, die geeignet sein können für den Gebrauch mit dem gradienten-korrigierten linearen Interpolations-Verfahren und dem System, beinhalten – sind aber nicht darauf beschränkt – PC's, Server-Rechner, Handheld, Laptop oder mobile Rechner oder Kommunikations-Geräte wie etwa Mobiltelefone, PDA's, Multiprozessor-Systeme, Systeme auf der Grundlage von Multiprozessoren, Set-Top-Boxen, programmierbare Unterhaltungselektronik, Netzwerk-PC's, Kleinrechner, Großrechner, dezentralisierte EDV-Umgebungen, die jedes der obigen Systeme oder Geräte beinhalten, oder Ähnliche.
  • Das Inhaltverteilungsverfahren und -system können in dem allgemeinen Zusammenhang von rechnerausführbaren Befehlen beschrieben werden, wie etwa Programm-Modulen, die durch einen Rechner ausgeführt werden. Im Allgemeinen beinhalten Programm-Module Routinen, Programme, Objekte, Komponenten, Datenstrukturen usw., die einzelne Aufgaben durchführen oder einzelne allgemeine Daten-Typen implementieren. Das Inhaltverteilungsverfahren und -system können ebenfalls in dezentralisierten EDV-Umgebungen betrieben werden, wo Aufgaben durch Fernverarbeitungsgeräte ausgeführt werden, die durch ein Kommunikationsnetz verlinkt sind. In einer dezentralisierten EDV-Umgebung können Programm-Module sowohl in lokalen als auch in Fern-Rechnerspeicher-Medien angeordnet sein einschließlich Speichergeräten. Unter Bezug auf 10 beinhaltet ein beispielhaftes System für die Implementierung des Inhaltverteilungsverfahrens und -systems ein Mehrzweck-EDV-Gerät in der Form eines Rechners 1010.
  • Komponenten des Rechners 1010 können – sind aber nicht darauf beschränkt – eine Zentraleinheit 1020, einen Systemspeicher 1030 und einen System-Bus 1021 beinhalten, der verschiedene System-Komponenten einschließlich des Systemspeichers mit der Zentralein heit 1020 verbindet. Der System-Bus 1021 kann jeder von verschiedenen Typen von Bus-Strukturen sein, die einen Speicher-Bus oder einer Speichersteuerung, einen Peripherie-Bus und einen lokaler Bus, der irgendeine eine Auswahl von Bus-Architekturen verwendet, einschließen. Als Beispiel und nicht als Einschränkung beinhalten solche Architekturen den Industry-Standard-Architecture (ISA, Befehlssatzarchitektur)-Bus, den Micro-Channel-Architecture(MCA)-Bus, den Enhanced-ISA (EISA, erweiterte Befehlssatzarchitektur)-Bus, den Video-Electronics-Standards Association (VESA)-Lokal-Bus und den Peripheral-Component-Interconnect (PCI, Prozessfähigkeitsindex)-Bus, auch als Mezzanine-Bus bekannt.
  • Der Rechner 1010 beinhaltet üblicherweise eine Auswahl von rechnerlesbaren Medien. Rechnerlesbare Medien können alle verfügbaren Medien sein, die durch den Rechner 1010 angesteuert werden können und beinhalten sowohl permanente und nicht permanente Medien als auch austauschbare und nicht austauschbare Medien. Beispielhaft und ohne Einschränkung können rechnerlesbare Medien Rechner-Speichermedien und Kommunikationsmedien umfassen. Rechner-Speichermedien umfassen permanente und nicht permanente Medien sowie austauschbare und nicht austauschbare Medien, die in jedes Verfahren oder jede Technologie für die Speicherung der Information implementiert sind, wie etwa rechnerlesbare Befehle, Datenstrukturen, Programm-Module oder andere Daten.
  • Rechner-Speichermedien beinhalten – sind aber nicht darauf beschränkt – RAM, ROM, EEPROM, Flash-Speicher oder andere Speichertechnologien, CD-ROM, Digital-Versatile-Disks (DVD), oder eine andere optische Plattenspeicherung, Magnetkassetten, das Magnetband, Magnetplattenspeicher oder andere Magnetspeichergeräte, oder jedes andere Medium, das verwendet werden kann, um die gewünschte Information zu speichern und welches von dem Rechner 1010 angesteuert werden kann. Kommunikations-Medien verkörpern üblicherweise rechnerlesbare Befehle, Datenstrukturen, Programm-Module oder andere Daten in einem modulierten Datensignal, wie etwa einer Trägerwelle oder einem anderen Transportmechanismus und beinhalten alle Medien, die die Information liefern.
  • Man beachte, dass der Terminus „modulated data signal" (Moduliertes Datensignal) ein Signal bedeutet, das eines oder mehrere seiner Merkmale auf eine solche Weise eingestellt oder geändert hat, um Informationen in dem Signal zu verschlüsseln. Als Beispiel und nicht als Einschränkung beinhalten Kommunikations-Medien verkabelte Medien wie etwa ein Ka belnetzwerk, oder die direkt verkabelte Verbindung und drahtlose Medien wie etwa akustische, RF-, infrarote oder andere drahtlose Medien. Kombinationen von allen obigen sollten ebenfalls in den Anwendungsbereich rechnerlesbarer Medien eingeschlossen werden.
  • Der Systemspeicher 1030 beinhaltet Rechner-Speichermedien in der Form des permanenten und/oder nicht permanenten Speichers wie etwa den Read-Only-Memory (ROM) 1031 und den Random-Access-Memory (RAM) 1032. Ein Basic-Input/Output-System (BIOS), das die Basis-Routinen enthält, die helfen, die Information zwischen Elementen innerhalb des Rechners 1010 zu übertragen, wie etwa das During-Start-Up, wird üblicherweise in dem ROM gespeichert. Der RAM 1032 enthält üblicherweise Daten und/oder Programm-Module, die sofort ansteuerbar sind, um und/oder sogleich durch die Zentraleinheit betrieben zu werden. Als Beispiel und nicht als Einschränkung stellt 10 das Betriebssystem 1034, Anwendungsprogramme 1035 oder weitere Programm-Module 1036 und Programmdaten 1037 dar.
  • Der Rechner 1010 kann auch andere austauschbare/nicht austauschbare, permanente/nicht permanente Rechner-Speichermedien beinhalten. Nur als Beispiel stellt 10 eine Festplatte 1041 dar, die von nicht austauschbaren, nicht permanenten magnetischen Medien liest oder darauf schreibt, ein Magnetplatten-Laufwerk 1051, das von einer austauschbaren, nicht permanenten Magnetplatte 1052 liest oder darauf schreibt und ein optisches Plattenlaufwerk 1055, das von einer austauschbaren, nicht permanenten optischen Platte 1056 liest oder darauf schreibt, wie etwa CD-ROM oder anderen optischen Medien.
  • Weitere austauschbare/nicht austauschbare, permanente/nicht permanente Rechner-Speichermedien, die in der exemplarischen Betriebsumgebung verwendet werden können beinhalten – sind aber nicht darauf beschränkt – Magnetband-Kassetten, Flash-Speicherkarten, DVD's, das digitale Videoband, den Solid-State-RAM, den Solid-State-ROM und Ähnliche. Die Festplatte 1041 ist üblicherweise mit dem System-Bus 1021 durch ein nicht austauschbares Interface wie etwa das Interface 1040 verbunden und das Magnetplatten-Laufwerk 1051 und das optische Plattenlaufwerk 1055 sind üblicherweise mit dem System-Bus 1021 durch ein austauschbares Speicher-Interface verbunden, wie etwa das Interface 1050.
  • Die Laufwerke und ihre angeschlossenen Rechner-Speichermedien, die oben erläutert und in 10 dargestellt wurden, stellen die Speicherung von rechnerlesbaren Befehlen, Datenstrukturen, Programm-Modulen und weiteren Daten für den Rechner 1010 bereit. In 10 werden zum Beispiel die Festplatte 1041 als Speicher-Betriebssystem 1044, Anwendungsprogramme 1045, weitere Programm-Module 1046 und Programmdaten 1047 dargestellt. Man beachte, dass diese Komponenten entweder dieselben wie das oder unterschiedlich von dem Betriebssystem 1034, Anwendungsprogrammen 1035, weiteren Programm-Modulen 1036 und Programmdaten 1037 sein können. Dem Betriebssystem 1044, den Anwendungsprogrammen 1045, weiteren Programm-Modulen 1046 und Programmdaten 1047 wurden hier unterschiedliche Bezugszeichen zugeordnet, um darzustellen, dass sie minimal unterschiedliche Kopien sind. Ein Nutzer kann Befehle und die Information in den Rechner 1010 durch Eingabegeräte eingeben, wie etwa eine Tastatur 1062 und ein Zeigegerät 1061, die allgemein als Maus, Trackball oder Touchpad bezeichnet werden.
  • Weitere Eingabegeräte (nicht gezeigt) können ein Mikrofon, einen Joystick, ein Gamepad, eine Satellitenschüssel, ein Scanner, ein Rundfunkempfänger oder eine Fernsehempfänger oder ein Videoübertragungsempfänger oder etwas Ähnliche sein. Diese und andere Eingabegeräte werden oft mit der Zentraleinheit 1020 über ein Nutzer-Eingangs-Interface 1060 verbunden, das mit dem System-Bus 1021 verbunden ist, können aber durch andere Interfaces und Bus-Strukturen, wie zum Beispiel einen Parallel-Port, einen Game-Port oder einen Universal-Serial-Bus (USB) verbunden werden. Ein Monitor 1091 oder ein anderer Typ eines Bildschirmgeräts wird ebenfalls mit dem System-Bus 1021 über ein Interface verbunden, wie etwa ein Video-Interface 1090. Zusätzlich zu dem Monitor können Rechner auch weitere periphere Ausgabegeräte wie etwa Lautsprecher 1097 und den Drucker 1096 beinhalten, welche durch ein peripheres Ausgabe-Interface 1095 verbunden sein können.
  • Der Rechner 1010 kann in einer vernetzten Umgebung arbeiten, wobei er Ortsverbindungen zu einer oder zu mehreren Gegenstellen verwendet, wie etwa einer Gegenstelle 1080. Die Gegenstelle 1080 kann ein PC, ein Server, ein Router, ein Netzwerk-PC, ein Peer-Gerät oder ein anderer vergleichbarer Netzwerkknoten sein und beinhaltet üblicherweise viele oder alle Elemente, die oben bezüglich des Rechners 1010 beschrieben wurden, obwohl nur ein Speichergerät 1081 in 10 dargestellt wurde. Die Ortsverbindungen, die in 10 anschaulich dargestellt sind, beinhalten ein lokales Netzwerk (LAN) 1071 und ein Weitverkehrsnetz (WAN) 1073, können aber auch andere Netzwerke beinhalten. Solche vernetzten Umgebungen sind Standard in Büros, unternehmensweiten Rechner-Netzwerken, Intranets und dem Internet.
  • Sobald er in einer LAN-vernetzten Umgebung verwendet wird, wird der Rechner 1010 mit dem LAN 1071 durch ein Netzwerk-Interface oder einen Adapter 1070 verbunden. Sobald er in einer WAN-vernetzten Umgebung verwendet wird, beinhaltet der Rechner 1010 üblicherweise ein Modem 1072 oder andere Einrichtungen, um die Kommunikationen über das WAN 1073 einzurichten, wie etwa das Internet. Das Modem 1072, das intern oder extern sein kann, kann mit dem System-Bus 1021 über das Nutzer-Eingabe-Interface 1060 oder eine entsprechende Vorrichtung verbunden werden. In einer vernetzten Umgebung können Programm-Module, die bezüglich des Rechners 1010 anschaulich dargestellt sind, oder Teile davon in einem entfernt aufgestellten Speichergerät gespeichert werden. Als Beispiel und nicht als Einschränkung stellt 10 entfernte Anwendungsprogramme 1085 dar, die sich auf einem Speichergerät 1081 befinden. Es sollte gewürdigt werden, dass die gezeigten Netzwerkverbindungen exemplarisch sind und dass andere Einrichtungen verwendet werden können, um einen Kommunikations-Link zwischen den Rechnern einzurichten.
  • VI. Theoretische Analyse der Maximierung des Durchsatzes der Inhaltverteilung
  • In diesem Abschnitt beweisen wir, dass das Inhaltverteilungsverfahren und -system optimal für Peer-to-Peer-Netzwerke mit eingeschränkten Upload-Bandbreiten sind. Das Inhaltverteilungsverfahren und -system erreichen den maximal möglichen Durchsatz in solchen Netzwerken; es wird unten bewiesen, dass es kein anderes System besser kann.
  • Der Graph (V, E) stelle das Netzwerk dar, wobei V die Satz der Knoten und E der Satz der Links (Bögen) seien. s in V kennzeichne den Quellknoten und T kennzeichne die Teilmenge in E der inhaltsanfordernden Peer-Knoten. Die übrigen Knoten seien nicht inhaltsanfordernde Peer-Knoten. Man berücksichtige zwei Typen von Kapazitäten. c(e) sei die Kapazität jedes Bogens e in E und cout(v) stelle die Upload-Bandbreite (die Ausgangs-Kapazität) jedes Knotens v in V dar, so dass für jeden Knoten v die Summe der Kapazitäten der Bögen, die v verlassen, maximal cout(v) ist.
  • Ein cut (Abschnitt) zwischen zwei Knoten v1, v2 in V ist eine Partition von V in zwei Gruppen V1, V2, so dass vi in Vi ist, wobei i = 1,2 ist. Der Wert des Abschnitts ist die Summe der Kapazitäten c(e) bei den Bögen θ von V1 nach V2.
  • Es ist bekannt, dass der maximale Fluss zwischen s und jedem fallenden t in T den Minimalwert über alle Abschnitte zwischen s und t erreicht. Ct sei der Wert des maximalen Flusses (der Maximalfluss) zwischen s und t. Man beachte, dass Ct = Ct(c) von der Randkapazitäts-Funktion c: E → [0, ∞) abhängt.
  • Definition: Die Übertragungskapazität zwischen s und T ist der minimale Maximalfluss zwischen s und t in T, das heißt, C = mintCt. Man beachte, dass wie Ct, C = C(c) von der Randkapazitäts-Funktion c abhängt.
  • Natürlich ist die Übertragungskapazität C eine obere Abgrenzung bei der maximalen Rate, bei welcher allgemeine Informationen von s an alle Knoten in T übertragen werden kann.
  • Bedauerlicherweise kann C im Allgemeinen bei Verwendung des Multicast-Routing nicht erreicht werden. 11 ist ein Blockdiagramm, das darstellt, dass die Übertragungskapazität C nicht erreichbar ist, wenn das Multicast-Routing 1100 verwendet wird. Obwohl C immer erreicht werden kann, wenn die Netzwerk-Verschlüsselung verwendet wird, erfordert dies von den Zwischenknoten, ihre Eingangspakete zu codieren, nicht bloß zu routen, um Ausgangspakete zu erzeugen. Wenn nur das Routing verwendet wird, kann der maximale Durchsatz C0 von s nach T über mehrere Multicast-Bäume ein Faktor von logN geringer als C sein. Darüber hinaus ist die Bestimmung der optimalen Ansammlung von Multicast-Bäumen (C0 erreichend) NP-fest, während die am engsten bekannte Abgrenzung in der Lücke zwischen C0 und dem Durchsatz C00 < C, die in der polynomischen Zeit erreichbar ist, relativ frei ist. Wenn es andererseits keine Steiner-Knoten in dem Netzwerk gibt (ein Steiner-Knoten ist ein Knoten v, für den Cv < C gilt), kann die Übertragungskapazität C einfach durch das begierige Packen von Multicast-Bäumen erreicht werden, wie es durch das Edmond-Theorem impliziert wird.
  • Das Inhaltverteilungsverfahren und -system, welches insbesondere eine strukturierte Sammlung von mehreren Multicast-Bäumen ist, erreicht die Übertragungskapazität C = C(c) für eine gewisse Randkapazitäts-Funktion c(e). Weiterhin erreicht sie so die maximale Übertragungskapazität, wie das folgende Theorem zeigt.
  • Theorem: Der Durchsatz θ des Inhaltverteilungsverfahrens und -systems erreicht die maximal mögliche Übertragungskapazität gemäß der Randbedingungen der Knoten-Ausgangskapazität. Das heißt, θ = maxc C(c) über alle Randkapazitäts-Funktionen c: E → [0, ∞), so dass für alle Knoten v1 die Summe von c(e) über alle Bögen e, die v verlassen, höchstens cout(v) ist.
  • Beweis: Die folgenden sind einzelne Beweise für Netzwerke, in welchen Bs ≤ Bs1 + Bs2 und Netzwerke, in welchen Bs ≥ Bs1 + Bs2 ist. Ersteres wird mit einem Abschnitt bewiesen, der s von V-s trennt und wir beweisen das Letztere mit Abschnitten, die V-t von t trennen.
  • Zuerst wird Bs ≤ Bs1 + Bs2 angenommen. Für jede Randkapazitäts-Funktion c kann die Übertragungskapazität C(c) höchstens gleich dem Wert des Abschnitts sein, der s von V-s trennt. Weil dies höchstens Bs = cout(s) ist, ergibt dies maxcC(c) ≤ Bs. Natürlich muss ein Durchsatz θ θ ≤ maxcC(c) erfüllen. Gemäß der Gleichung (1), erreichen andererseits das Inhaltverteilungsverfahren und -system den Durchsatz θ = Bs. Folglich ist θ = maxcC(c) = Bs.
  • Nehmen wir nun Bs ≥ Bs1 + Bs2 an. Für jede Randkapazitäts-Funktion c muss die Summe von c(e) über alle Rand-eingebenden Knoten in T wenigstens das N1-fache der Übertragungskapazität C(c) sein. Dies ergibt das Folgende, wobei U = V-T-s die Gruppe der nicht inhaltsanfordernden Peer-Knoten anzeigt:
    Figure 00320001
  • Andererseits ergibt die Gleichung (1) (Bv = cout(v)):
    Figure 00330001
  • Folglich
  • Figure 00330002
  • Natürlich ist θ = maxcC(c), wobei N1θ ≤ N1maxcC(c) = N1C(c*), wobei c* eine optimierende Kapazitätsfunktion ist. Somit ist
    Figure 00330003
  • Der Beweis ist vollständig, wenn gezeigt werden kann, dass die Ungleichheit mit der Gleichheit hält. Das ist natürlich war, wenn U leer ist. Um dies zu zeigen, wenn U nicht leer ist, wird behauptet, dass für jedes u in U gilt:
    Figure 00330004
  • Anderenfalls würde jeder Stream durch u zu den N1 inhaltsanfordernden Peer-Knoten nicht ausreichend sein, um die Upload-Bandbreite Bu zu verbrauchen. Ein größerer Durchsatz könnte durch das Umverteilen einiger Kapazität von den Rändern zwischen s und T zu den Rändern zwischen s und U erreicht werden.
  • Korollar: In einem Szenario für den Datei-Download minimieren das Inhaltverteilungsverfahren und -system die maximale Download-Zeit, die von jedem inhaltsempfangenden Peer-Knoten erfahren wird. In einem Streaming-Medien-Szenario maximieren das Inhaltverteilungsverfahren und -system die minimale Qualität, die von jedem inhaltsempfangenden Peer-Knoten erfahren wird. Deshalb sind das Inhaltverteilungsverfahren und -system ideal in Situationen, in welchen eine verteilte Gruppe von Freunden wünscht, den downgeloadeten oder gestreamten Inhalt zur gleichen Zeit und mit der gleichen Qualität zu erfahren.
  • Durchsatz unter Download-Bandbreiten- oder Link-Bandbreiten-Randbedingungen
  • Die obige Erläuterung nimmt an, dass der einzige Engpass des Inhaltverteilungsverfahrens und -systems die Upload-Bandbreite der Peer-Knoten ist. In diesem Abschnitt wird eine kurze Erläuterung über den Durchsatz des Inhaltverteilungsverfahrens und -systems unter Link-Bandbreiten- oder Download-Bandbreiten-Randbedingungen vorgelegt.
  • Man betrachte einen Peer-Knoten mit der Upload-Bandbreite Bu i. Seine Link-Bandbreite zu dem inhaltsempfangenden Peer-Knoten j sei Bl ij, j = 0 ..., M – 1, wobei M die Anzahl der inhaltsempfangenden Peer-Knoten eine andere ist als sie selbst. Die Link-Bandbreite zwischen den Knoten i und j wird nicht der Engpass sein, so lang gilt: Bl ij ≥ Bu i/M
  • Wenn die obige Ungleichung nicht erfüllt ist, kann die Upload-Bandbreite des Knotens i nicht vollständig für das Inhaltverteilungsverfahren genutzt werden. Die effektive Upload-Bandbreite des Knotens i wird: Bu i' = MminBl
  • Diese effektive Upload-Bandbreite kann in der Gleichung (1) verwendet werden, um den neuen Durchsatz des Inhaltverteilungsverfahrens und -systems zu erhalten.
  • Sobald ein inhaltsempfangender Peer-Knoten weniger Download-Bandbreite als der Durchsatz aufweist, der in der Gleichung (1) vorgegeben ist (die nur auf der Upload-Bandbreite basiert), wird ein solcher Knoten ebenfalls zu einem Engpass des Inhaltverteilungsverfahrens und -systems. In einem solchen Szenario wird der gesamte Durchsatz die minimale Download-Bandbreite aller inhaltsempfangenden Peer-Knoten sein. Dies ist so, weil alle Knoten für das Beenden auf den langsamsten Knoten warten müssen, bevor sie die Lieferung fortsetzen können.
  • Eine alternative Strategie zu dieser Implementierung des Inhaltverteilungsverfahrens und -systems ist es, die langsamen Peer-Knoten zu veranlassen, bestimmte Inhaltsblöcke zu überspringen, so dass sie den Empfangsbetrieb der übrigen Peer-Knoten nicht verlangsamen werden. Das ermöglicht den Peer-Knoten, noch mit voller Geschwindigkeit fort zu fahren. In einem Datei-Download-Szenario können die langsamen Peer-Knoten in der Lage sein, den übersprungenen Inhalt zu empfangen, nachdem alle übrigen Knoten das Downloaden beendet haben. In einem Streaming-Medien-Szenario können die langsamen Peer-Knoten in der Lage sein, ihren Inhalt mit geringerer Qualität zu empfangen, wenn die schichtweise Mediencodierung verwendet wird. Im Vergleich zu diesem alternativen Ansatz maximiert die getestete Implementierung des Inhaltverteilungsverfahrens und -systems den Durchsatz von allgemeinen Informationen an alle inhaltsempfangenden Peer-Knoten. Es maximiert die minimale Qualität, die von jedem inhaltsempfangenden Peer-Knoten in einem Streaming-Medien-Szenario erfahren wird, oder minimiert die maximale Download-Zeit, die von jedem inhaltsempfangenden Peer-Knoten in einem Datei-Download-Szenario erfahren wird (zum Beispiel, wenn eine verteilte Gruppe von Freunden wünscht, den downgeloadeten oder gestreamten Inhalt zur gleichen Zeit und mit der gleichen Qualität zu erfahren). Wenn das kein Ziel ist, sondern wenn es eher erlaubt ist, schnelle Knoten zu haben, die einen größeren Durchsatz aufweisen als langsame Knoten, dann kann die alternative Implementierung wünschenswerter sein als die getestete Implementierung.
  • Die vorangehende Beschreibung der Erfindung wurde für die Zwecke der Darstellung und der Beschreibung vorgelegt. Sie beabsichtigt nicht, vollständig zu sein, oder die Erfindung auf die genaue Form zu beschränken, die offen gelegt wird. Viele Modifikationen und Variationen sind angesichts des oben Gelehrten möglich. Es ist beabsichtigt, dass der Anwendungsbereich der Erfindung nicht durch diese ausführliche Beschreibung der Erfindung beschränkt werden soll, sondern eher durch die hierzu beigefügten Ansprüche.

Claims (37)

  1. Ein Verfahren für das Verteilen von Inhalt an eine Mehrzahl von Knoten in einem Computernetzwerk (500), umfassend: Teilen des Inhaltes in eine Mehrzahl von Blöcken (610); Zuweisen eines Knotens zu jedem der Mehrzahl von Blöcken (620) im Verhältnis zu einer Kapazität des Knotens, so dass ein Knoten, der eine größere Kapazität hat, mehr Blöcken zugeordnet wird und ein Knoten, der eine kleinere Kapazität hat, weniger Blöcken zugeordnet wird; Versenden eines jeden von der Mehrzahl von Blöcken von einem Quellknoten (s) an einen zugeordneten Knoten für das Weiterleiten, falls der zugeordnete Knoten nicht der Quellknoten (s) ist; und Weiterleiten des Blockes zu dem zugeordneten Knoten an verbleibende inhaltsanfordernde Knoten (t1,2,3).
  2. Das Verfahren nach Anspruch 1, weiter umfassend Definieren der Kapazität des Knotens in Bezug auf eine Bandbreite des Knotens.
  3. Das Verfahren nach Anspruch 2, worin die Bandbreite de Hochladebandbreite des Knotens ist.
  4. Das Verfahren nach Anspruch 1, worin eine Größe einer jeden der Mehrzahl von Blöcken kleiner ist als eine Maximaldurchsatzeinheit MTIJ des Computernetzwerkes.
  5. Das Verfahren nach Anspruch 4, worin die Blockgröße des Inhalts ungefähr 1 Kilobyte ist.
  6. Das Verfahren nach Anspruch 1, worin eine Größe eines jeden der Mehrzahl von Blöcken ein Kompromiss ist aus der Verteilungsgranularität und dem erforderlichen Zusatzaufwand für die Identifizierung der Blöcke.
  7. Das Verfahren nach Anspruch 1, worin der zugewiesene Knoten ein inhaltsanfordernder Peerknoten (t1,2,3) ist, der eine Kopie des Inhalts anfordert.
  8. Das Verfahren nach Anspruch 1, worin der zugewiesene Knoten ein nicht inhaltsanfordernder Peerknoten (t4) ist, der keine Kopie des Inhaltes anfordert.
  9. Das Verfahren nach Anspruch 1, worin der zugewiesene Knoten ein Quellknoten (s) ist.
  10. Das Verfahren nach Anspruch 1, weiter umfassend Benutzen einer Bandbreitekontrollstrategie, die eine dynamische Weiterverteilung (630) von Blöcken ermöglicht, basierend auf Änderungen in der Kapazität des Knotens.
  11. Das Verfahren nach Anspruch 10, worin die Bandbreitenkontrollstrategie weiter umfasst, Verwenden einer Wiederverteilungsschlange zwischen jedem Paar von Knoten im Netzwerk.
  12. Das Verfahren nach Anspruch 11, weiter umfassend Konstruieren von Wiederverteilungsschlangen unter Benutzung eines Transportkontrollprotokolls TCP.
  13. Das Verfahren nach Anspruch 12, worin die Wiederverteilungsschlangen Puffer für TCP Senden und Empfangen sind.
  14. Das Verfahren nach Anspruch 11, weiter umfassend Konstruieren von Wiederverteilungsschlangen unter Benutzung von Anwendungspuffern, die auf einem Benützerdatagrammprotokoll UDP implementiert sind.
  15. Das Verfahren nach Anspruch 1, weiter umfassend Definieren eines Vorwärtslinks als eine Verbindung zwischen dem Quellknoten (s) und dem zugewiesenen Knoten, wobei die Inhaltsblöcke, die in der Verbindung geschickt werden, noch weiter verteilt werden müssen.
  16. Das Verfahren nach Anspruch 1, weiter umfassend Definieren eines Lieferlinks als eine Verbindung zwischen dem zugewiesenen Knoten und einem anderen inhaltsanfordernden Peerknoten (t1,2,3), wobei die Inhaltsblöcke, die in der Verbindung geschickt werden, nicht mehr weiter verteilt werden sollen.
  17. Das Verfahren nach Anspruch 1, worin das Computernetzwerk ein Peer-to-peer Netzwerk (500) ist.
  18. Ein computerimplementiertes Verfahren für das Liefern von Inhalt von einem Quellknoten (s) an eine Mehrzahl von inhaltsanfordernden Knoten (t1,2,3) in einem Peer-to-peer Netzwerk (500), umfassend: Aufteilen des zu liefernden Inhaltes in eine Mehrzahl von kleineren Inhaltsblöcken (610); Zuweisen eines Knotens zu jedem der Inhaltsblöcke für die Weiterverteilung (620), worin der zugewiesene Knoten ein nicht inhaltsanfordernder Peerknoten (t4) ist, der keinen Inhalt anfordert; Senden eines jeden der Inhaltsblöcke von dem Quellknoten (s) zu seinem zugewiesenen Knoten, falls der zugewiesene Knoten nicht der Quellknoten (s) ist; und Weiterverteilen der Inhaltsblöcke von dem zugewiesenen Knoten zu den übrigen inhaltsanfordernden Peerknoten (t1,2,3).
  19. Das computerimplementierte Verfahren nach Anspruch 18, weiter umfassend Verwenden von Wiederverteilungsschlangen (630) zwischen Knoten des Computernetzwerkes, um dynamische Änderungen im Computernetzwerk effektiv zu bewältigen.
  20. Das computerimplementierte Verfahren nach Anspruch 18, worin der zugewiesene Knoten ein inhaltsanfordernder Peerknoten (t1,2,3) ist.
  21. Das computerimplementierte Verfahren nach Anspruch 18, weiter umfassend Variieren einer Anzahl von Inhaltsblöcken, die dem Knoten zugewiesen sind, in so einer Weise, dass die Menge des Inhaltes, die von einem Knoten weiter verteilt wird, variabel ist.
  22. Das computerimplementierte Verfahren nach Anspruch 21, weiter umfassend Variieren der Anzahl der Inhaltsblöcke, die dem Knoten zugewiesen sind, basierend auf einer Kapazität des Knotens.
  23. Das computerimplementierte Verfahren nach Anspruch 22, weiter umfassend Definieren der Kapazität des Knotens in Bezug auf eine Hochladebandbreite des Knotens.
  24. Ein Verfahren für das Verteilen von Inhalt zwischen Knoten in einen Peer-to-peer Computernetzwerk (500) umfassend: Teilen des Inhaltes in eine Anzahl von kleineren Inhaltsblöcken (610); Zuweisen eines jeden der Inhaltsblöcke zu einem der Knoten zur Weiterleitung (620) so, dass die Zahl der zugewiesenen Inhaltsblöcke variiert wird, abhängig von der Hochladebandbreite des zugewiesenen Knotens; Verwenden von Wiederverteilungsschlangen zwischen den Knoten (630); und Wiederzuweisen der Inhaltsblöcke unter Benutzung der Wiederverteilungsschlangen so, dass jede Änderung in der Hochladebandbreite des zugewiesenen Knotens zu einer Änderung in der Anzahl der zugewiesenen Blöcke zu diesem Knoten zur Weiterverteilung führt.
  25. Das Verfahren nach Anspruch 24, worin die Wiederverteilungsschlangen Transportkontrollprotokoll, TCP, Puffer zum Senden und Empfangen sind.
  26. Das Verfahren nach Anspruch 24, weiter umfassend Generieren von Wiederverteilungsschlangen unter Benutzung von Anwendungspuffern, die auf einem Benutzerdatagrammprotokoll UDP implementiert sind.
  27. Das Verfahren nach Anspruch 24, weiter umfassend Definieren eines Vorwärtslinks als eine Verbindung zwischen Knoten, der Inhaltsblöcke hat, die noch weiter verteilt werden müssen.
  28. Das Verfahren nach Anspruch 27, weiter umfassend: Entfernung eines Inhaltblockes von einem hereinkommenden Vorwärtslink und ihn als den aktuellen Inhaltsblock definieren; und Kopieren des aktuellen Inhaltsblocks in auslaufende Lieferlinks aller inhaltsanfordernder Peerknoten (t1,2,3).
  29. Das Verfahren nach Anspruch 28, weiter umfassend Warten auf das Entfernen eines weiteren Inhaltsblockes von dem hereinkommenden Vorwärtslink, bis der aktuelle Inhaltsblock zu jedem der auslaufenden Lieferlinks kopiert worden ist.
  30. Das Verfahren nach Anspruch 27, weiter umfassend Definieren eines Lieferlinks als eine Verbindung zwischen Knoten, der Inhaltsblöcke hat, die nicht mehr weiter verteilt werden sollen.
  31. Das Verfahren nach Anspruch 30, weiter umfassend: Feststellen, ob ein ankommender Inhaltsblock gesendet worden ist, von einem aus: (a) einem inhaltsanfordernden Knoten (t1,2,3); (b) einem nicht inhaltsanfordernden Knoten (t4); und Entfernen des ankommenden Inhaltsblockes von dem Lieferlink, sobald der Block ankommt.
  32. Das Verfahren nach Anspruch 30, weiter umfassend: Feststellen, ob ein ankommender Inhaltsblock von einem Quellknoten (s) gesendet wurde; und Entfernen von ankommenden Inhaltsblöcken von einem Lieferlink nur dann, wenn eine Empfangspufferlänge von einem Vorwärtslink des Quellknotens (s) größer als ein Schwellenwert ist.
  33. Das Verfahren nach Anspruch 30, weiter umfassend: Feststellen, ob es Platz für einen Inhaltsblock in einem Vorwärtslink des Quellknotens (s) zu einem inhaltsanfordernden Knoten (t1,2,3) gibt; Platzieren eines Inhaltsblockes in einen Puffer, um ihn zu einem entsprechenden inhaltsanfordernden Knoten (t1,2,3) zu schicken; und Weiterverteilen des Inhaltsblockes an andere inhaltsanfordernde Peerknoten (t1,2,3) durch entsprechende Lieferlinks.
  34. Das Verfahren nach Anspruch 33, weiter umfassend: Feststellen, ob ein Platz für einen Inhaltsblock in dem Vorwärtslink von einem Quellknoten (s) zu dem inhaltsanfordernden Knoten (t1,2,3) zur Verfügung steht; Feststellen, ob Platz in Vorwärtslinks zu den nicht inhaltsanfordernden Peerknoten (t4) zur Verfügung steht; und falls Platz zur Verfügung steht, Platzieren des Inhaltsblockes in einen Puffer, um ihn an einen entsprechenden nicht inhaltsanfordernden Knoten (t4) zu senden; und Weiterverteilen des Inhaltsblockes an andere inhaltsanfordernde Peerknoten (t1,2,3) durch die entsprechenden Lieferlinks.
  35. Das Verfahren nach Anspruch 34, weiter umfassend: Feststellen, ob kein Platz für einen Inhaltsblock in dem Vorwärtslink von dem Quellknoten (s) zu dem inhaltsanfordernden und einem nicht inhaltsanfordernden Knoten (t1,2,3,4 ) zur Verfügung steht; Feststellen, ob Platz in allen Lieferlinks von dem Quellknoten (s) zu den inhaltsanfordernden Peerknoten (t1,2,3) zur Verfügung steht; und falls Platz zur Verfügung steht, Platzieren des Inhaltsblockes in Puffern aller Lieferlinks von dem Quellknoten (s) an alle inhaltsanfordernden Peerknoten (t1,2,3).
  36. Das Verfahren nach Anspruch 35, weiter umfassend: Feststellen, ob kein Platz für einen Inhaltsblock in dem Vorwärtslink von dem Quellknoten (s) zu dem inhaltsanfordernden und nicht inhaltsanfordernden Knoten (t1,2,3,4) zur Verfügung steht und ob kein Platz in irgendeinem der Lieferlinks von dem Quellknoten (s) zu einem inhaltsanfordernden Peerknoten (t1,2,3) zur Verfügung steht; und falls kein Platz zur Verfügung steht, Warten für eine kurze Weile und dann erneut versuchen.
  37. Ein computerlesbares Medium, das computerausführbare Instruktionen hat, um das computerimplementierte Verfahren aus den Ansprüchen 1 bis 36 durchzuführen.
DE602005001815T 2004-07-07 2005-06-30 Verfahren zur effizienten Mehrfachverbreitung von Inhalten in einem Peer-to-peer Netzwerk Active DE602005001815T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US887406 2004-07-07
US10/887,406 US7593333B2 (en) 2004-07-07 2004-07-07 Efficient one-to-many content distribution in a peer-to-peer computer network

Publications (2)

Publication Number Publication Date
DE602005001815D1 DE602005001815D1 (de) 2007-09-13
DE602005001815T2 true DE602005001815T2 (de) 2007-12-06

Family

ID=34940253

Family Applications (1)

Application Number Title Priority Date Filing Date
DE602005001815T Active DE602005001815T2 (de) 2004-07-07 2005-06-30 Verfahren zur effizienten Mehrfachverbreitung von Inhalten in einem Peer-to-peer Netzwerk

Country Status (7)

Country Link
US (1) US7593333B2 (de)
EP (1) EP1615403B1 (de)
JP (1) JP4738900B2 (de)
KR (1) KR101109246B1 (de)
CN (1) CN1719833B (de)
AT (1) ATE369007T1 (de)
DE (1) DE602005001815T2 (de)

Families Citing this family (128)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7408938B1 (en) * 2003-10-15 2008-08-05 Microsoft Coporation System and method for efficient broadcast of information over a network
US8194655B2 (en) * 2004-08-05 2012-06-05 Dust Networks, Inc. Digraph based mesh communication network
US8059629B1 (en) 2004-03-27 2011-11-15 Dust Networks, Inc. Digraph network timing synchronization
US7961664B1 (en) 2004-03-27 2011-06-14 Dust Networks, Inc. Digraph network subnetworks
US7818444B2 (en) 2004-04-30 2010-10-19 Move Networks, Inc. Apparatus, system, and method for multi-bitrate content streaming
US8868772B2 (en) 2004-04-30 2014-10-21 Echostar Technologies L.L.C. Apparatus, system, and method for adaptive-rate shifting of streaming content
US9549043B1 (en) 2004-07-20 2017-01-17 Conviva Inc. Allocating resources in a content delivery environment
US10862994B1 (en) 2006-11-15 2020-12-08 Conviva Inc. Facilitating client decisions
US11734393B2 (en) 2004-09-20 2023-08-22 Warner Bros. Entertainment Inc. Content distribution with renewable content protection
US20060064386A1 (en) * 2004-09-20 2006-03-23 Aaron Marking Media on demand via peering
US8046426B2 (en) * 2004-12-30 2011-10-25 Massachusetts Institute Of Technology Random linear coding approach to distributed data storage
US8102837B2 (en) * 2004-12-30 2012-01-24 Massachusetts Institute Of Technology Network coding approach to rapid information dissemination
US7633887B2 (en) * 2005-01-21 2009-12-15 Panwar Shivendra S On demand peer-to-peer video streaming with multiple description coding
US8683066B2 (en) 2007-08-06 2014-03-25 DISH Digital L.L.C. Apparatus, system, and method for multi-bitrate content streaming
US8370514B2 (en) 2005-04-28 2013-02-05 DISH Digital L.L.C. System and method of minimizing network bandwidth retrieved from an external network
US7539219B2 (en) * 2005-05-12 2009-05-26 Radioshack Corporation Method and apparatus for synchronization of digital multimedia packets
US20070076693A1 (en) * 2005-09-30 2007-04-05 Dilip Krishnaswamy Scheduling variable bit rate multimedia traffic over a multi-hop wireless network
DE102006014592A1 (de) * 2006-03-29 2007-10-04 Siemens Ag Verfahren zur Übertragung von Daten in einem Datennetz
US20070244585A1 (en) * 2006-04-17 2007-10-18 900Seconds, Inc. Automated administration of network-based contests
CN101351990B (zh) * 2006-04-21 2011-03-16 张永敏 实现定位播放的对等网络内容传输方法及装置
US20090172157A1 (en) * 2006-04-21 2009-07-02 Yongmin Zhang Method and Device for Content Transmission on P2P Network
WO2007127401A2 (en) * 2006-04-26 2007-11-08 Bittorrent, Inc. Peer-to-peer download and seed policy management
US7706260B2 (en) 2006-04-26 2010-04-27 Bittorrent, Inc. End-system dynamic rate limiting of background traffic
DE602006017040D1 (de) * 2006-05-19 2010-11-04 Microsoft Corp Inhaltsverwaltung in Peer-to-peer Datenverteilungswolken
US8605721B1 (en) * 2006-05-25 2013-12-10 The Hong Kong University Of Science And Technology Scalable island multicast for peer-to-peer media delivery
US7945689B2 (en) 2007-03-23 2011-05-17 Sony Corporation Method and apparatus for transferring files to clients using a peer-to-peer file transfer model and a client-server transfer model
JP5140666B2 (ja) * 2006-06-27 2013-02-06 トムソン ライセンシング パフォーマンスを考慮した、ピアツーピア・コンテンツ・オンデマンド
JP4680860B2 (ja) * 2006-09-29 2011-05-11 富士通株式会社 データ通信方法
US20080091740A1 (en) 2006-10-12 2008-04-17 France Telecom Method for managing a partitioned database in a communication network
US8874725B1 (en) 2006-11-15 2014-10-28 Conviva Inc. Monitoring the performance of a content player
US9264780B1 (en) 2006-11-15 2016-02-16 Conviva Inc. Managing synchronized data requests in a content delivery network
US8751605B1 (en) * 2006-11-15 2014-06-10 Conviva Inc. Accounting for network traffic
US8566436B1 (en) 2006-11-15 2013-10-22 Conviva Inc. Data client
KR100947317B1 (ko) * 2006-11-20 2010-03-16 주식회사 알티캐스트 주문형 콘텐츠 시스템의 효율적인 운영방법
JP4830025B2 (ja) * 2006-11-29 2011-12-07 トムソン ライセンシング 貢献認識(contributionaware)ピアツーピアライブストリーミングサービス
US9094416B2 (en) * 2006-11-29 2015-07-28 Thomson Licensing Contribution aware peer-to-peer live streaming service
ES2360647T3 (es) * 2006-12-08 2011-06-07 Deutsche Telekom Ag Método y sistema para la diseminación del contenido igual a igual.
US7903652B2 (en) * 2006-12-14 2011-03-08 At&T Intellectual Property I, L.P. System and method for peer to peer video streaming
EP1936497A3 (de) * 2006-12-20 2009-04-08 NCR Corporation Automatisierte weiträumige Softwareverteilung mit reduzierten Anforderungen an die Netzwerkbandbreite
KR101112446B1 (ko) * 2006-12-23 2012-02-20 주식회사 엘지화학 과충전 안전성이 향상된 이차전지
JP4809256B2 (ja) * 2007-01-31 2011-11-09 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. データストリーミング方法
US20080201752A1 (en) * 2007-02-16 2008-08-21 At&T Knowledge Ventures, L.P. Multicast data packet recovery system
CN101267379B (zh) * 2007-03-14 2011-07-27 中国电信股份有限公司 基于p2p和cdn的统一内容承载和调度系统
JP5319072B2 (ja) * 2007-03-16 2013-10-16 ソフトバンクBb株式会社 データ転送システム及びデータ転送方法
WO2008115221A2 (en) * 2007-03-20 2008-09-25 Thomson Licensing Hierarchically clustered p2p streaming system
CN101026543A (zh) * 2007-03-28 2007-08-29 华为技术有限公司 点到点p2p内容共享的方法及系统
WO2008120366A1 (ja) * 2007-03-29 2008-10-09 Pioneer Corporation コンテンツ配信装置、コンテンツ配信方法、及びコンテンツ配信プログラム
WO2008120353A1 (ja) * 2007-03-29 2008-10-09 Pioneer Corporation コンテンツ配信装置、コンテンツ配信方法、及びコンテンツ配信プログラム
US8024723B2 (en) * 2007-05-18 2011-09-20 Samsung Electronics Co., Ltd. System and method for peer-to-peer datacasting in a broadcasting network
US20080294788A1 (en) * 2007-05-21 2008-11-27 Hong Kong Applied Science And Technology Research Institute Co., Ltd. Systems and methods for p2p streaming
US8040863B2 (en) * 2007-05-31 2011-10-18 International Business Machines Corporation Demand pull and supply push communication methodologies
US7979311B2 (en) * 2007-05-31 2011-07-12 International Business Machines Corporation Payment transfer strategies for bandwidth sharing in ad hoc networks
US10623998B2 (en) * 2007-05-31 2020-04-14 International Business Machines Corporation Price offerings for bandwidth-sharing ad hoc networks
US8520535B2 (en) 2007-05-31 2013-08-27 International Business Machines Corporation Optimization process and system for a heterogeneous ad hoc Network
US7843861B2 (en) * 2007-05-31 2010-11-30 International Business Machines Corporation Coalition formation and service provisioning of bandwidth sharing AD HOC networks
US7898993B2 (en) * 2007-05-31 2011-03-01 International Business Machines Corporation Efficiency and resiliency enhancements for transition states in ad hoc networks
US7873019B2 (en) * 2007-05-31 2011-01-18 International Business Machines Corporation Systems and methods for establishing gateway bandwidth sharing ad-hoc networks
US7860081B2 (en) * 2007-05-31 2010-12-28 International Business Machines Corporation Optimization process and system for multiplexed gateway architecture
US8320414B2 (en) 2007-05-31 2012-11-27 International Business Machines Corporation Formation and rearrangement of lender devices that perform multiplexing functions
US8249984B2 (en) * 2007-05-31 2012-08-21 International Business Machines Corporation System and method for fair-sharing in bandwidth sharing ad-hoc networks
US8620784B2 (en) 2007-05-31 2013-12-31 International Business Machines Corporation Formation and rearrangement of ad hoc networks
US10419360B2 (en) 2007-05-31 2019-09-17 International Business Machines Corporation Market-driven variable price offerings for bandwidth-sharing ad hoc networks
US7817623B2 (en) * 2007-05-31 2010-10-19 International Business Machines Corporation Optimization process and system for non-multiplexed peer-to-peer architecture
GB2450473A (en) 2007-06-04 2008-12-31 Sony Comp Entertainment Europe A Server in a Peer to Peer system selecting and notifying a device that it is to become a member of a peer group
US9578288B2 (en) * 2007-06-08 2017-02-21 At&T Intellectual Property I, L.P. Peer-to-peer distributed storage for internet protocol television
CN101345628B (zh) * 2007-07-13 2011-06-22 中兴通讯股份有限公司 源节点选择方法
WO2009036461A2 (en) * 2007-09-13 2009-03-19 Lightspeed Audio Labs, Inc. System and method for streamed-media distribution using a multicast, peer-to-peer network
US20090122766A1 (en) * 2007-10-01 2009-05-14 Hughes Timothy J Nested weighted round robin queuing
US7636789B2 (en) * 2007-11-27 2009-12-22 Microsoft Corporation Rate-controllable peer-to-peer data stream routing
CN101933308A (zh) * 2007-12-03 2010-12-29 维洛希克斯有限公司 数字数据的分发的方法和装置
JP4864868B2 (ja) 2007-12-27 2012-02-01 富士通株式会社 データ配信システム
TWI342715B (en) * 2007-12-28 2011-05-21 Ind Tech Res Inst System and method for multi-participant conference without multipoint conferencing unit
US8260952B2 (en) * 2008-01-31 2012-09-04 Microsoft Corporation Multi-rate peer-assisted data streaming
US9037657B2 (en) 2008-05-23 2015-05-19 The Trustees Of Columbia University In The City Of New York Systems and methods for peer-to-peer bandwidth allocation
EP2294820A1 (de) * 2008-05-28 2011-03-16 Thomson Licensing Hierarchisch geklustertes mehrkopf-peer-to-peer-live-streaming-system
JP4982434B2 (ja) * 2008-06-11 2012-07-25 Kddi株式会社 通信システムおよび復号化装置
CN101291300B (zh) * 2008-06-12 2011-04-20 华为技术有限公司 消息业务中文件传输的实现方法、装置和用户设备
JP5223480B2 (ja) * 2008-06-13 2013-06-26 富士通株式会社 コンテンツ配信方法及び通信端末装置
US8594089B2 (en) 2008-09-30 2013-11-26 France Telecom Method of broadcasting data by a multicast source with broadcasting of an identifier of the broadcasting strategy in a multicast signalling channel
US8650301B2 (en) 2008-10-02 2014-02-11 Ray-V Technologies, Ltd. Adaptive data rate streaming in a peer-to-peer network delivering video content
US7996546B2 (en) * 2008-10-02 2011-08-09 Ray-V Technologies, Ltd. Dynamic allocation of a quota of consumer nodes connecting to a resource node of a peer-to-peer network
US7738406B2 (en) * 2008-10-08 2010-06-15 Microsoft Corporation Models for routing tree selection in peer-to-peer communications
US7848355B2 (en) * 2008-10-30 2010-12-07 International Business Machines Corporation Resource allocation in peer-to-peer streaming
US8402494B1 (en) 2009-03-23 2013-03-19 Conviva Inc. Switching content
JP2010239212A (ja) * 2009-03-30 2010-10-21 Toshiba Corp 通信装置
JP5233799B2 (ja) * 2009-03-31 2013-07-10 ブラザー工業株式会社 コンテンツ配信システム、ノード装置、コンテンツ配信方法及びコンテンツ取得処理プログラム
EP2428021A4 (de) * 2009-05-05 2014-09-17 Ericsson Telefon Ab L M P2p für mobilanbieter
US8326992B2 (en) * 2009-05-27 2012-12-04 Ray-V Technologies, Ltd. Controlling the provision of resources for streaming of video swarms in a peer-to-peer network
US11064023B2 (en) 2009-05-27 2021-07-13 Verizon Media Inc. Method for actively sharing available bandwidth to consumer nodes in a peer-to-peer network for delivery of video streams
US8750103B2 (en) * 2009-06-15 2014-06-10 Panasonic Corporation Application layer multicast (ALM) tree constructing apparatus, ALM tree constructing method, program, and integrated circuit
CN101938406B (zh) * 2009-07-02 2012-07-04 华为技术有限公司 微波多通道报文发送方法和装置及传送系统
US9100288B1 (en) 2009-07-20 2015-08-04 Conviva Inc. Augmenting the functionality of a content player
CN102055655A (zh) * 2009-11-06 2011-05-11 中兴通讯股份有限公司 一种结构化对等网络中消息的广播系统及方法
US9510029B2 (en) 2010-02-11 2016-11-29 Echostar Advanced Technologies L.L.C. Systems and methods to provide trick play during streaming playback
KR101089562B1 (ko) * 2010-04-27 2011-12-05 주식회사 나우콤 고화질 미디어 방송을 위한 피투피 라이브 스트리밍 시스템 및 방법
US8824470B2 (en) * 2010-06-02 2014-09-02 Microsoft Corporation Multiparty real time content delivery
US20120011200A1 (en) * 2010-07-06 2012-01-12 Roxbeam Media Network Corporation Method and apparatus for data storage in a peer-to-peer network
US9444876B2 (en) 2010-11-08 2016-09-13 Microsoft Technology Licensing, Llc Content distribution system
US9571571B2 (en) 2011-02-28 2017-02-14 Bittorrent, Inc. Peer-to-peer live streaming
KR102029326B1 (ko) 2011-02-28 2019-11-29 비트토렌트, 인크. 피어-투-피어 라이브 스트리밍
US8745122B2 (en) * 2011-06-14 2014-06-03 At&T Intellectual Property I, L.P. System and method for providing an adjunct device in a content delivery network
US8443086B2 (en) 2011-06-22 2013-05-14 National Chiao Tung University Decentralized structured peer-to-peer network and load balancing methods thereof
US9680929B2 (en) * 2011-06-24 2017-06-13 Facebook, Inc. Concurrently uploading multimedia objects and associating metadata with the multimedia objects
US9160697B2 (en) * 2012-01-01 2015-10-13 Qualcomm Incorporated Data delivery optimization
US10148716B1 (en) 2012-04-09 2018-12-04 Conviva Inc. Dynamic generation of video manifest files
US8948081B2 (en) 2012-04-13 2015-02-03 Intel Corporation Device, system and method of multiple-stream wireless communication
US8745267B2 (en) * 2012-08-19 2014-06-03 Box, Inc. Enhancement of upload and/or download performance based on client and/or server feedback information
CN102869003A (zh) * 2012-08-28 2013-01-09 中兴通讯股份有限公司 一种异构网络下业务内容分发的方法、业务管理平台
US9246965B1 (en) 2012-09-05 2016-01-26 Conviva Inc. Source assignment based on network partitioning
US10182096B1 (en) 2012-09-05 2019-01-15 Conviva Inc. Virtual resource locator
CN102970179B (zh) * 2012-11-01 2015-04-15 合一网络技术(北京)有限公司 一种基于点对点数据传输的媒体播放器测试方法及系统
US9363303B2 (en) 2013-03-15 2016-06-07 Microsoft Technology Licensing, Llc Network routing modifications for distribution of data
KR102240526B1 (ko) * 2013-12-11 2021-04-16 삼성전자주식회사 전자 장치의 컨텐츠 다운로드 방법 및 그 전자 장치
EP3085057B1 (de) * 2013-12-19 2017-05-17 Hive Streaming AB Verteilung von inhaltsdaten auf vorrichtungen mit beschränkten betriebsmitteln in einem segment eines p2p-netzwerks
US9967336B2 (en) 2013-12-19 2018-05-08 Hive Streaming Ab Distributing content data to resource constrained devices in a segment of a P2P network
US10116740B2 (en) 2013-12-27 2018-10-30 Microsoft Technology Licensing, Llc Peer-to-peer network prioritizing propagation of objects through the network
JP6131907B2 (ja) * 2014-04-24 2017-05-24 カシオ計算機株式会社 分散データベース、データ共有方法、プログラム、装置
CN104320627B (zh) * 2014-11-10 2017-12-12 武汉市中心医院 一种医院病房视频监视的方法以及相关应用服务系统
US10178043B1 (en) 2014-12-08 2019-01-08 Conviva Inc. Dynamic bitrate range selection in the cloud for optimized video streaming
US10305955B1 (en) 2014-12-08 2019-05-28 Conviva Inc. Streaming decision in the cloud
US20180062935A1 (en) * 2016-08-25 2018-03-01 Futurewei Technologies, Inc. Hybrid approach with classification for name resolution and producer selection in icn
US10922646B1 (en) * 2017-09-26 2021-02-16 Amazon Technologies, Inc. Multi-echelon inventory planning under dynamic fulfillment policies
CN110519553B (zh) * 2018-05-22 2021-02-26 杭州海康威视数字技术股份有限公司 视频流转发控制方法、装置、电子设备及可读存储介质
US11019123B2 (en) 2018-06-22 2021-05-25 International Business Machines Corporation Multi-bitrate component sharding
CN109347968B (zh) * 2018-11-07 2021-09-24 网宿科技股份有限公司 一种下载资源文件的数据块的方法、设备和系统
CN111130814B (zh) * 2019-12-11 2021-05-18 深圳市高德信通信股份有限公司 一种基于用户需求的网络广播系统
US11102272B2 (en) * 2019-12-19 2021-08-24 Wangsu Science and Technology Co., Ltd. Method and device for downloading resource file
CN112100414B (zh) * 2020-09-11 2024-02-23 深圳力维智联技术有限公司 数据处理方法、装置、系统与计算机可读存储介质

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1168744A (ja) 1997-08-26 1999-03-09 P I Ii:Kk 情報配信システムの制御方法および情報配信システム
US6970939B2 (en) * 2000-10-26 2005-11-29 Intel Corporation Method and apparatus for large payload distribution in a network
US20020085493A1 (en) * 2000-12-19 2002-07-04 Rick Pekkala Method and apparatus for over-advertising infiniband buffering resources
US7305697B2 (en) * 2001-02-02 2007-12-04 Opentv, Inc. Service gateway for interactive television
US20020162109A1 (en) * 2001-04-26 2002-10-31 Koninklijke Philips Electronics N.V. Distributed storage on a P2P network architecture
US7117242B2 (en) * 2001-06-20 2006-10-03 Hewlett-Packard Development Company, L.P. System and method for workload-aware request distribution in cluster-based network servers
US7088684B2 (en) * 2001-07-16 2006-08-08 International Business Machines Corporation Methods and arrangements for dynamically modifying subsource address multicast data distribution trees
TWI265697B (en) * 2002-06-06 2006-11-01 Ibm Digital contents distribution system, digital contents distribution method, computer readable recording medium storing the program therein, and server and client therefor
JP2004070712A (ja) * 2002-08-07 2004-03-04 Nippon Telegr & Teleph Corp <Ntt> データ配信方法,データ配信システム,分割配信データ受信方法,分割配信データ受信装置および分割配信データ受信プログラム
JP2004080145A (ja) * 2002-08-12 2004-03-11 Canon Inc 映像サーバシステム及びその映像再生方法
KR20020079677A (ko) * 2002-09-14 2002-10-19 김정훈 접속단절의 내성을 가진 상호작용 이진 전송구조를 이용한 분산처리 시스템
US20050086469A1 (en) * 2003-10-17 2005-04-21 Microsoft Corporation Scalable, fault tolerant notification method

Also Published As

Publication number Publication date
US7593333B2 (en) 2009-09-22
ATE369007T1 (de) 2007-08-15
KR20060048144A (ko) 2006-05-18
EP1615403A1 (de) 2006-01-11
JP2006025408A (ja) 2006-01-26
JP4738900B2 (ja) 2011-08-03
US20060007947A1 (en) 2006-01-12
KR101109246B1 (ko) 2012-01-30
EP1615403B1 (de) 2007-08-01
DE602005001815D1 (de) 2007-09-13
CN1719833B (zh) 2011-11-02
CN1719833A (zh) 2006-01-11

Similar Documents

Publication Publication Date Title
DE602005001815T2 (de) Verfahren zur effizienten Mehrfachverbreitung von Inhalten in einem Peer-to-peer Netzwerk
DE60114097T2 (de) Verfahren und System zur Verbesserung der Netzleistungsfähigkeit unter Verwendung eines leistungssteigernden Proxies
DE602005001883T2 (de) Überlagerte Daten, Selbstorganisierte überlagerte Metadaten, und Mehrfachsendung auf Anwendungsebene
DE69930992T2 (de) Verfahren und Rechnerprogrammprodukt zum effizienten und sicheren Senden von kleinen Datennachrichten von einem Sender zu einer grossen Anzahl von Empfangssystemen
DE60029879T2 (de) System zur mehrschichtigen Bereitstellung in Computernetzwerken
DE69832247T2 (de) Auf einem verteilten Internet- Protokollen basierte Echtzeit- Multimedia- Datenströmungs- Architektur
DE60214823T2 (de) Verfahren und System für eine verteilte Multicastcachetechnik
DE69931215T2 (de) Verfahren und Rechnerprogrammprodukt zum effizienten und sicheren Senden von kleinen Datennachrichten von einem Sender zu einer grossen Anzahl von Empfangssystemen
DE112013000398B4 (de) Multisprung-Fehlerbehebung
DE60023019T2 (de) Verfahren und system zur ablösung oder regeneration von quittierungspaketen in adsl kommunikationen
DE69935554T2 (de) Verfahren und Rechnerprogrammprodukt zum effizienten und zuverlässigen Übertragen von kleinen Datennachrichten von einem Sendesystem zu einer grossen Anzahl von Empfangssystemen
DE602004008099T2 (de) Verfahren, system und artikel zur dynamischen echtzeit-stream-aggregation in einem netzwerk
DE69834763T2 (de) Verfahren zur Unterstützung von verbindungsindividuellen Warteschlangen für rückgekoppelte Verkehrssteuerung
DE60117957T2 (de) Verfahren, System und Rechnerprogrammprodukt zur Bandbreitenzuteilung in einem System mit Mehrfachzugriff
DE60108166T2 (de) Untergruppen-multicasting in einem kommunikationsnetz
DE69730392T2 (de) Verbindungsmatrix basierte Multikosten-Leitweglengkung
DE60222656T2 (de) Vorrichtung und verfahren für effizientes multicasting von datenpaketen
DE602005000779T2 (de) Kommunikationsvorrichtung and Verfahren um Musiksoundkontrolldaten über das Internet zu erhalten und zu übertragen.
DE112006002644T5 (de) Mediendatenverarbeitung unter Verwendung von charakteristischen Elementen für Streaming- und Steuerprozesse
DE102017122738A1 (de) Virtueller Router mit dynamischer Flussauslagerungsfähigkeit
DE602004012660T2 (de) System und Verfahren für einen nachrichtenorientierten anpassungsfähigen Datentransport
DE60206157T2 (de) Datenkommunikationsverfahren, datenkommunikationssystem und programm
DE60208955T2 (de) System zur Bandbreitegewährleistung, Relaisvorrichtung und Netzwerkmanagement-Server
DE60303384T2 (de) Lastausgleich in datennetzwerken
DE60315496T2 (de) Parallelzugriff auf Daten über ein Paketnetzwerk

Legal Events

Date Code Title Description
8364 No opposition during term of opposition