-
Ein
Teil der Offenbarung dieses Patentdokuments enthält Material (Code-Listen und
Meldungslisten), für
die ein Urheberrechtsschutz beansprucht wird. Der Urheberrechtseigentümer hat
keine Einwände
gegen eine Telefaxreproduktion des Patentdokuments oder der Patentoffenbarung,
wie sie in der Akte oder den Aufzeichnungen des US Patent and Trademark
Office erscheint, durch eine Person, behält sich aber ansonsten alle
Rechte vor. Copyright 2001 OpenTV Inc.
-
Hintergrund der Erfindung
-
Bereich der Erfindung
-
Die
vorliegende Erfindung betrifft den Bereich Kommunikationen in der
interaktiven Fernsehumgebung und betrifft insbesondere ein Verfahren und
eine Vorrichtung zum Bereitstellen eines generischen Meta-Sprachen-
und Digitalfernseh-Anwendungsprotokolls
für interaktives
Fernsehen.
-
Zusammenfassung der verwandten
Technik
-
Interaktive
Fernsehsysteme können
zum Bereitstellen einer breiten Vielfalt an Diensten für Zuschauer
verwendet werden. Interaktive Fernsehsysteme können typische Videoprogrammströme, interaktive
Fernsehanwendungen, Text und Graphikbilder, Webseiten und andere
Informationstypen liefern. Interaktive Fernsehsysteme können auch
Zuschaueraktionen oder -antworten registrieren und können für Zwecke
wie Marketing, Unterhaltung und Ausbildung verwendet werden. Benutzer
oder Zuschauer können
mit den Systemen durch Bestellen von angepriesenen Produkten oder
Diensten, Antreten in Wettbewerben in einer Spieleshow, Anfordern
spezieller Informationen über
bestimmte Programme oder Navigieren durch Informationsseiten interagieren.
-
Typischerweise
erzeugt ein Rundfunkdiensteanbieter (Broadcast Service Provider)
oder Netzwerkbetreiber ein interaktives Fernsehsignal für die Übertragung
zum Fernseher eines Zuschauers. Das interaktive Fernsehsignal kann
einen interaktiven Teil beinhalten, der Applikationscode oder Steuerinformationen
umfasst, sowie einen Audio/Video-Teil, der ein Fernsehprogramm oder
andere Informationsanzeigen umfasst. Der Broadcast Service Provider kombiniert
den Audio/Video-(A/V)- und den interaktiven Teil zu einem einzelnen
Signal für
die Übertragung
zu einem mit dem Fernseher des Benutzers verbundenen Empfänger. Das
Signal wird im Allgemeinen vor dem Senden komprimiert und durch
typische Broadcast-Kanäle
wie Kabelfernseh-(CATV)-Leitungen
oder direkte Satellitenübertragungssysteme übertragen.
-
Die
interaktive Funktionalität
des Fernsehers wird typischerweise durch eine am Fernseher angeschlossene
Set-Top-Box (STB) gesteuert. Die STB empfängt ein vom Broadcast Service
Provider gesendetes Rundfunksignal, trennt den interaktiven Teil des
Signals vom A/V-Teil des Signals ab und dekomprimiert die jeweiligen
Teile des Signals. Die STB verwendet die interaktiven Informationen
z.B. zum Ausführen
einer Applikation, während
die A/V-Informationen zum Fernseher gesendet werden. Die STB kann die
A/V-Informationen mit interaktiven, von der interaktiven Applikation
erzeugten Graphik- oder Audiosignalen vor dem Senden der Informationen
zum Fernseher kombinieren. Die interaktiven Graphik- und Audiosignale
können
dem Zuschauer zusätzliche
Informationen bieten oder den Zuschauer zu einer Eingabe auffordern.
Die STB kann dem Broadcast Service Provider über eine Modemverbindung oder
ein Kabel Benutzereingaben oder andere Informationen zuführen.
-
Im
Einklang mit ihrem Summierungscharakter bieten interaktive Fernsehsysteme
Inhalt in verschiedenen Inhaltsformen und Kommunikationsprotokollen,
die von der/dem STB/Client verstanden und angezeigt werden müssen, die/der
die Informationen vom Broadcast Service Provider/Netzwerkbetreiber empfängt. Der
Client ist typischerweise eine STB mit einem Prozessor, der begrenzte
Verarbeitungsleistung besitzt. Die Umsetzung der verschiedenen Inhalte
und Protokolle liegt jenseits der begrenzten Verarbeitungskapazität des typischen
STB-Prozessors. Somit besteht Bedarf an einem einfachen Kommunikationsprotokoll,
das vom Client/STB-Prozessor leicht verstanden und in den verschiedenen
von Diensteanbietern verwendeten Protokollen übermittelt werden kann.
-
Zusammenfassung
der Erfindung
-
Gemäß einem
ersten Aspekt der Erfindung wird ein Verfahren zum Bereitstellen
von Kommunikationen in einem interaktiven Fernsehsystem bereitgestellt,
das Folgendes umfasst: Empfangen einer ersten, an einen Applikationsserver
gerichteten Meldung an einer Service-Plattform, wobei die erste
Meldung von einem Client-Gerät
empfangen wird und eine Benutzerkennung beinhaltet; gekennzeichnet durch:
Mappen der empfangenen Benutzerkennung in eine Session-Kennung;
und Übertragen
einer zweiten Meldung zum Applikationsserver, die der ersten Meldung
entspricht, wobei die zweite Meldung die Session-Kennung enthält und die
Benutzerkennung nicht enthält.
-
Gemäß einem
zweiten Aspekt der Erfindung wird eine Vorrichtung zum Erleichtern
der Kommunikation in einem interaktiven Fernsehsystem bereitgestellt,
wobei die genannte Vorrichtung Folgendes umfasst: ein Mittel, das
für die
Kommunikation mit einem Client-Gerät über eine erste Kommunikationsverbindung
konfiguriert ist; ein Mittel, das für die Kommunikation mit einem
Applikationsserver durch eine zweite Kommunikationsverbindung konfiguriert
ist; und eine Service-Plattform,
die zum Empfangen einer ersten Meldung konfiguriert ist, die eine
Benutzerkennung vom Client-Gerät
beinhaltet, dadurch gekennzeichnet, dass die genannte Service-Plattform konfiguriert
ist zum: Mappen der empfangenen Benutzerkennung in eine Session-Kennung;
und Übertragen
einer zweiten Meldung zum Applikationsserver, wobei die genannte
zweite Meldung der ersten Meldung entspricht, wobei die zweite Meldung
die Session-Kennung enthält
und die Benutzerkennung nicht enthält.
-
Gemäß einem
dritten Aspekt der vorliegenden Erfindung wird ein rechnerlesbares
Medium bereitgestellt, das Befehle enthält, die, wenn sie auf einem
verteilten Computersystem ausgeführt
werden, ein verteiltes Computersystem zu Folgendem veranlassen: Übertragen
einer an einen Applikationsserver gerichteten ersten Meldung von
einem Client-Gerät, wobei
die genannte erste Meldung eine Benutzerkennung beinhaltet; dadurch
gekennzeichnet, dass die Befehle, wenn sie ausgeführt werden,
das verteilte Computersystem zu Folgendem veranlassen: Empfangen
der ersten Meldung an einer Service-Plattform, wobei die genannte
Service-Plattform: die empfangene Benutzerkennung in eine Session-Kennung
mappt, und eine zweite Meldung überträgt, die
der ersten Meldung entspricht, wobei die zweite Meldung die Session-Kennung
enthält
und die Benutzerkennung nicht enthält, Empfangen der zweiten Meldung
an einem Applikationsserver.
-
Die
vorliegende Erfindung addressiert die erörterten Bedürfnisse der interaktiven Fernsehumgebung.
Die vorliegende Erfindung erfüllt
das seit langem empfundene Bedürfnis,
ein einfaches Inhalt- und Kommunikationsprotokoll bereitzustellen,
das von einem STB-Prozessor leicht gehandhabt werden kann und komplexe
Kommunikationen mit einer SP und Diensteanbietern ermöglicht.
Die nachfolgende Erörterung
verwendet zwar das Beispiel eines/einer Client/STB, aber die vorliegende
Erfindung erstreckt sich auf alle Client-Geräte wie Digital Assistants,
Zellulartelefone, Taschen-PCs oder jeden anderen Typ von elektronischem
Gerät,
das ein elektronisches Signal empfangen kann. Die vorliegende Erfindung
befindet sich in einer Service-Plattform (SP) oder einem Server.
Die SP ermöglicht
es einem Netzwerkbetreiber, der Fernsehsignale zu seinen Subscriber-Clients sendet,
Geschäfts-,
Transport- und Kommunikationsfunktionen zu erzeugen und bereitzustellen,
die eine Kommunikation zwischen Diensteanbietern und dem Client-
oder STB-Zuschauer ermöglichen.
-
Die
interaktive Fernsehumgebung muss Probleme handhaben und lösen, die
für interaktives Fernsehen
einzigartig sind, wie z.B. den intermittierenden Rückkehrpfad
vom Client zur SP. Das heißt, das
Client-Gerät
ist nicht immer mit der Kommunikationslink verbunden, z.B. wenn
die STB abgeschaltet ist. Somit gibt es nicht immer einen aktiven
Rückkehrpfad
vom Client. Die vorliegende Erfindung bietet eine Speicher- und
Weiterleitungsfunktion, um dieses intermittierende Rückkehrpfadproblem
abzumildern.
-
Bandbreiten-
und Bearbeitungsbegrenzungen und Kommunikationskomplexitäten sind
in der interaktiven Fernsehumgebung ebenfalls problematisch. Einerseits
bietet der Netzwerkbetreiber typischerweise einen Broadcast-Kanal
mit einer relativ großen
Datenübertragungskapazität (typischerweise ein
Satellit mit Antenne) zum Senden von Daten und Programmierungssignalen
zum Client. Andererseits hat der Client-Rückkehrpfad
eine relativ niedrige Datenübertragungskapazität (typischerweise
ein Satellit mit Antenne) zum Senden von Daten und Programmierungssignalen
zum Client. Andererseits hat der Client-Rückkehrpfad eine relativ niedrige
Datenübertragungskapazität, gewöhnlich im
STB-Szenario; der Rückkehrpfad
ist eine Telefonleitung. Selbst wenn der Rückkehrpfad typischerweise eine
größere Bandbreite
hat, besitzen die STBs/Clients typischerweise ein langsames Modem
zum Senden von Daten über
den Rückkehrpfad.
Diese und andere Belange werden von der vorliegenden Erfindung adressiert.
-
Kurzbeschreibung
der Zeichnungen
-
Weitere
Aufgaben und Vorteile der Erfindung gehen aus dem Studium der nachfolgenden
ausführlichen
Beschreibung und nach Bezugnahme auf die Begleitzeichnungen hervor.
Dabei zeigt:
-
1 ein
allgemeines Architekturschema für eine
bevorzugte Ausgestaltung einer Service-Plattform, in der sich die
vorliegende Erfindung befindet;
-
2 eine
Architektur für
die Service-Plattform, in der sich die vorliegende Erfindung befindet;
-
3 ein
Beispiel für
ein bevorzugtes Application-Backend-Framework der vorliegenden Erfindung;
-
4 ein
Beispiel für
eine bevorzugte DATP STB Stack Architekur der vorliegenden Erfindung;
-
5 das
SGW (Service Gateway) DATP (Digital TV Application Transport Protocol)
der vorliegenden Erfindung als Teil des DAP (Digital TV Application
Protocol), das zum Standardisieren von Rückkanalkommunikationen zwischen
Applikationsservern und dem SGW verwendet wird;
-
6 DAML
und DATP als Teil von DAP;
-
7 ein
Beispiel für
eine bevorzugte Architektur für
das SGW der vorliegenden Erfindung;
-
8 das
Rückweisungsgleitfenster
der vorliegenden Erfindung;
-
9 eine
Beispiel für
eine DATP-Session zwischen einer STB und einem Applikationsserver;
-
10–13 Statusmaschinen
für DATP;
-
14 eine
Architektur für
Inhaltsumsetzung, H20; und
-
15–19 Meldungsszenarios
zwischen Client/STB, SGW, H2O und Applikationsdiensteanbietern.
-
Die
Erfindung kann zwar Gegenstand verschiedener Modifikationen und
alternativer Formen sein, aber spezielle Ausgestaltungen davon werden beispielhaft
in den Zeichnungen dargestellt und hierin ausführlich beschrieben. Es ist
jedoch zu verstehen, dass die Zeichnungen und deren ausführliche Beschreibung
die Erfindung nicht auf die besondere offenbarte Form begrenzen
sollen, sondern die Erfindung soll im Gegenteil alle Modifikationen, Äquivalente
und Alternativen abdecken, die im Rahmen der vorliegenden Erfindung
wie in den beiliegenden Ansprüchen
definiert liegen.
-
Ausführliche Beschreibung einer
bevorzugten Ausgestaltung
-
Überblick
-
Die
vorliegende Erfindung, ein Digital Television Application Protocol
(DAP/DATP), befindet sich in einer Service-Plattform (SP) und interagiert
mit dem Inhaltstranscoder H2O und einem Service Gateway (SGW). In
einer typischen interaktiven Fernsehumgebung gibt es eine Vielzahl
von Clients, typischerweise STBs, die mit einer Vielzahl von Applikationsservern
kommunizieren müssen,
die Inhalt über eine
Vielzahl von Netzwerken mittels verschiedener Kommunikationsprotokolle
bereitstellen. Die STB hat typischerweise eine begrenzte Verarbeitungsleistung,
so dass es nicht wünschenswert
ist, eine Vielzahl von Kommunikationsprotokoll-Handlern im STB-Prozessor
oder STB-Stack zu platzieren. Somit besteht Bedarf an einer gemeinsamen
Kommunikationsschnittstelle, die alle STBs und Applikationsserver
adressieren kann. Das DATP-Protokoll der vorliegenden Erfindung
bietet eine generische portable Kommunikations-API (Application
Programmer Interface), die eine leichte Prozessorauslastung erfordert, die
für eine
typische STB mit begrenzter Verarbeitungsleistung gut geeignet ist.
DATP erfordert relativ wenige Verarbeitungszyklen im Vergleich zu
typischen Internet-Kommunikationsprotokollen. DATP reduziert das
Overhead. des Kommunikationsprotokoll-Handlers an der STB und macht
den Kommunikationsprotokoll-Handler für alle STBs gemein. Das bevorzugte
DATP-Protokoll ist für
alle STBs portabel, da es in O-Code, einem STB-unabhängigen Byte-Code
geschrieben ist, der an das Betriebssystem der STB anschließt.
-
In
der vorliegenden Erfindung dient ein SGW als DATP-Server. SGW ermöglicht es
SP-Clients an STBs, sich über
das DATP-Protokoll mit Applikationsservern zu verbinden. Ein HTML-in-Nativcode-Proxy H2O
ist vorgesehen und kann in diesem Zusammenhang als SP-Applikationsserver
angesehen werden. H2O führt
spezielle. Inhaltsumsetzung wie HTML-in-SP-O-Codes durch. O-Codes
sind der STB-unabhängige Bytecode
der virtuellen Maschine, die auf der SP läuft. In einer bevorzugten Ausgestaltung
existiert eine O-Code-Implementation des DATP-Protokoll-Stack im Client,
typischerweise einer STB. Der Client kommuniziert über das
DATP-Protokoll mit
einem DATP-Server, SGW. Der H2O-Proxy existiert auf der anderen
Seite des SGW und führt
Inhaltsumsetzung wie HTML in O-Code durch. Eine O-Code-Implementation eines
DATP-Stack in dem/der Client/STB gibt Kommunikationsanforderungen
aus und kommuniziert mit dem SGW über das DATP-Protokoll. Vom H2O
umgesetzter Inhalt wird durch das SGW zum Client geleitet, wo Inhalt
angezeigt wird.
-
Das
SGW ist ein DATP-Server, der Ausführungsthreads für die Handhabung
jeder einzelnen STB und zur Verarbeitung jedes verwandten Inhalts erzeugt.
Der SGW-Server-Stack
kommuniziert mit dem/der Client/STB über das DATP-Protokoll. Das SGW
wendet auch das geeignete Protokoll an, das nötig ist, damit die STB zwischen
der STB und unterschiedlichen Applikationsservern hin und her kommunizieren
kann. Interaktive Fernsehapplikationen verwenden gewöhnlich gut
bekannte Internet-gestützte
Protokolle (HTML usw.) für
die Hin- und Herkommunikationen zwischen Client/STB und Applikationsservern.
Die vorliegende Erfindung stellt ein generisches und gut geeignetes
asymmetrisches Kommunikationsprotokoll zwischen Client/STB und Applikationsservern über das
SGW bereit. Die vorliegende Erfindung bewältigt die an Client/STB zur
Verfügung stehende
minimale Verarbeitungs- und Speicherleistung.
-
Die
vorliegende Erfindung stellt eine asymmetrische Datenkompressionslösung bereit.
Die Bandbreite des bidirektionalen Pfades von Client/STB zu Netzwerkbetreiber
ist relativ gering, gewöhnlich
eine gewöhnliche
Telefonleitung oder ein Rückkehrkanal
in einem Kabel und gewöhnlich
mit einem langsamen Modem verbunden. So wird zum Erhöhen der über das
langsame Modem zur Verfügung stehenden
Bandbreite der vom Server zu Client/STB heruntergeladene Inhalt
komprimiert. An dem/der Client/STB erfolgt jedoch vorzugsweise keine
Datenkompression. Zurückkommende
Client/STB-Datenmengen
sind relativ gering und brauchen nicht vom STB-Prozessor komprimiert
zu werden, der gewöhnlich
keine Verarbeitungsleistung für
Datenkompression besitzt. In einer alternativen Ausgestaltung gibt
es jedoch Fälle,
bei denen Datenkompression von dem/der Client/STB gewünscht wird,
und in diesem Fall erfolgt eine Datenkompression am SGW. Datenkompression
ist in Bezug auf Client/STB dahingehend asymmetrisch, dass Daten,
die stromabwärts zu
dem/der Client/STB gehen, komprimiert werden, und Daten, die aufwärts von
der STB gehen, nicht komprimiert werden. Somit ist die Architektur
der vorliegenden Erfindung asymmetrisch, im Gegensatz zu typischen
Internet-gestützten
Protokollen, bei denen angenommen wird, dass beide kommunizierenden Entitäten symmetrisch
gespeist werden.
-
SGW
und Client/STB kommunizieren mit Applikationsservern unter Verwendung
von Session-Kennungen für
Clients anstatt mit Benutzerkennungen, so dass die Client-Benutzer
anonym bleiben. Die vorliegende Erfindung bietet auch Multicasting
zu Clients. Eine Multicast-Meldung kann zu mehreren Clients über eine
Broadcast-Link gesendet werden, wenn die STB über eine Broadcast-Bandbreite
und einen Tuner verfügt
und wenn Broadcast-Meldungen verfügbar sind und von einem bestimmten
Filter-Setup in der STB erfasst werden. In diesem Fall fordert das
DATP an, dass die STB eine Meldung von einem speziellen Eintrag
auf dem Broadcast erhält.
Wenn kein Tuner zum Empfangen des Broadcast in der STB zur Verfügung steht,
dann werden auch Meldungsfragmente auf jeder individuellen Punkt-zu-Punkt-Verbindung
zu den STBs ohne Tuner gesendet. Wenn sich die STBs auf einem LAN befinden,
dann werden Meldungen zu einer gut bekannten Adresse auf dem LAN
zu den STBs gesendet.
-
Die
vorliegende Erfindung stellt auch ein(e) neuartige(s) Struktur und
Verfahren zur Handhabung von Cookies von Internet-Applikationen
bereit und bietet ein „leichtes" (light) HTTP-Protokoll,
LHTTP, das HTTP-Anforderungen in DATP-Meldungen verkapselt. LHTTP
ist eine vereinfachte Version von HTTP, die auf DATP läuft. Das
neue LHTTP läuft
auf DATP und implementiert keinen Teil der TCP/IP-Spezifikation.
-
SGW
stellt eine Link oder eine Socket-Verbindung mit einer STB her.
Zum Implementieren des User Datagram Protocol (UDP) wird UDP jedoch nicht
direkt ausgeführt.
Für eine
STB, die UDP ausgeben kann, verkapselt die vorliegende Erfindung DATP
auf UDP. Das in DATP verkapselte UDP wird zum SGW gesendet. Im Falle
von UDP werden ein Socket im SGW und ein Socket in der STB effektiv
in einer simulierten Verbindung auf UDP aneinander gebunden. Durch
diese simulierte Verbindung werden DATP-Pakete von der STB zum SGW-Server und
vom SGW-Server zur STB gesendet.
-
Viele
STB-Modeme bieten keine Datenkompression, besitzen nur minimale
Verarbeitungskapazität
und können
sich die Verarbeitungskosten zur Ausführung von Datenkompression
in der STB nicht leisten. Daher erfolgt in einer bevorzugten Ausgestaltung
eine asymmetrische Datenkompression an der STB. Die STB empfängt komprimierte
Daten und dekomprimiert sie, aber die STB führt keine Datenkompression
aus. Datendekompression ist jedoch weniger rechenintensiv als Datenkompression,
und daher führt
die STB vorzugsweise Dekompression aus. Die STB führt keine
Datenkompression aus. Komprimierte Daten werden zum DATP-Stack an
der STB gesendet, aber unkomprimierte Daten werden von der STB zum
SGW gesendet. Das SGW führt
Datenkompression an den unkomprimierten Daten aus, die von der STB
gesendet werden, und SGW leitet die komprimierten Daten zu Applikationsservern
zurück.
Somit erhöht
die bevorzugte asymmetrische DATP/SGW-Kompression die Bandbreite
des Rückkehrpfades
von der STB durch das SGW zu den Applikationsservern.
-
Die
vorliegende Erfindung bietet asymmetrisches Routing durch das SGW.
Bei asymmetrischem Routing wird ein Teil der Bandbreite dem SGW
zugeordnet, um Daten zum Broadcast-Strom Für Broadcast zu senden. SGW
hat die Fähigkeit
zu entscheiden, ob es Daten zu einer oder mehreren STBs über den
Broadcast-Strom oder eine Punkt-zu-Punkt-(PTP)-Verbindung zwischen den SGW
und der/den STB(s) sendet. SGW routet Daten über Broadcast oder PTP auf
der Basis der Datenmenge, der Geschwindigkeit der Punkt-zu-Punkt-Verbindung
zu der/den STB(s) und den aktuellen Kommunikationslink-Belastungsbedingungen.
So kann das SGW entscheiden, einen Datensatz nicht über die
Punkt-zu-Punkt-Verbindung zu senden, weil der Datensatz zu groß ist, und
ihn stattdessen über
den Broadcast-Strom zu senden. Daten können vom SGW komprimiert werden,
bevor sie zum Empfängerstrom
oder zur Punkt-zu-Punkt-Verbindung gesendet werden, um die Bandbreite
der Link zwischen dem SGW und der Link oder dem Strom zu erhöhen und
Speicherbegrenzungen in der STB zu berücksichtigen.
-
Das
DATP ist rechnerisch leichtgewichtig, weil es so ausgelegt ist,
dass alle STB-Stack-Operationen nur minimale Verarbeitungsleistung
benötigen.
So wird beispielsweise im DATP-Verschlüsselungsansatz, wenn Rivest,
Shamir und Alderman (RSA) Public-Key-Verschlüsselung angewendet wird, der
Key, der vom Server kommt, so gewählt, dass sein Exponent klein
(3 oder größer) ist,
so dass die Potenzierungsphase nur minimale Zeit und Verarbeitungsleistung
beansprucht. So wird der schwere Rechenaufwand für den SGW-Server reserviert
und der STB- oder Client-Prozessor braucht nur minimale Verarbeitungskapazität. Ebenso
braucht die LHTTP-Schicht auf DATP in der STB keine schweren Parsing-
oder sonstigen intensiven Verarbeitungsoperationen auszuführen. Stattdessen
werden die HTTP-Daten in DATP-Meldungen
durch LHTTP verkapselt, und die rechenintensiven HTTP-Funktionen, wie
z.B. die Konvertierung in das HTTP-Protokoll, werden vom SGW gehandhabt.
-
DATP
führt mehr
als nur Transaktionen aus. DATP ist vielmehr ein meldungsgestütztes Protokoll als
ein transaktionsorientiertes Protokoll. Wenn also ein Benutzer eine
Meldung von einer STB zu einem Applikationsserver sendet, dann braucht
der Applikationsserver nicht zu antworten. Das heißt, es gibt
keine Eins-zu-eins-Korrespondenz
zwischen STB und Diensteanbieter-Meldungen. Alle DATP-Meldungen, mit
Ausnahme der Klasse der unzuverlässigen DATP-Meldungen,
werden durch eine DATP-Schicht zuverlässig verarbeitet. Alle DATP-Meldungen
haben eindeutige Kennungen, die als die Basis für eine Transaktion verwendet
werden können.
-
In
einer Transaktion über
DATP, z.B. einer HTTP-Anforderung, sendet die STB eine DATP-Meldung
zum SGW und fordert eine Webseite an. Das SGW konvertiert LHTTP
in HTTP und sendet sie zum Internet über H2O. Wenn die die Webseite
enthaltende Antwort vom Internet über H2O zu SGW züruckkehrt,
das den Inhalt konvertiert, sendet SGW eine LHTTP DATP-Meldung zur
STB, die den Inhalt der angeforderten Webseite zur STB zurückführt. Ein weiteres
Beispiel für
eine Transaktion ist eine von einer STB gesendete Fetchmail-Anforderung.
Die Fetchmail-Anforderung ist in einer DATP-Meldung verkapselt.
DAML wird auf der DATP-Meldung verwendet. DAML ist eine domänenspezifische
Instanz von XML.
-
So
sendet die STB eine DATP-Meldung zu Fetchmail, die eine DAML (XML)
Anforderung enthält.
Fetchmail liest die DATP-Meldung und extrahiert den Inhalt aus der
Meldung, leitet den Inhalt zum Applikationsserver, der die Transaktion
verarbeitet und gibt eine Meldung zu Fetchmail zurück. Fetchmail sendet
dann eine angeforderten Inhalt enthaltende DATP-Meldung zur STB.
-
DATP
ist aufgrund seines Mapping auf das OSI-(Open Systems Interconnection)-Modellflexibel. Das
OSI-Modell umfasst sieben Schichten für Kommunikationen von Computer
zu Computer. Jede der sieben Schichten baut auf der Schicht darunter
auf. Die sieben OSI-Schichten lauten, von unten nach oben, wie folgt:
Bitübertragung
(Physical), Sicherung (Datalink), Vermittlung (Network), Transport
(Transport), Sitzung (Session), Darstellung (Presentation) und Anwendung
(Application). DATP ist flexibel, da es vier der sieben Schichten
des OSI-Modells überspannt.
DATP überspannt
die Schichten Sicherung, Vermittlung, Transport und Sitzung des
OSI-Modells. Das OSI-Modell geht von einer symmetrischen Verarbeitungskapazität an jedem
Computer-Server und Host aus, der über das OSI-Modell kommuniziert. Das
heißt,
das OSI-Modell bietet ein symmetrisches Kommunikationsmodell. Dieses
symmetrische Modell ist für
die schwache Verarbeitungskapazität der STB nicht geeignet. DATP
bietet ein asymmetrisches Kommunikationsprotokoll auf der Basis
des Paradigmas „dicker" (große Bandbreite
und Verarbeitungsleistung) Server/dünner (kleine Bandbreite und
Verarbeitungsleistung) Client, das so ausgelegt ist, dass es besonders
gut für
die interaktive Fernsehumgebung geeignet ist.
-
DATP
reduziert das pro Byte übertragene Overhead
erheblich auf ein Minimum. Das DATP-Protokoll wird in einem binären Format
implementiert, dessen eigenes DATP-Paket so formatiert ist, dass
das Paket-Overhead grob zwanzig Byte beträgt, was die Hälfte von
dem ist, was im TCP/IP-Format-Framing benötigt wird. DATP bietet eine
Zuverlässigkeitsschicht.
DATP sieht auch vor, dass „unzuverlässige DATP-Pakete" Meldungen zu STBs
senden, die nicht bestätigt
werden und die durch die Zuverlässigkeitsschicht
nicht zuverlässig
gemacht werden. Unzuverlässige
DATP-Pakete sind für
Multicasting nützlich.
-
SGW
bietet auch eine Speicher- und Weiterleitungsfunktion zum Handhaben
von von mehreren Benutzern kommenden Auftragsspitzen und reagiert schnell
auf die Benutzerauftragsanforderung. SGW sendet eine „Auftragsbestätigung" zum Benutzer schnell
als Reaktion auf dessen Auftrag und speichert den Auftrag für eine spätere Übertragung
zum Applikationsserver, der die Auftragstransaktion tatsächlich verarbeitet.
Indem der Auftrag später
gesendet wird, kann eine größere Zahl
von Aufträgen über die
Zeit verteilt werden, und es brauchen nicht alle gleichzeitig zum
Applikationsserver gesendet zu werden. Somit wird die Bandbreite
effizient ausgelastet. DATP bietet auch ein Rückweisungsgleitfenster auf der
Basis von Sequenznummern gegenüber
Zeit. DATP/SGW werden nachfolgend ausführlich erörtert.
-
Die Service-Plattform
-
1 zeigt
die SP, in der sich die vorliegende Erfindung befindet. Die SP 50 umfasst
eine Gruppe von Applikationen, die grob in drei Kategorien unterteilt
sind, Inhaltskonvertierung 204, Transaktionssteuerung/Geschäftsfunktionen 106 und
Transportkonvertierung 108. Die SP ermöglicht es Diensten 200,
mit einem Client 212 zu interagieren. Die Dienste 200 kommunizieren
durch eine Kommunikationslink 102 mit der SP 50.
Die SP 50 wiederum kommuniziert mit einem Client 212.
Der Client 212 kann eine STB, ein Digital Assistant, ein
Zellulartelefon oder ein beliebiges anderes Telekommunikationsgerät sein, das
mit der SP durch die Kommunikationslink 210 kommunizieren
kann. Die Dienste Inhaltskonvertierung 204 und Transportkonvertierung 108 bieten
die Transport- und Kommunikationsfunktion, die Geschäftsfunktionsdienste
bieten die Geschäftssteuerfunktionen.
-
2 illustriert
ein Beispiel für
eine bevorzugte Implementation der Service-Plattform 50. Die Dienste 200 bieten
Shopping, Chatten und andere entweder über das Internet oder über einen
anderen Netzwerk- oder Kommunikationskanal, auf den der Netzwerkbetreiber
zugreifen kann. Mit der SP greift der Netzwerkbetreiber auf diese
Dienste zu. Geschäftsfunktionen 206,
einschließlich
Service-Manager 238, interagieren mit dem Karussell-Manager 254 zum
Abrufen von Inhalt von einem Dienst 200. Das Karussell
umfasst einen sich wiederholenden Strom von Audio/Video/Interaktiv-Daten,
die von der SP 50 zu Clients gebroadcastet wurden. Karussell-Manager 254,
Transaktionsmanager 242 und Service-Manager 238 steuern
das Einfügen
und Löschen
von Inhalt vom Broadcast-Karussell. Service-Inhalt wird abgerufen
und vom H2O 248 in ein für die SP geeignetes Format
konvertiert. H2O 248 ist eine mögliche Implementation der Inhaltskonvertierung 204.
H2O konvertiert HTML-Inhalt in von der/dem SP/Client lesbaren Inhalt.
Der konvertierte Inhalt wird zu einem Datenkarussell formatiert
und von Open Streamer 256 zum Broadcasten zum Client 212 multiplexiert.
Der Client 212 interagiert mit den Diensten und kommuniziert
bei Bedarf mit der SP und den Diensten 200. PTP-Kommunikation
erfolgt durch SGW 246. SGW 246 führt eine
Transportkonvertierung zum Konvertieren des STB DATP Protokolls
in eine Form aus, die Platform-Business-Agenten 226 und
H2O 248 erwarten und verstehen. Der Lastausgleicher 236 interagiert
mit Geschäftsfunktionen 206,
dem Karussell-Manger 254 und dem SGW 246 zum Ermitteln
der optimalen Last zwischen der Broadcast-Link 241 und
der PTP-Kommunikationslink 210. Geschäftsfunktionen 206 interagieren
mit den Plattform-Business-Agenten 226 zum Steuern von
Zugriff und Informationsaustausch zwischen den Diensten 200 und
dem Client 212.
-
SP
verbirgt die wertvolle Subscriber-Profildatenbank des Operators,
indem sie verlangt, dass einem Dienst Zuschauerinformationen ausschließlich vom
Netzwerkbetreiber und unter dessen Kontrolle gegeben werden. Um
die Identität
des Subscribers zu schützen,
wird eine abstrahierte Benutzerkennung (d.h. Session-Kennung) während der
Session zum Dienst übertragen,
dass der Dienst Transaktionsdetails zur SP überträgt. Die Benutzerkennung ist
session-spezifisch. Es kann mehr als eine Benutzerkennung mit einem
Client assoziiert sein, wie z.B. dann, wenn verschiedene Familienmitglieder
dieselbe STB benutzen. Jedem Familienmitglied und der Haushalt-STB können individuell
eine Zuschauerkennung, eine Kategorie zugewiesen werden, die im
Hinblick auf Transaktionen für
Einkäufe/Kinofilmanforderungen/Fernsehgewohnheiten
usw. verfolgt und vom SP-Zuschauer-Manager
profiliert werden. Der Dienst kennt die Client- oder STB-Kennung
nur durch eine Session-Kennung. Nur der Netzwerkbetreiber kann, über das
SGW, eine Session-Kennung in Zuschauerinformationsdetails auflösen (Name,
Adresse, Versandinformationen usw.), die zum Ausfüllen eines Auftrags
benötigt
werden. Eine Ausnahme kann für eine
Kreditkartennummer oder andere Information gemacht werden, wenn
der Operator keine Kreditkartensammlungen oder andere Transaktionen
durchführen
möchte.
-
Die
vorliegende Erfindung ermöglicht
es Netzwerkbetreibern, den Zugriff auf die Zuschauerinformationsdatenbank
zu kontrollieren und nur denjenigen Diensteanbietern zu gestatten,
die eine Vereinbarung mit dem Netzwerkbetreiber für den Zugriff
auf privilegierte Informationen haben (z.B. Kreditkartennummern,
Eigenname des Zuschauers, Heimadresse, Telefonnummer, Sozialversicherungsnummer usw.).
Der Zuschauer-Manager 252 ermöglicht den Zugriff auf Personen-
und Profilinformationen, die auf den Client-Geräten gespeichert sind, und ermöglicht es
den Client-Geräten
oder der SP, vom Benutzer bevorzugten Inhalt und Kaufgewohnheiten
auf der Basis der im Zuschauerprofil gespeicherten Fernsehinformationen
zu wählen.
Clients oder die SP wählen vom
Benutzer bevorzugten Inhalt auf der Basis von Zuschauerprofilierung über Geschäftsfilter,
die im Client-Gerät
vom Client, dem SGW oder einer anderen SP-Komponente aktiviert werden.
-
Der
Zuschauer-Manager 252 bietet Haushalt/Subscriber/STB-(oder
andere Client-Geräte)-Identifikationen
und Berechtigung zur Unterstützung
der SGW- und Kindersicherungsfunktionen. Der Zuschauer-Manager 252 unterstützt mehrere
Zuschaueridentifikationen und Registrierungsberechtigungen an einer
einzelnen STB durch Kosenamen und/oder persönliche Identifikationsnummern
(PIN) plus der Zuschauerkennung, die von Client-Geräte-Kennnummer(n),
Transaktionshistorie, Zuschauerprofilen, Kosenamen und persönlichen
Identifikationsnummern abgeleitet wurde. Der Zuschauer-Manager 252 führt eine
Haushalts- und individuelle Zuschauerprofilierung durch Logging,
Erzeugung und Zusammenführung
in Verbindung mit beobachteten kumulativen Fernseh- und Kaufgewohnheiten
durch. Der Zuschauer-Manager
unterstützt
verteilte Datenerfassung und Speicherung zwischen der SP und der STB
und unterstützt
bidirektionale Synchronisation.
-
Der
Zuschauer-Manager 252 ermöglicht einen verteilten Profilgebrauch
zwischen allen SP-Applikationen und bietet Synchronisation mit einem
externen SMS/CRM. Der Zuschauer-Manager 252 ermöglicht mehrere
Zuschauerregistrierungen für ein(e)
einzelne(s) STB oder Client-Gerät
unter Verwendung abstrakter Zuschauerkennungen, die Pseudonyme oder
Kosenamen, volle Namen und PIN-Speicherung in der STB oder einem
anderen Client-Gerät
umfassen. Business-Agenten 226 vollziehen die Einhaltung
der Transaktionsgeschäftsregeln für eine Interaktion
zwischen Diensteanbietern und Zuschauern. Auf der Basis von Geschäftsregeln,
die von den Netzwerkbetreibern definiert werden und auf Vereinbarungen
mit den Diensteanbietern basieren, steuern die Business-Agenten 226 Transaktionen und
den Zugriff von Diensteanbietern auf Benutzerinformationen. Business-Agenten 226 ergänzen, addieren,
ersetzen und löschen
Zuschauerinformationen während
einer Transaktion auf der Basis der Diensteanbietervereinbarungen
und abstrakten Session-Kennung.
-
Business-Agenten 226 erzeugen
Sessions zwischen Client-Subscribern und Diensteanbietern. Business-Agenten 226 steuern
den Zugriff auf Zuschauerinformationsdetails und manipulieren Zuschauerinformationen
durch Einschließen,
Ersetzen und Herausnehmen von Zuschauerinformationen, die Diensteanbietern
vorgelegt werden. Die Business-Agenten 226 geben Vorgabewerte
und steuern den Zugriff auf Benutzerinformationen. Die Business-Agenten 226 führen auch
Transaktionslogging, Meldungslogging und Last-/Transaktionsüberwachung
durch.
-
Der
Reklamemanager 244 bietet eine Schnittstelle mit den Broadcast-
und PTP-Links, die eine
kostenlose Reklameinteraktion zwischen den beiden Zuführungskanälen ermöglicht.
So kann beispielsweise eine Broadcast-(Push-) Reklame eine PTP-Verbindung zum Reklamedienst über die
SP auslösen,
so dass der Benutzer das Produkt kaufen oder mehr Informationen über das
Produkt einholen kann. Eine Broadcast-Reklame kann auch in den PTP-Inhalt
gesetzt werden, um einen Benutzer über die Verfügbarkeit
von Broadcast-Diensten (z.B. ein Infomercial) zu informieren.
-
In
einigen Fällen
werden mehrere Produkte oder Reklamesegmente zum Client gepusht
oder gebroadcastet, ohne dass der Client die Informationen angefordert
hat. Geschäftsfilter
in Verbindung mit dem Client, die sich vorzugsweise in einer STB
befinden, werden zum Wählen
der besten Reklame für den
Zuschauer auf der Basis von Benutzerprofilen verwendet. Zum Beispiel,
während
einer Kochsendung kann die SP eine Gruppe von Kochreklamen zum Broadcasten
zu Zuschauern planen. Diese Gruppe von Werbesendungen kann Kochreklamen über italienische,
französische,
indische und deutsche Küche
umfassen. Der Geschäftsfilter,
der mit der STB oder dem Client assoziiert sein oder sich darin
befinden kann, wählt,
welchen Typ von kulinarischer Reklame er dem Client vorlegt. Ein
Zuschauer möchte
möglicherweise
eine französische
Kockreklame sehen, während
ein anderer Zuschauer möglicherweise
die indische Kochreklame sehen möchte, je
nach dem STB-Filter, der vom Client oder der SP auf der Basis der
Benutzerpräferenzen
und Client-Profile eingestellt ist.
-
Die
SP ermöglicht
eine Wiederverwendung von Web Commerce Infrastruktur. Die SP ersetzt
die ,gewöhnlichen' HTML-Schablonen
durch ein SP-freundliches Format. Die Business-Agenten empfangen
die Auftragsanforderungen von der STB oder dem Client über das
SGW. Das SGW setzt Meldungen in Warteschlangen (um Spitzen zu bewältigen), einige
Aufträge
werden von den Business-Agenten mit einer Verzögerung empfangen (dieser Ansatz würde vorzugsweise
für Aufträge benutzt,
die keine Form von Bestätigung
benötigen).
Die Business-Agenten fügen
Aufträgen
Zuschauerinformationen hinzu. Menge und Typ der in einem Auftrag/einer Meldung
enthaltenen Zuschauerinformationen werden durch Geschäftsregeln
im Einklang mit Dienste/Einzelhandelsvereinbarungen bestimmt.
-
Als
Kommunikationen zwischen Diensten und Zuschauern/Clients werden
die Informationen entweder zu separaten Karussells mit einem einzelnen
Karussell pro Transportstrom gesendet oder zu den existierenden
Applikationskarussels zusammengeführt. Aufträge können dann bei Bedarf durch
eine „Kreditkarten-Clearance"-Funktion bearbeitet
werden, die von der SP bereitgestellt wird. Wenn Bestätigungen
von den Einzelhändlern
zurückgesendet werden,
werden die Aufträge
in Echtzeit zum Benutzer zurückgesendet,
per Email zum Benutzer oder auf Abruf durch eine Form von Kundenbetreuungsapplikation
zur Verfügung
gestellt.
-
Die
SP bietet auch Offline-Zuschaueridentifikation (OVI), so dass ein
Zuschauer ohne eine hergestellte Online-Zuschauerverbindung identifiziert
oder authentifiziert werden kann. Dadurch wird gewährleistet,
dass die Verbindungsverzögerung
(z.B. 10–40
Sekunden) an die geeignetste Stelle im Kaufvorgang gesetzt werden
kann. Dies ermöglicht
auch eine Zuschaueridentifikation zusammen mit der Speicher- und
Weiterleitungsfunktion. OVI ermöglicht Kommunikationen
und die Erledigung von Aufträgen/Operationen
mit einem Client-Gerät,
das intermittierend ein- und ausgeschaltet ist.
-
Es
ist eine Offline-Auftragsformularfunktion vorgesehen, die es der
SP ermöglicht,
T-Commerce-Dienste für
einen Zuschauer bereitzustellen, um Artikel auf ein Auftragsformular
(Einkaufswagen) zu setzen, ohne online zu sein. Die Speicher- und
Weiterleitungsfunktion ist zur Erzielung einer größeren Skalierbarkeit
wichtig. Speicherung und Weiterleitung können entweder Weiterleitung
zu ruhigeren Zeiten oder einfach Verteilen der Last über eine
bestimmte Zeitperiode nach dem Einleiten einer Transaktion erfolgen.
Die volle Speicher- und Weiterleitungslösung wird integriert mit [Lakune],
so dass Antworten von jedem Kanal zu jeder Zeit weitergeleitet werden
können.
Speicherung und Weiterleitung können
für erweiterte
E-Commerce, T-Commerce
Transaktionen verwendet werden. Die Offline-Zuschauerauthentifizierung
ermöglicht
eine Offline-Zahlungsauswahl. Die Offline-Zahlungsauswahl wird von
der SP bereitgestellt, um den Kaufprozess zu verbessern und die
Nutzung der Speicher- und Weiterleitungsfunktion mit T-Commerce/E-Commerce
zu ermöglichen.
-
Die
SP verwendet, wo anwendbar, einen standardmäßigen Webtransport, d.h. sie
verwendet HTTP für
Echtzeitanforderungen und wo anwendbar SMTP für asynchrone Kommunikationen
(d.h. Merchant-Reporting, Speichern und Weiterleiten). Selbst wenn
man online geht, bietet die SP die Möglichkeit, sich für kurze
Zeit zum Zugreifen auf Daten (z.B. Email) zuzuschalten und die Daten
dann lokal zu benutzen. Die SP bietet Session-gestützte Kennungen anstatt
der typischen Web-Cookies zum Schützen der Operator-Zuschauerdatenbank.
Anstatt Web-Cookies bietet die SP eine Session-gestützte Kennung,
mit der der Dienst nicht den Benutzer, sondern nur die Session identifizieren
kann. Der Dienst muss die Zuschauerinformationen vom SGW anfordern
(und dies wird vom Netzwerkbetreiber berechnet).
-
Die
SP informiert den Zuschauer bei Bedarf, wenn ein Zuschalten stattgefunden
hat, und kann auch bei Bedarf die Zustimmung des Zuschauers zum
Aufrechterhalten der Verbindung einholen. Die SP zeigt auch einen „Connection
ON" (Verbindung ein)
Status am Zuschauerbildschirm an. Die SP verwendet die Broadcast-Bandbreite
für PTP-Kommunikationen,
wenn dies effizienter ist. Es ist ein Lastausgleicher vorgesehen,
der bestimmt, welche Informationen über die Broadcast- und welche über die PTP-Verbindung gehen.
Lastausgleichsentscheidungen basieren auf der Dringlichkeit der
Daten, der Zuführungslatenz
der Broadcast- gegenüber
PTP-Übertragungslinks,
der Vergleichslast auf den Broadcast- und PTP-Pfaden und der Zahl
der die Daten empfangenden Zuschauer. Im Allgemeinen werden Daten, die
zu einer großen
Zahl von Zuschauern gehen, gebroadcastet, und geringe Datenmengen,
die sofort gesendet werden müssen,
werden über
die PTP-Link gesendet. STBs ohne Breitbandtuner empfangen ausgesendete
PTP-Meldungen zusammen mit Breitband.
-
SP
bietet Filter für
STBs und/oder Clients, die Informationen im Breitbandpfad auf der
Basis von Zuschauerprofilierung selektiv empfangen, so dass nur
ausgewählte
Zuschauer, in deren STB ein bestimmter Filter eingerichtet ist,
Inhalt (Werbung, Informationen oder A/V-Programmierung usw.) im
Broadcast-Strom erfassen. Diese Filter verbessern die adaptiven
und selektiven Zuführungsaspekte
der SP. Der Karussell-Manager
bietet ein Datenkarussell für Open
Streamer. Der Karussell-Manager verwaltet ein Karussell von Daten
in Echtzeit. Der Karussell-Manager komplementiert Open Streamer.
Der Karussell-Manager bietet eine Server-Komponente und eine STB-Client-OCOD-Bibliothek.
Der Karussell-Server empfängt
Anforderungen von Applikationen, um Inhalt zum Karussell hinzufügen, davon wegzunehmen
oder auf andere Weise zu ändern. Wenn
der Karussell-Manager eine Anforderung empfängt, behandelt er sie als eine
einzelne Transaktion und holt alle notwendigen Daten ein (gewöhnlich durch
HTTP). Der Karussell-Manager erzeugt bei Bedarf eine neue Karussellindex-
oder Karussellverzeichnisdatei. Der Karussell-Manager veröffentlicht das
aktualisierte Karussellverzeichnis zu Open Streamer und steuert
dadurch die Broadcast-Prioritäten und
-Tracks von Open Streamer.
-
Open
Streamer ist ein Software/Hardware-Produkt, das es Netzwerkbetreibern
ermöglicht,
SP-Anwendungen und Daten in ihrem Netzwerk-Broadcast zu broadcasten.
Open Streamer lässt
es zu, dass SP-Daten und -Applikationen gleichzeitig mit den A/V- Programmen des Netzwerkbetreibers
gesendet werden. Open Streamer ermöglicht die Aktualisierung eines
Datenstroms in Echtzeit passend zum A/V-Inhalt. So kann beispielsweise
ein Netzwerkbetreiber eine interaktive Sportapplikation zusammen
mit der Live-Sendung einer Sportveranstaltung broadcasten. Open
Streamer umfasst zwei Komponenten, eine gemeinsame Server-DLL und
einen Broadcast-Streamer. Ein Applikationsserver (z.B. ein Wetterapplikationsserver)
oder der Carousel Builder in der SP ruft die gemeinsame Server-DLL auf,
um die Karusselldaten zum Broadcast-Streamer zu senden. Der Broadcast-Streamer
führt die
Multiplexierung (gemäß Code/Daten-Verhältnis- und
Bitratenanforderungen) der Applikationen und A/V-Daten durch und
sendet die multiplexierten Daten zum Ausstrahlen zum Broadcast-Gerät.
-
Überblick über den DAP/DATP-Protokollansatz
-
Die
vorliegende Erfindung ermöglicht
Kommunikationen zwischen STBs und Diensteanbietern in Verbindung
mit einer SP. Das DATP-Protokoll ist ein meldungsgestütztes Protokoll,
bei dem eine Entität
eine Meldung zu einer anderen Entität mit einer Liefergarantie
sendet. Jedes Mal, wenn die STB eine Meldung zum SGW sendet, erhält die STB
eine Bestätigungsmeldung,
sobald die Meldung ihr Endziel erreicht hat (SGW oder ein Applikationsserver). Wenn
ein Applikationsserver die Meldung verarbeitet hat, kann eine Antwortmeldung
zur STB gesendet werden, vorausgesetzt, die STB-Session mit SGW
ist noch offen. Der DATP-Meldungssendephase
geht eine DATP-Login-Phase voraus und es folgt ihr eine DATP-Logout-Phase, die
zum Herstellen einer DATP-Session nötig sind. DATP ist ein Sessionorientiertes
Protokoll. 9 illustriert ein einfaches
Beispiel für
eine DATP-Session.
-
DATP
unterstützt
mehrere Sessions auf derselben STB-Transportschicht-Verbindung. STB-Clients
können
mitten in einer offenen Session mit SGW-Login Pakete zum Starten
einer neuen Session auf derselben STB-Transportlink senden, die
für die erste
Session benutzt wird. Beide DATP-Session-Management-Module im STB-Client und im SGW multiplexieren
die verschiedenen Session-Meldungen über dieselbe Link.
-
Überblick über den
DATP-Paketinhalt
-
Das
DATP-Protokollpaket umfasst einen Header fester Größe, Nutzdaten
veränderlicher
Größe (DAML-Meldungen)
und einen Trailer. Der Header umfasst die folgenden Elemente: Protokollversionsnummer;
Pakettyp (Login/Logout Handshake, Ping, Daten, Bestätigung usw.);
tatsächliche
Transport-Info (Rohdaten, TCP/IP, UDP usw.); Meldungssequenznummer
(DATP-Meldungsnummer, von STB oder SG erzeugt); Dienstekennung (ID
des Dienstes zum Empfangen der Daten). Die Dienste-ID ist eine 8-Bit-Kennung, die
im DATP-Protokoll definiert ist. Die Session-ID (Session ID wird
vom SGW beim Handshake gegeben); Verschlüsselungsflags für verschlüsselte Sessions;
und Nutzdatengröße.
-
Die
Nutzdaten können
die folgenden je nach Pakettyp enthalten: Login/Logout-Info für Handshake-Pakete;
Quittungsinfo für
Bestätigungspaket; Nutzdaten
für Datenpaket.
Der Trailer enthält
wenigstens die 32 Bits CRC-Prüfsumme
des DATP-Pakets. Die
DATP-Protokollbyte-Reihenfolge ist BIG ENDIAN.
-
Paketfelderspezifikation
-
Das
Protocol Version Feld ist die Version des DATP-Protokolls, das von
der sendenden Entität
benutzt wird. Dies ist das erste Byte eines DATP-Pakets. Das DATP-Paketformat kann
je nach der DATP-Protokollversionsnummer variieren. Wenn neue Versionen
des DATP-Protokolls vorgegeben werden, dann wird diese Versionsnummer
erhöht, um
die Änderungen
zu reflektieren. DATP-Kommunikationen zwischen zwei Entitäten benutzen
die höchste
an beiden Entitäten
verfügbare
DATP-Version. Die Versionsnegoziierung ist Teil des Login-Prozesses.
-
Das
Packet Type Info Feld ist das zweite Byte eines DATP-Pakets. Es
zeigt an, welcher Typ von DATP-Paket gerade gesendet wird. Das STB Transport
Info Feld ist das dritte Byte eines DATP-Pakets. Es gibt Informationen über den
auf der STB-Seite benutzten Transport. Es ist in 3 Subfelder unterteilt:
STB_transport_info[7..4]: Die vier MSB-Bits des Feldes repräsentieren
den nativen STB-Transportprotokolltyp. STB_transport_info [3]: Dieses
Bit gibt an, ob der zu Grunde liegende Transport zuverlässig ist.
Man beachte, dass dieses Bit selbst dann auf den richtigen Wert
gesetzt wird, wenn der Wert des nativen Transportprotokolltyps eine
gute Anzeige der Protokollzuverlässigkeit
geben kann. STB_transport_info [2..1]: Dieses Bit zeigt die Geschwindigkeitsklasse
des nativen STB-Transports an.
-
Die
Service-ID ist das vierte Byte in einem DATP-Paket und zeigt die
ID des Ziel- (STB-zu-SGW-Pakete) oder Sende- (SGW-zu-STB-Pakete)
Hosts eines DATP-Pakets an.
Die Session-ID ist das zweite Quadlet (Doppelwort) eines DATP-Pakets.
Sie gibt die Session-ID des DATP-Pakets an. Session-ID-Werte werden
vom SGW während
des Login-Prozesses erzeugt. Bei Login-Paketen ist das Session-ID-Feld
auf 0 gesetzt.
-
In
DATP ist eine Sequenznummer das erste Wort des dritten Quadlets
eines DATP-Pakets. Es zeigt die DATP-Meldungssequenznummer an. Diese Nummer
identifiziert eine DATP-„Transaktion" von einem zu seiner
entsprechenden Bestätigung
gesendeten Paket. Meldungssequenznummern werden durch die sendende
Entität
erzeugt und sind nur über die
auf einem Zweig einer DATP-Verbindung gesendeten Meldungen eindeutig.
Das bedeutet, dass eine vom STB-Client zum SGW gesendete DATP-Meldung und eine
vom SGW zum STB-Client gesendete Meldung dieselbe Sequenznummer
haben können, aber
weiterhin zwei separaten „Transaktionen" entsprechen.
-
In
DATP ist die Datengröße das zweite
Doppelwort des dritten Quadlets eines DATP-Pakets. Es gibt die Größe der Nutzdaten
des Pakets in Bytes an. Diese Größe ist konstruktionsbedingt
auf 64 KB begrenzt, um verschiedene gemeinsame Faktoren bei Low-End-STBs
wie langsame Modemlinks, äußerst verrauschte
Kommunikationskanäle,
begrenzte RAM-Speicherressourcen usw. zu berücksichtigen. In DATP bilden
Verschlüsselungsflags
das erste Byte des vierten Quadlets eines DATP-Pakets. Die DATP-Nutzdaten
beginnen am ersten Byte nach den 16 Bytes des Headers fester Größe bis zur
Größe der Nutzdaten
wie im Headerdatengrößenfeld
angegeben. In DATP ist CRC das erste Quadlet nach den Nutzdaten.
Es enthält
den Wert der 32-Bit-CRC-Prüfsumme des
gesamten DATP-Pakets (einschließlich Header).
-
Das
Login-Paket wird von der/dem STB/Client zum Einleiten einer DATP-Session mit dem SGW gesendet.
Es repräsentiert
die erste Phase der Login-Prozessnegoziation,
wobei sich die STB dem SGW selbst vorstellt. Das SGW beantwortet
eine Login-Anforderung im Erfolgsfall mit einem Bestätigungspaket.
Es entscheidet dann über
die negoziierbaren Attribute der DATP-Verbindung und weist der neu
erzeugten Session eine Session-ID zu.
-
Das
SGW beantwortet die Login-Anforderung im Misserfolgsfall mit einem
negativen Bestätigungspaket.
Dieses Paket wird von der STB zum Schließen einer DATP-Session mit
dem SGW gesendet. Das SGW beantwortet eine Logout-Anforderung im Erfolgsfall
mit einem Logout-Bestätigungspaket.
-
Das
SGW beantwortet eine Logout-Anforderung im Misserfolgsfall mit einem
negativen Logout-Bestätigungspaket.
Misserfolgsfälle
sind u.a. Fehler wie unbekannte Session-ID, schlechte CRC usw. Ein
Datenpaket kann von jeder Entität
einer DATP-Verbindung
gesendet werden. Eine STB-Client-Applikation kann DATP-Datenpakete
zu Applikationsservern senden und Applikationsserver können einer
STB antworten und eine Übertragung
eines Datenpakets vom SGW zur Client-STB bewirken. Eine Entität, die ein
Datenpaket empfangen hat, antwortet bei erfolgreichem Anfang mit
einem Datenbestätigungspaket.
Eine Entität,
die ein Datenpaket empfangen hat, antwortet bei erfolglosem Empfang
mit einem negativen Datenbestätigungspaket.
Wenn kein Paket von einer Fern-DATP-Entität für eine konfigurierbare Zeitperiode
empfangen wurde, dann könnte die
andere Fernentität
die DATP-Link dadurch testen, dass sie ein DATP-Ping-Paket sendet und auf eine Antwort
wartet. Eine Fernentität,
die ein Ping-Paket empfangen hat, muss ein Ping-Quittungspaket zu
ihrem Fern-Peer senden, wenn das Ping-Paket erfolgreich empfangen
wurde. Eine Fernentität,
die ein Ping-Paket empfangen hat, muss im Falle eines erfolglosen
Empfangs eines Ping-Pakets ein negatives Ping-Quittungspaket zu
ihrem Fern-Peer senden. Misserfolgsfälle sind u.a. Fehler wie unbekannte Session-ID,
schlechte CRC-Prüfsumme
usw.
-
3 zeigt
eine Zusammenfassung der Architektur für DATP/SGW. Eine große Zahl
von SP- und STB-Client-Applikationen haben gemeinsame Bedürfnisse,
die eher transportspezifisch als applikationsspezifisch sind und
die in der DATP-Architektur adressiert werden. DATP führt Verschlüsselung,
Datenkompression, HTTP-Routing und viele andere nachfolgend erörterte Funktionen
aus. Die Architektur für
das DATP-Application-Backend-Framework
ist in 3 illustriert. DATP stellt Lightweight HTTP (LHTTP)
auf O-Code-Applikationsebene, Speicher- und Weiterleitungsfunktionen,
STB-Identifikation
(mit dem OpenTV Central Registry [OCR]) und viele andere Funktionen
bereit. Diese Funktionen werden im Rahmen des oder zusätzlich zu
dem DATP-Protokoll(s)
bereitgestellt.
-
Wie
in 3 gezeigt, bietet der SGW-Server 1018 eine
robuste Kommunikationslink zwischen der STB 1008 und einer
Reihe verschiedener Applikationsserver 1026, 1028, 1030 und 1032,
einschließlich dem
Fetchmail-Server 1026. SGW 1018 routet Anforderungen
zwischen der STB und Applikationsdiensten hin und her. SGW empfängt DATP-Pakete
von dem/der Client/STB 1018, kontaktiert den richtigen Applikationsserver
und sendet/empfängt
Daten zum/vom Applikationsserver über die TCP/ID-Verbindung.
SGW ermöglicht
es einem Fremdserver oder SP-spezifischen
Servern wie dem Fetchmail-Server 1026, Meldungen zur STB
zu senden.
-
Wie
in 4 gezeigt, hat die STB-/Client-Stack-Architektur
mehrere Module sowie eine zusätzliche
Schicht, den Meldungs-Manager 1104, zwischen der Applikation
und dem nativen STB/Client-Transport. APIs sind für STB-Applikationen
wie eine LHTTP API 1106 und eine Speicher- und Weiterleitungs-API 1108 vorgesehen.
Der Server verwendet eine asynchrone Version der PAL-Schicht, implementiert
Thread-Pools und
Prozessisolationstechniken.
-
In
einer bevorzugten Ausgestaltung ermöglicht DATP größere Meldungen
und garantiert dabei die Lieferzuverlässigkeit und adressiert komplexe Speicherbelange
aufgrund von eingeschränkten
eingebetteten Umgebungen in der STB. Um die DATP-Meldungsgröße zu erhöhen, werden große Meldungen
in kleinere Sektionen unterteilt, gesendet, umgeordnet und in einer
rekonstruierten DATP-Meldung geliefert. Auf einer unzuverlässigen Link
mit einer binären
Fehlerrate (BER) von 10–64 beträgt die Wahrscheinlichkeit
für einen
Fehler in einer 64 KB-Meldung grob 7% (1 von 14 Meldungen). Wenn man
weiß,
dass die Übertragung
von 64 KB über
ein 2400 Bits Modem etwas länger
als fünf
Minuten dauert, dann vermeidet es DATP, dieselbe Meldung weitere
fünf Minuten
neu zu senden, nur weil eines seiner Bits verfälscht ist. Um eine Neuübertragung
zu vermeiden, lauten die folgenden Implementationsrichtlinien für DATP vorzugsweise
wie folgt.
-
In
einer bevorzugten Ausgestaltung werden große Meldungen, d.h. Meldungen über 64 KB,
in kleinere DATP-Pakete fragmentiert. Es können auch kleinere Fragmentgrenzwerte
als 64 KB verwendet werden. Jedes DATP-Fragment wird separat quittiert. Wie
in 8 gezeigt, verfolgt DATP Meldungssequenznummern
und die Zeit, zu der die Sequenznummer zuletzt benutzt wurde. DATP-Meldungen
mit einer „kürzlich" benutzten Sequenznummer
werden als „bereits
empfangen" abgelehnt.
Um diese Richtlinie zu implementieren, führen DATP-Hosts ein Gleitfenster
von kürzlich
benutzten Sequenznummern mit einem Zeitstempel auf jeder Sequenznummer. Ältere Sequenznummern
werden aus dem Fenster des Fernhosts entfernt, wenn sie älter als (host_max_retry+1)*host_timeout
sind. In einer bevorzugten Ausgestaltung ist der Zeitabschaltwert programmierbar
und kann auf jeden beliebigen Wert gesetzt werden.
-
Das
Rückweisungsfenster
verfolgt die Sequenznummern von Paketen, die in einem bestimmten
Zeitrahmen empfangen wurden, beginnend mit der aktuellen Zeit. Wenn
die DATP-Kernschicht ein Paket empfängt, dann wird ihre Sequenznummer
im Rückweisungsfenster
nachgeschlagen. Wenn die Sequenznummer in dem Fenster gefunden wird, dann
wird sie verworfen, d.h. das Paket oder Fragment in Verbindung mit
dieser Sequenznummer wird ignoriert. Wenn die Sequenznummer des
Pakets nicht in dem Fenster gefunden wird, dann wird die neue Sequenznummer
dem Fenster hinzugefügt. Das
Fenster oder „Rückweisungsfenster" wird periodisch
gereinigt, um Paketnummern zu beseitigen, die hinter einem bestimmten
Datum liegen, je nach der auf der Kommunikationslink verwendeten
Zeit. Der Paketrückweisungsfenster-Algorithmus
schützt
effizient vor einem mehrmaligen Empfang identischer Pakete, was
bei zuverlässigen
meldungsorientierten Transportprotokollen auf der Basis von Neusendung/Zeitabschaltung
häufig
auftreten kann.
-
DATP-Meldungen
werden auf der Basis von Fernhost-Speicherbedingungen gesendet.
Jedes quittierte Paket einer DATP-Meldung enthält ein Speicher-verfügbar-Feld, das den aktuellen
Speicherzustand der empfangenden Entität anzeigt. Wenn DATP zum Senden
einer Meldung zu einem Peer verwendet wird, dann prüft ein Fernobjekt
zunächst,
ob die DATP-Meldung kleiner ist als die in der empfangenden Entität verfügbare Speicherkapazität. Wenn
an der empfangenden Entität
die verfügbare Speicherkapazität zum Empfangen
der Meldung ausreicht, dann werden die Fragmente der DATP-Meldung
zum empfangenden Host gesendet. Nach dem Empfang der Meldung bestätigt der
empfangende Host den Empfang der Meldung. Ansonsten sendet der sendende
Host Steuerpakete zum empfangenden Host, um die Speicherverfügbarkeit
des Fern- oder Empfangshost abzufragen. Bei Bedarf kann auch eine
Teillieferung auf der Basis der verfügbaren Speicherkapazität implementiert
werden, bei der nur ein. Teil einer Meldung gespeichert wird. In
diesem Fall werden die Teilmeldungen bis zum Abschluss gecacht.
Die Steuerpakete werden gesendet, bis ausreichend Speicherkapazität in der
Fernentität
verfügbar
ist oder bis die Höchstzahl
der Meldungsneusendeversuche überschritten
ist. Wenn die Höchstzahl
der Neuversuche überschritten
ist und am empfangenden Host immer noch nicht genügend Speicherkapazität verfügbar ist,
um die Meldung vollständig
zu senden, dann verläuft
die Meldungsübertragung
erfolglos (es sei denn, dass eine Teillieferung der Meldung möglich ist).
-
Das
DATP-Protokoll ist ein meldungsgestütztes Protokoll, bei dem eine
Entität
eine Meldung mit einer Liefergarantie zur anderen Entität sendet.
Jedes Mal, wenn die STB eine Meldung zum Service-Gateway sendet,
dann empfängt
sie eine Bestätigungsmeldung,
wenn die Meldung ihr Endziel erreicht hat (das Service Gateway selbst
oder ein Applikationsserver). Wenn ein Applikationsserver die Meldung
verarbeitet hat, kann eine Antwortmeldung zur STB gesendet werden,
vorausgesetzt, die STB-Session mit dem Service Gateway ist noch
offen. Der DATP-Meldungsübertragungsphase
geht eine DATP-Login-Phase voraus und es folgt ihr eine DATP-Logout-Phase,
die zum Herstellen einer DATP-Session nötig wird. Es ist wichtig zu
bemerken, dass durch DATP gesendete Meldungen zu DATP-Paketen von
höchstens
MTU (Medium Transmission Unit) Bytes fragmentiert werden, die unabhängig gesendet
und bestätigt
werden. So können DATP-Meldungen
so groß sein,
wie dies DATP-Entitäten physisch
verkraften können. 9 zeigt
ein einfaches Beispiel für
eine DATP-Session.
-
DATP
unterstützt
mehrere Sessions auf derselben STB-Transportschicht-Verbindung. STB-Clients
können
mitten in einer offenen Session mit den Service-Gateway-Login Pakete zum Starten einer neuen
Session auf derselben exakten STB-Transportlink senden, die für die erste
Session verwendet wurde. Beide DATP-Session-Management-Module im STB-Client und
im Service Gateway sind für
das Multiplexieren der verschiedenen Session-Meldungen auf derselben
Link verantwortlich.
-
Zum
Unterstützen
der Übertragung
großer Meldungen
mit DATP greift das DATP auf einen Paketfragmentierungs/-rekonstruktionsansatz
zurück. Große Meldungen
werden in kleinere DATP-Pakete von höchstens MTU-Größe fragmentiert.
Jeder Host hat eine MTU-Größe und jede
DATP-Entität
kann eine andere haben. Jedes Fragment (DATP-Paket) einer DATP-Meldung
wird separat bestätigt.
-
Eine
DATP-Meldung mit „kürzlich" benutzter Sequenznummer
wird abgelehnt, um „Mehrfachempfang
identischer Fragmente" von
Wettlaufbedingungen zu vermeiden. Um diese Richtlinie zu implementieren,
führen
DATP-Hosts ein Gleitfenster mit kürzlich benutzten (Sequenznummer,
Fragment-ID) Einträgen
mit einem Zeitstempel auf jedem Eintrag in dem Fenster. Alte (Sequenznummer,
Fragment-ID) Einträge
werden aus dem Fenster eines DATP-Hosts beseitigt, wenn sie älter als (host_max_retry+1)*host_timeout
sind.
-
Eine
DATP-Fragmentgrößenvorgabe
(d.h. MTU-Größe) ist
auf 4 KB begrenzt, um begrenzte STB-Umgebungen zu berücksichtigen,
wo Speicherfragmentierung von Belang ist. Die Fragmentgröße kann
im Ermessen der Applikation auf maximal 64 KB erhöht werden.
-
DATP
unterstützt
bis zu 65536 Fragmente pro DATP-Meldung. Dies ergibt eine maximale
theoretische Meldungsgröße von 4
GB. Das erste Fragment einer DATP-Meldung gibt einen Marker, der anzeigt,
dass das Fragment ein erstes Fragment einer neuen Meldung ist, und
sein Fragmentidentifikations-(ID) Feld wird auf die Zahl der Fragmente
gesetzt, aus denen sich diese DATP-Meldung zusammensetzt.
-
Unvollständige DATP-Meldungen
sollten nach (host_max_retry+1)*host_timeout aus Fernentitäten gelöscht werden.
-
DATP
bietet Verschlüsselung,
um es Applikationen zu ermöglichen,
vertrauliche Daten zurück zu
ihren jeweiligen Applikationsservern zu senden. Die Bereitstellung
von Verschlüsselung
auf der Transportebene adressiert das Problem des Bereitstellens
von Verschlüsselung
in der verarbeitungskapazitätsarmen
STB- oder Client-Umgebung. Somit wird Verschlüsselung mit einem sorgfältig ausgelegten
Verschlüsselungsansatz
und einer bevorzugten DATP-sicheren API adressiert. Sicherheit/Verschlüsselung
wird auf einer Session-Ebene bereitgestellt. Applikationen öffnen eine
sichere Session über
eine DATP-sichere API. DATP-Verschlüsselungsparameter werden beim
Session-Login negoziiert. Eine sichere Session-Negoziation wird
in wenigstens zwei Phasen bereitgestellt: während einer standardmäßigen DATP-Login-Phase
und während
einer Key-Negoziationsphase.
-
Es
folgt eine kurze Beschreibung der Hauptschritte der Key-Negoziationsphase.
Der DATP-Server sendet seinen Public-Key server_epk zu einem Client
oder einer STB. DATP verwendet vorzugsweise Rivest, Shamir & Adleman (Public-Key-Verschlüsselungstechnologie)
RSA (es können
auch andere verwendet werden). DATP verwendet den RSA-Exponent server_epk
= (e, n) so, dass e=3 oder größer ist,
während
ein robustes Sicherheitsniveau gewahrt bleibt (Sicherheit hängt nur
von n ab). Da die STB zum Verschlüsseln einer Meldung mit RSA
(me) mod n berechnen muss, bedeutet ein
kleines „e", dass die Potenzierungsphase
klein ist, was die Berechnung der verschlüsselten Meldung beschleunigt.
Die STB oder der Client initialisiert ihren seinen Zufallsgenerator
mit der Systemzeit plus einer eventuellen Zufallsquelle, die der
O- Code-Schicht zur
Verfügung
steht (Beispiel: aktueller Video-Frame usw.). Die/der STB/Client
holt einen STB/Client-Secret-Key (stb_sk). Die STB verschlüsselt den
Secret-Key stb_sk mit server_epk mittels RSA. Die STB sendet den
verschlüsselten
Secret-Key stb_sk zum DATP-Server. Der DATP-Server entschlüsselt den verschlüsselten
stb_sk mit seinem Private-Key server_dpk.
-
Der
DATP-Server (z.B. SGW) initialisiert seinen Zufallsgenerator und
nimmt einen Server-Secret-Key server_sk. Der DATP-Server (z.B. SGW)
verschlüsselt
server_sk mit stb_sk mit einem Secret-Key-Verschlüsselungsansatz.
Der DATP-Server sendet den verschlüsselten server_sk zum DATP-Server.
Die STB entschlüsselt
den verschlüsselten
server_sk mit ihrem Secret-Key stb_sk. Nach erfolgreichem Austausch
der Keys können
verschlüsselte
Geheimdaten zwischen den beiden Entitäten über DATP mittels der Secret-Keys
der jeweils anderen Entität
ausgetauscht werden. In einer bevorzugten Ausgestaltung kommt ein
DATP-Server-Authentifizierungsschritt zum Protokoll hinzu, um den Key-Austauschansatz
zu erweitern und ihn gegen „Mittelmann"-Attacken robust
zu machen. So sieht das DATP-Protokoll die Signierung von DATP-Stacks und
die Verwaltung von Authentifizierungszertifikaten vor.
-
Um
die Kommunikationszeit mit SGW minimal zu halten, wird der Public-Key
des Servers vorzugsweise so in dem Stack eingebettet, dass die Verschlüsselung
des STB-Private-Key offline erfolgen kann. Dies wirft eine neue
Key-Management-Problematik
auf, da der DATP-Server den Server-Public-Key kennen muss, der von
der STB oder dem Client verwendet wird. Über eine sichere Session gesendete
Meldungen werden vorzugsweise auf der Fragmentebene verschlüsselt. Dies
bedeutet, dass jedes einzelne Fragment einer DATP-Meldung unabhängig verschlüsselt wird.
-
Einer
DATP-sicheren API wird die Fähigkeit verliehen,
unverschlüsselte
Meldungen über
eine sichere DATP-Session zu senden, so dass die SP-Applikationen
die Option haben, CPU-Zyklen einzusparen, indem sie über eine
sichere Session gesendete unvertrauliche Daten nicht verschlüsseln. Dies
ist für Clients
oder STBs mit begrenzter Verarbeitungsleistung, wie z.B. Motorola
DCT 2000, nützlich.
-
Nach
dem Herstellen einer sicheren Session zwischen einem DATP-Server
und einem/r DATP-Client oder -STB werden von dem/der Client/STB
zu einem Applikationsserver gesendete Meldungen zunächst im
DATP-Server (z.B. SGW) entschlüsselt und
dann über
eine SSL-(Secure Socket Layer)-Verbindung zu Applikationsservern
weitergeleitet. Die Verschlüsselungsschicht
basiert auf einer kryptografischen Bibliothek, die O-Code- und Applikationsserver-Entwicklern
zur Verfügung
steht. Diese Bibliothek kann von Applikationen zum Verwalten von
Verschlüsselung
auf Applikationsebene verwendet werden. Diese Fähigkeit könnte beim Verwalten von End-zu-End-Verschlüsselung
für Sicherheit
in kritischen Applikationen wie solchen im Bankwesen nützlich sein.
-
Datenkompression
auf langsamen Links wie z.B. den auf den meisten STBs und Clients
(2400 bis 33.600 bps) es ist wünschenswert,
um zum Erhöhen des
Gesamtdurchsatzes der Leitung komprimierte Daten zu senden [sic].
In einigen Fällen
steht Modemdatenkompression auf OSI-Link-Ebene zur Verfügung. Protokolle
auf höheren
Ebenen können durch
Komprimieren ihrer Nutzdaten nicht merklich profitieren. Eine große Zahl
von Client/STB-Modems bieten keine Kompression auf der Link-Ebene,
daher wird Kompression durch Protokolle auf höherer Ebene bereitgestellt.
Die vorliegende Erfindung bietet Datenkompression auf DATP-Server-Ebene.
-
Die
Herausforderung besteht darin, dass STBs oder Client-Prozessoren
nicht die nötige
Kapazität
haben, um effiziente Mustersuchläufe
(oder andere CPU-intensive Operationen) auszuführen, die die meisten Kompressionsalgorithmen
benötigen. Dekompression
ist jedoch eine relativ leichte Aufgabe und es werden für die Clients/STBs
auf O-Code-Ebene Dekompressions-APIs vorgesehen. Auf der Basis dieser Überlegungen
ist der DATP-Support für
Kompressions asymmetrisch, d.h. es wird vorzugsweise nur die Downlink
vom DATP-Server zur STB oder zum Client mit standardmäßigen SP-Kompressionstools
komprimiert.
-
Komprimierte
DATP-Pakete haben einen „Daten
komprimiert" Flag
im Paket-Header,
der angibt, dass die Nutzdaten komprimiert sind. Paket-Header werden
nicht komprimiert. Kompression und Dekompression erfolgen mit standardmäßigen SP-Kompressions- und
-Dekompressionstools und APIs. Die DATP-Paketgröße gibt die Größe der komprimierten
Nutzdaten an. Die dekomprimierte Größe der Nutzdaten wird im Kompressions-Header
der Nutzdaten angegeben. Die Kompression von DATP-Meldungen erfolgt
auf der Fragmentebene. Jedes einzelne DATP-Paket einer DATP-Meldung wird unabhängig komprimiert.
Dies wird deshalb bevorzugt, weil DATP-Meldungsfragmente beim Empfang nicht
unbedingt zusammenhängend
gespeichert werden, daher wird bevorzugt, dass DATP jedes Fragment
separat dekomprimiert. Eine unabhängige Dekompression ist deshalb
möglich,
weil jedes DATP-Fragment unabhängig
komprimiert wird. Der DATP STB Stack und die DATP-Applikationsserver-API können Datenkompression
auf der Downlink sperren oder freigeben. Diese Funktion verleiht
Applikationsservern wenigstens zwei wichtige Fähigkeiten, die Fähigkeit
zum Übertragen
großer
Datenmengen zu Clients oder STBs unter Verwendung des schnellen
Broadcast-Kanals und die Fähigkeit,
Multicast-Daten zu mehreren Clients oder STBs durch den Broadcast-Kanal
zu senden, wodurch SP-Gesamtbandbreite eingespart wird.
-
Der
DATP-Server stellt ein Open Streamer Applikationsservermodul bereit,
das eine konfigurierbare Anzahl von Broadcast-Strömen verwaltet.
Diese Ströme
werden zum Senden größer Datenblöcke sowie
von Multicast-Daten zu Clients und/oder STBs verwendet. Multicasting
wird als ein Merkmal bereitgestellt, das als Routing über Broadcast
wichtig ist, da dadurch Applikationsserver Daten zu einer Gruppe
von STBs senden können,
ohne jede STB individuell zu adressieren. Multicast-Unterstützung in DATP
bietet unzuverlässige
DATP-Pakete. Die SP führt
die Multicast-Gruppenliste von Session-Kennungen und handhabt Fälle, bei
denen ein(e) STB oder Client ohne verfügbaren Broadcast-Tuner zu einer
Multicast-Gruppe gehört.
-
Der
DATP Name Service (DNS) bietet Mapping zwischen Applikationsservernamen
und Dienstekennungen. Gut bekannte Dienste haben zwar reservierte
Dienstekennungen, aber eine große Zahl
von benutzerdefinierten Dienstekennungen steht zur Verfügung und
kann von verschiedenen Applikationen verwendet werden. Um eine Festcodierung
von Dienstekennungen in STB- oder O-Code-Applikationen zu vermeiden, haben
Applikationen die Fähigkeit,
sich nach einer Namensauflösungsstufe
mit Namen auf Dienste zu beziehen. Auf diese Weise ist die Applikation
weniger abhängig
von der SGW-Konfigurationsdatei.
-
Es
folgt eine Beschreibung davon, wie DATP-Clients DNS-Fähigkeiten
verliehen werden. DNS wird vom Standpunkt des DATP-Protokolls aus einfach
als ein anderer Dienst angesehen. Eine spezielle Dienstekennung
wird für
den DNS-Dienst reserviert. Der DNS-Dienst wird im SGW gehostet oder kann
an anderer Stelle in der SP oder in einer STB oder in einem anderen
Client gehostet werden. Der DATP-Client bietet eine einfache API
zum Auflösen von
Namen von Applikationsservern. Vorzugsweise gibt der Hauptruf (datp_get_asid_by_name (as_name))
synchron eine Anforderungsnummer zurück. Eine asynchrone Avisierung
gibt im Erfolgsfall den Status der Namensauflösung einschließlich der Applikationsserverkennung
zurück.
Konkurrierende Namensauflösungen
sind ohne signifikante Leistungsbeeinträchtigungen möglich. Benutzer
können Namensserver-Avisierungen
auf der Basis einer an jede Anforderung angehängte Anforderungskennung versenden.
Der Namensparameter der Applikationsserver wird der aktuellen DNS-Konfigurationsdatei hinzugefügt. Es darf
für unterschiedliche
Dienstekennungen nicht derselbe Name verwendet werden. Zum Erzielen
von Redundanz oder zum Erfüllen
von Skalierbarkeitsanforderungen wird die Registrierung mehrerer
Maschinen pro Dienstekennung unterstützt.
-
In
der bevorzugten Implementation wird DNS als eine Instanz eines noch
zu definierenden Verzeichnisdienstes angesehen. Das DNS-Anforderungspaketformat
umfasst die folgenden Felder: Query Type (gibt den Abfragetyp an
(z.B. 0 für DNS-Abfrage)), Query
Tag (vom Benutzer gegebenes Etikett, das mit Verzeichnisdienst-Antworten zu vergleichen
ist), Query Data (Daten, die zum Ausführen der Abfrageoperation verwendet
werden (typischerweise der Name des Dienstes für DNS)). Das DNS-Antwortpaketformat
umfasst die folgenden Felder: Answer Type (gibt den Antworttyp an
(0 für
DNS ist OK)), Answer Tag (dasselbe wie das Abfrageetikett, das die
Antwort erzeugt hat) und Answer Data (Antwortdaten auf die Abfrage
(typischerweise die ID des Dienstes für DNS)).
-
In
einer alternativen Ausgestaltung von DATP wird angenommen, dass
sich alle DATP-Clients hinter einem Modemeinschub befinden und der Modemeinschub-Anschlussserver für jeden
angeschlossenen Client eine dedizierte TCP/IP-Verbindung mit dem
SGW öffnet
und alles weiterleitet, was er von einer bestimmten STB zu dieser
TCP-Verbindung empfängt.
Mit der möglichen
Verwendung in Kabelkästen älterer Generationen
ohne TCP/IP-Support, aber mit User Datagram Protocol (UDP) bietet der
DATP-Server (z.B. SGW) die Fähigkeit,
auf einen UDP-Port zu horchen. UDP wird wie folgt unterstützt. Auf
dem Server wird eine neue datp_socket_listener Klasse zum Handhaben
von UDP-Verbindungen erzeugt. Eine Abstraktionsschicht des Socket-Typs wird
zum Aufnehmen von UDP-Sockets (PAL_udp_socket) erzeugt.
-
UDP-Verbindungen
werden wie folgt verarbeitet. UDP_listener liest das neue Anschlussanforderungs-Datagram
und erzeugt einen neuen AL_udp_socket. UDP_listener antwortet auf
die Verbindung und sendet das Datagram mittels des neu erzeugten
PAL_udp_socket. UDP_listener erzeugt einen neuen Session-Manager-Thread und
leitet den neu erzeugten PAL_udp_socket als Attribut. Der neue Session-Manager
antwortet dem DATP-Client direkt mittels pal_udp_socket_send mit
dem bereitgestellten PAL_udp_socket. Man beachte, dass die Fernadresse
des Datagram nicht vorgegeben zu werden braucht. Sie wird bereits
vom UDP_listener beim Beantworten der Verbindungsanforderung eingestellt.
-
Auf
der Client-Seite wird ein UDP stb_transport Modul erzeugt, das die
bereits vorgegebene stb_transport API auf jeder UDP API implementiert,
die in der/dem angepeilten STB oder Client verfügbar ist. Dieses UDP stb_transport
sendet vorzugsweise ein Verbindungsanforderungs-Datagram zum SGW
UDP Listener Port und wartet, bis es eine Antwort vom SGW erhält, bevor
es den DATP-Kern avisiert, dass die STB-Transport-Link steht. Nachfolgende
Datagrams werden über
den Port gesendet, der in der Verbindungsanforderungsantwort vom SGW
vorgegeben ist.
-
HTTP-Routing
ist vorgesehen, um eine Schnittstelle für das SGW mit standardmäßigen Applikationsservern
bereitzustellen, die Webserver als ihr Front-End verwenden. In diesem
Fall verwendet DATP vorzugsweise nicht die standardmäßige DATP-Applikationsserver-API,
die Applikationsserver-Entwicklern zur Verfügung steht, sondern schließt stattdessen
durch Weiterleiten von DATP-Meldungen zu ihrem Webserver-Front-End
mit dem HTTP POST (HTTPP) Mechanismus direkt an diese Applikationsserver
an. Bei diesem Ansatz verwenden Client- und/oder STB-Anwendungen die DATP
API, ohne zu wissen, dass sie mit einem HTTP-Server sprechen.
-
Um
HTTPP zu unterstützen,
ist ein DATP-Applikationsservertyp vorgesehen. Alle Server dieses
Typs erhalten einen zusätzlichen
Eintrag in der Namensserver-Konfigurationsdatei,
um ihre Post-URL-Adresse vorzugeben. Das Applikationsserver-Kommunikationsmodul
bietet die Fähigkeit, DATP-Meldungen
zu HTTP-Servern je nach dem angepeilten Servertyp zu posten. Dieses
Modul wird vorzugsweise in einen Applikationsserver-(AS)-Kommunikationsmanager
und zwei AS-Datensender unterteilt. Ein AS-Datensender sendet Daten
zu den mit DATP AS API kompatiblen Applikationsservern, ein anderer
sendet Daten zu HTTP-gestützten
Applikationsservern. Vom HTTP-Server empfangene HTTP-Cookies werden
im SGW gespeichert und nach Bedarf neu zum HTTP-Server gesendet.
Auf einer sicheren DATP-Session empfangene DATP-Meldungen werden
mit HTTPS zu HTTP-Servern weitergeleitet. DATP-Login und -Logout
sind vorzugsweise nicht anonym, um es zu ermöglichen, dass das SGW den Zugang
zu SP-interaktiven Diensten steuert und es Applikationsservern ermöglicht,
auf die Identität eines
angeschlossenen Client zuzugreifen.
-
Es
folgt eine weitere Beschreibung der STB- oder Client-Identifikation
als Teil von DATP. DATP-Stacks enthalten eine von STB oder Client
abhängige
eindeutige Hardware-Kennung (HID). Im Falle einer STB wird diese
Hardware-Kennung von der STB/Netzwerk-abhängigen STB-Transportschicht
abgerufen. Das HID-Format ist eine Zeichenfolge veränderlicher
Länge.
Die HIDs für
ein bestimmtes Netzwerk werden in einer HID-Liste gespeichert. Der
Netzwerkbetreiber aktualisert die HID-Liste über SP von seiner Kundendatenbank über APIs. In
dem Fall, in dem eine direkte Verbindung mit der Netzwerkbetreiber-Subscriber-Datenbank
nicht möglich
ist, importiert die SP die Subscriber-Informationen (einschließlich der
HID) von einer zweidimensionalen Datei.
-
Zum
Herstellen von DATP-Sessions beinhalten STB- oder Client-DATP-Stacks
ihre HID innerhalb des DATP-Login-Pakets. Das SGW prüft die Gültigkeit
der HID unter Verwendung eines zentralen Repository. Wenn das zentrale
Repository die HID bestätigt,
dann wird Zugang zum STB-Stack gewährt. Die HID ermöglicht es
dem SGW, die Identität
einer/s STB oder Client zu ermitteln. Ähnlich wie bei HTTP-Cookies,
authentifiziert eine HID eine(n) Fern-STB- oder -Client nicht „streng". So erfolgt eine formelle
Authentifizierung von Fernbenutzern vorzugsweise durch Anwendungen,
die eine robustere Authentifizierung ihrer Fern-Peers benötigen.
-
DATP
bietet LHTTP von HTTP-Funktionen zu O-Code-Applikationsentwicklern, die es ihnen
ermöglichen,
mit Fern-HTTP-Servern zu interagieren. LHTTP wird bereitgestellt,
um die Entwicklung von webähnlichen
HTTP-gestützten Applikationen
zu ermöglichen.
LHTTP erfüllt
die derzeitige H2O-Strategie, indem es eine OS-unabhängige vereinfachte HTTP-Schnittstelle
für Rückkanalkommunikationen zwischen
Client, Netzwerkbetreiber und Diensten bietet. Die LHTTP-Schnittstelle
basiert auf dem DATP-Stack und verkapselt HTTP-Anforderungen zu DATP-Meldungen. Eine
spezielle DATP-Dienstekennung wird der LHTTP-Schicht und den auf
dieser Dienstekennung empfangenen DATP-Meldungen zugewiesen, die
mittels eines speziellen LHTTP-Datensendemoduls im SGW zum Ziel-HTTP-Server geleitet
werden.
-
Es
wird vorzugsweise ein begrenzter Satz von HTTP-Befehlen unterstützt, der
GET- und POST-Befehle umfasst. Zusätzliche HTTP-Befehle können zum
LHTTP addiert werden. LHTTP-Anforderungen werden am SGW in echte
HTTP-Anforderungen transformiert. HTTP-Anforderungen erfolgen vom
SGW im Namen von LHTTP-Clients. Cookies werden zu LHTTP-Clients
weitergeleitet. SGW cacht die Cookies und führt eine Cookie-in-Session-ID-Umsetzungstabelle.
DNS beantwortet HID-Auflösungsanforderungen
von HTTP-Servern mittels dieser Umsetzungstabelle. HTTP-Server verwenden
vorzugsweise die HID zum Extrahieren von Benutzerinformationen vom
Zentralregisterserver. LHTTP bietet auch eine sichere API, LHTTPS.
Diese API basiert auf der DATP-Verschlüsselungsschicht. LHTTPS-Anforderungen
werden am SGW automatisch in HTTPS-Anforderungen umgesetzt.
-
SMTP-(Simple
Mail Transfer Protocol)-Routing oder einfache Weiterleitung von
Meldungen per Email werden einer Schnittstelle zwischen dem SGW und
Applikationsservern bereitgestellt. Diese Schnittstelle kann für Nicht-Echtzeit-Transaktionen verwendet
werden, bei denen eine Applikation DATP-Meldungen zu SMTP-gestützten Applikationsservern sendet,
und diese Meldungen per Email zu den angepeilten Applikationsservern
weitergeleitet werden.
-
Um
SMTP-Routing zu unterstützen,
wird ein DATP-Applikationsservertyp für SMTP-Applikationsserver erzeugt.
Server dieses Typs haben zusätzliche
Einträge
in der Namensserver-Konfigurationsdatei zum Vorgeben ihrer Email-Adresse
sowie des Email-Betreffs
von weitergeleiteten Meldungen. Das Applikationsserver- Kommunikationsmodul
postet DATP-Meldungen zu SMTP-gestützten Applikationsservern je
nach dem angepeilten Servertyp. Ein SMTP-Applikationsserver-Datensendemodul ist
vorgesehen, um diesen Transaktionstyp zu unterstützen. Zu SMTP-Applikationsservern
gesendete DATP-Meldungen werden an mehrteilige MIME-(Multipurpose Internet
Mail Extensions)-codierte Emails angehängt. Der erste Teil der Meldung
enthält
die Hardware-Kennungen der Sender sowie die DATP-Meldungs-ID der
weitergeleiteten Meldungen. Der zweite Teil der Meldung enthält MIME-codierte DATP-Meldungen.
-
Zu
einem SMTP-Applikationsserver gesendete DATP-Meldungen werden bestätigt, wenn
sie von einem Session-Manager decodiert wurden und zum Senden zum
angepeilten Applikationsserver per Email bereit sind. Nachfolgende
SMTP-bezogene Fehler könnten
auftreten, wenn das SGW versucht, die DATP-Meldung per Email zum
angepeilten Applikationsserver zu liefern. Mit der DATP-Verschlüsselungsschicht
gesendete Meldungen würden
unverschlüsselt
zum End-Host weitergeleitet. Auch PGP-Verschlüsselung wird unterstützt, um DATP-Meldungen
sicher über
SMTP zu leiten.
-
Der
DATP-Speicher- und Weiterleitungsdienst bietet Funktionen für Applikationen
zum Senden von Nicht-Echtzeitmeldungen zu einem bestimmten Applikationsserver.
Eine Speicher- und Weiterleitungsbibliothek ist auf DATP vorgesehen. Die
Applikation verwendet das Speicher- und Weiterleitungsmodul zum
Senden von Meldungen mit unterschiedlichen Zeitbeschränkungen
je nach. ihren Bedürfnissen.
Zeitbeschränkungen
variieren von „so bald
wie möglich", „eine bestimmte
Zeit", „ein(e)
bestimmte(s) Auftreten, Event oder Meldung" bis „sobald wir angeschlossen
sind" einschließlich „nach einer
zufälligen
Zeitperiode".
-
Das
Speicher- und Weiterleitungsmodul speichert ungelieferte DATP-Meldungen
im Dateisystem zusammen mit einigen speziellen Attributen (Zeitstempel,
Zeitbeschränkungen,
angepeilte AS-Kennung usw.). Der Dateisystemspeicherpfad ist wenigstens
zur Kompilationszeit für
ein bestimmtes Netzwerk konfigurierbar. Meldungen, die nicht weitergeleitet
werden, während
eine bestimmte DATP-Speicher- und
Weiterleitungs-enabelte Applikation läuft, werden erst dann weitergeleitet,
wenn eine andere Speicher- und Weiterleitungs-enabelte Applikation
startet. Das Speicher- und
Weiterleitungsmodul verändert
den Inhalt der weitergeleitetetn DATP-Meldung nicht. Die Meldung
wird ohne Veränderung
zum angepeilten Applikationsserver weitergeleitet.
-
4 zeigt
die DATP-Architektur des Client-Stack, der mehrere Module umfasst.
Die Module unter der Linie 1121 sind im Client-Nativcode
geschrieben, Module über
der Linie 1121 sind in O-Code geschrieben. Das Lightweight-HTTP-Modul 1106 bietet
Lightweight-HTTP-Fähigkeiten
für O-Code-Applikationen.
Es wird auf der DATP API implementiert. Das Speicher- und Weiterleitungsmodul 1108 bietet Speicher- und Weiterleitungsfähigkeiten
für O-Code-Applikationen.
Es wird auf der DATP API implementiert. Das DNS-Modul 1110 nutzt
das DATP-Meldungsmanager-Modul 1104 zum Leisten von DATP-Namensauflösungsdiensten.
Das DATP-Meldungsmanager-Modul 1104 ist
das Front-End von DATP. Alle DATP-meldungsbezogenen API-Rufe gehen
durch das DATP-Meldungsmanager-Modul. Dieses Modul unterteilt Meldungen in
DATP-Pakete und rekonstruiert DATP-Pakete zu Meldungen. Das DATP-Transportkernmodul 1102 verwaltet DATP-Sessions,
sendet und empfängt
DATP-Pakete und verwaltet DATP-Modulempfang von Broadcast. Das DATP-sichere
Transporterweiterungsmodul 1120 handhabt sichere DATP-Sessions.
Die DATP-Paketbibliothek 1134 bietet
die Funktionen zum Lesen (Parsen) und Schreiben (Komponieren) von
DATP-Paketen zum DATP STB Transportmodul 1132 auf der Basis
der DATP-Paketformatspezifikation. Nach dem Lesen eines vollständigen DATP-Pakets
avisiert dieses Modul den DATP-Transportkern mit dem geparsten DATP-Paket.
-
Die
DATP-Broadcast-Bibliothek 1126 horcht auf gewählte SP-Ströme auf der
Basis der Spezifikationen des DATP-Transportkerns 1102 und
wartet auf Module, die für
eine(n) bestimmte(n) STB oder Client bestimmt sind, und avisiert
den DATP-Transportkern 1102 mit
den geparsten DATP-Modulen. Das DATP STB Transportmodul 1132 bietet
eine Paketschnittstelle auf Link-Ebene auf der nativen Transport-
oder Daten-Link, die auf dem DATP-Host verfügbar ist. Der Event-Loop-Stub 1116 bietet
eine Stub-Version der in der DATP-Portabilitätsschicht vorgegebenen Meldungs-API.
Dieser Stub basiert auf dem Event-Loop der gemeinsamen Bibliothek.
Die Rolle der Portabilitätsschicht 1114 besteht
darin, den DATP-Stack von applikationsabhängigen Belangen wie Meldungsversandmechanismus,
Verschlüsselungs-APIs
usw. zu abstrahieren. Der kryptografische Bibliothek-Stub 1118 ist
eine Stub-Version der in der DATP-Portabilitätsschicht vorgegebenen kryptografischen
API. Dieser Stub basiert auf dem gemeinsamen Bibliotheksverschlüsselungspaket.
Der Modul-Lib-Stub 1124 ist eine Stub-Version der in der DATP-Portabilitätsschicht
vorgegebenen Multitrack-Modul-Download-API.
Dieser Stub basiert auf dem Multitrack-Modul-Download-Paket der
gemeinsamen Bibliothek.
-
6 zeigt
DATP als Bestandteil des Digital TV Application Protocol (DAP).
DAP/DATP ist in 6 dargestellt. DAP wird zum
Standardisieren von Rückkanalkommunikationen
zwischen SP-Applikationen und SGW verwendet. DATP und SGW bieten einen
generischen virtuellen Transportmechanismus zu SP-Applikationen, da
nicht alle SP-enabelten STBs eine TCP/IP-Stack-Erweiterung bieten.
Außerdem
können
einige der STBs ihren eigenen proprietären Stack haben oder überhaupt
keinen Kommunikationsstack bereitstellen.
-
DAP
ist eine einfache leichtgewichtige Applikationsprotokollsuite. Der
Hauptzweck von DAP besteht darin, eine einfache und wirksame Weise
zu bieten, um existierende Applikationsprotokolle wie POP3, SMTP,
IMAP (Internet Message Access Protocol) und andere an Low-End-STBs
anzupassen. STBs haben häufig
kapazitätsarme
Verarbeitungsressourcen und/oder proprietäre Kommunikationsprotokolle.
DAP ist zum Abstrahieren von Kommunikationskomplexität von den
Applikationsanbietern ausgelegt, so dass wiederum existierende Netzwerkinfrastruktur
an heutige Applikationsstandards angepasst wird.
-
Gemäß 6 ist
DAP in zwei Teile unterteilt: DAML 1610 – Digital-TV-Applikations-Metasprache, und
DATP 1620 – Digital-TV-Applikationstransport-Protokoll. DAML 1610 ist
eine Metasprache, die viele SP-Applikationen überspannt. Jede SP-Applikation
hat ihre eigene DAML-Domäne.
Die Client-Applikation antwortet auf in einer DAML-Domäne verkapselte
Meldungen und fordert sie an. Diese Anforderungsmeldungen werden
von Applikationsservern in das geeignete Protokoll für existierende
Applikationen wie SMTP oder IMAP umgesetzt.
-
DATP 1620 ist
ein leichtes, einfaches Transportprotokoll für bandbreitenarme Applikationen, wenn
TCP/IP oder andere bekannte Protokolle nicht zur Verfügung stehen.
DATP ist für
eine Verbindung mit existierenden Kommunikationsprotokollen in derzeitigen
STBs ausgelegt. DAP umfasst Folgendes: DATP, DAML-Mail (XML-Domäne für Mail); DAML-Regi
(XML-Domäne
für Kontoregistrierung); und
DAML-Acct (XML-Domäne für den Zugriff
auf SP VMS/AMS-System).
-
Typische
STBs basieren auf einer Thin-Client-Architektur, d.h. sie besitzen
minimale Verarbeitungskapazität.
Die von heutigen STBs bereitgestellten Dienste sind häufig „unintelligente" Low-End-Applikationen.
Heutige ressourcenintensive Applikationen wie Email, Chat und Internet-Browser
benötigen leistungsstärkere Verarbeitungsgeräte. Heutige STBs
können
diese Art von Verarbeitungsleistung nicht bieten, daher die Notwendigkeit
für ein
leichtes Low-End-Applikationsprotokoll. DAP ist einfach genug, um
die Client/Server-Netzwerkkomplexität vom Applikationsentwickler
zu verbergen oder zu abstrahieren.
-
DAP
ist modular, flexibel und an zukünftige Software-Architekturen
anpassbar. Hierbei könnte
es sich entweder um ein auf der Common Object Request Broker Architecture
(Object Management Group) (CORBA) basierendes Modell oder um ein Common
Object Module (COM)/Distributed Component Object Module (DCOM) Modell
handeln. DAP ist flexibel genug, um existierende Fremd-Legacy-Systeme
aufzunehmen und zu integrieren. DAP bietet eine Schnittstelle zu
verschiedenen offenen und proprietären Protokollen. Diese Protokolle
gibt es für Dienstesysteme,
bei denen der PC der Haupt-Client ist, z.B. IMAP oder POP3 Dienste.
DAP beeinflusst die SP-Middleware-Technologie.
DAP-Serverware setzt das DAP-Protokoll in existierende applikationsspezifische
Protokolle um.
-
DAP
und sein Bestandteil DAML 1610 sind leichtgewichtig ausgelegt
und in der Lage, bandbreitenempfindliche Low-End-STBs zu unterstützen. DAML-Etiketten
sind vorzugsweise nicht größer als
4 Zeichen und nach Möglichkeit
auf 2 oder 3 Zeichen begrenzt. DAML beinhaltet binäres XML
zum Erleichtern von DAML-Etiketten. DAP wird als Kommunikationsprotokoll
zwischen Applikationen verwendet, die auf der STB und Service-Subsystemen
laufen. DATP 1620 steuert Kommunikations-Handshaking, Routing und
transportspezifische Authentifizierung, während DAML die applikationsspezifischen
Anforderungen verwaltet. DAML-Anforderungen und -Antworten werden
zwischen einem STB-Client und einem Diensteanbieter über ein
existierendes Kommunikationsprotokoll wie z.B. TCP, UDP, DATP oder
ein proprietäres
Kommunikationsprotokoll übermittelt.
-
Das
DAP-Protokoll und sein Bestandteil DAML können eine sessionorientierte
oder „sessionlose" Protokoll-Suite
sein. DAML-Domänen
sind applikationsabhängig.
Neue Domänen
des DAP-Protokolls können
für neue
Applikationstypen verwendet werden. Das Hinzukommen neuer DAP-Domänen hat
nur wenig Einfluss auf existierende DAP-Domänen. So bietet DAP eine eindeutige
und simple SP für Netzwerkbetreiber
zum Hinzufügen
zusätzlicher Dienste,
ohne existierende Dienste zu beeinträchtigen. Jede DAML-Domäne kann
entweder auf einem einfachen, vom Menschen lesbaren Etikett oder
einem kryptisch abgekürzten
Etikett zum Erhöhen
der Protokollleistung durch Verringern der Paketgröße basieren,
wenn Leistung ein kritischer Faktor ist.
-
Nachfolgend
wird die Rolle von DAML in der DAP-Architektur umrissen. DAML ist
ein Kommunikationsprotokoll auf Applikationsebene, das zum Vorgeben
von Kommunikationsverhalten und Kommunikationsdaten für interaktive
Fernsehdienste benutzt wird. Das Kommunikationsprotokoll auf Diensteebene
liegt über
dem Transportebenenprotokoll. Es definiert, wie der applikationsspezifische
Inhalt zwischen Client/Server-Kommunikationen verkapselt wird.
-
DAML
ist eine Sammlung von domänenspezifischen
Protokollen, die ein modulares Design der SP ermöglicht. So ist beispielsweise
DAML-Mail ein Bestandteil von DAP. DAML-Mail ist ein Maildomänen-spezifisches
Protokoll. Neue domänenspezifische
Protokolle können
als Bestandteil von DAP einfach durch Erzeugen neuer DTDs hinzugefügt werden.
DAP gibt das Kommunikationsverhalten durch das Senden und Empfangen
von DAP-Meldungen vor. Die applikationsspezifischen Daten werden
in einem XML-Format verkapselt. Die Syntax jeder XML-Applikationsdomäne gibt
die Aktionen vor, die die Applikationsserver ausführen sollen.
So können äußerst leichte
und einfache Protokolle entworfen werden, die heutige STBs für eine Verbindung
mit existierender Infrastruktur wie SMTP-Diensten und IMAP-Diensten
nutzen können.
-
DATP
ist ein Protokoll auf Transport/Dienste-Ebene, das eine Kommunikationsplattform
zwischen SGW und mehreren STBs oder Clients bietet. DAML ist in
einem DATP-Paket verkapselt. Protokolle auf Diensteebene liegen
im Allgemeinen über Transportprotokollen,
aber DATP ist dahingehend einzigartig, dass es in einem typischen
Netzwerkmodell entweder auf Service-Ebene, Datenlink-Ebene oder
Transportebene sitzen kann. Dies macht DATP sehr flexibel. DATP
hat Verbindung mit den zu Grunde liegenden Transportprotokollen
wie TCP, UDP, X.25, Raw Sockets oder anderen Protokollen.
-
SGW
bietet Routing- und SGW-Technologie für Low-End-STBs, die mit einer
Netzwerk-Backend-Infrastruktur verbunden werden sollen. SGW bietet
Protokollunterstützung
auf Transportebene zwischen STB/Clients und SGW, z.B. ein Sequential-Stream-Protokoll über Raw-Sockets.
DAML beeinflusst dieses Merkmal.
-
DAML-Mail
ist ein Protokollteil von DAP. DAML-Mail ist ein Maildomänen-spezifisches Protokoll.
Dieses Protokoll dient zum Verbinden von STBs mit IMAP-, POP3- und
SMTP-Diensten. DAML-Regi ist ein DAP-Servicedomänen-Protokoll, das eine generische
Methode für
die Registrierung von Konten für
mehrere Dienste vorgibt. DAML-Regi ist ein einfaches Protokoll zwischen
einer STB und dem Registrierungsserver. Dies ermöglicht komplexe Interaktionen
zwischen einer STB und einer Reihe verschiedener Applikationssysteme,
mit nur einem einzelnen Integrationspunkt, dem Registrierungsserver.
-
DAML-Acct
ist ein DAP-Servicedomänen-Protokoll,
das mit der SP VMS/AMS Datenbank kommuniziert. DAML-Acct ermöglicht es
der/dem STB/Client, benutzerspezifische Daten vom VMS/AMS-System
abzufragen und zurückzusenden. Alle
DAML-Domänen
werden mit XML-Dokumenttyp-Definition-(DTD)-Syntax definiert. DTDs
beschreiben die Meldungssyntax, aber nicht die Logik für den Austausch
von Anforderungen und Antworten. XML ist zum Definieren der Auszeichnung
eines Textblocks nützlich.
Spezifische DAML-Anforderungen und -Antworten sind aufeinander bezogene
Interaktionen. Die Regeln für
ihre Interaktion werden in der STB und Applikationsserver-Komponenten
modularisiert.
-
Der
Messaging-Manager bietet verschiedene Typen von Meldungskommunikationen
zwischen den Benutzern und mit Außenstehenden (solchen, die
keine Netzwerkdienste-Subscriber sind). Er ermöglicht es beispielsweise Benutzern,
Emails zu senden und zu empfangen, mit anderen Nicht-Subscribern
zu chatten und Sofortmeldungen von Nicht-Subscribern zu empfangen.
Der Email-Teil des Messaging-Managers
enthält
eine Fetchmail-Komponente, die mit einem Internet-gestützten Email-Server wie IMAP-,
POP3- und anderen Webmail-Meldungen für den geeigneten Mail-Hosting-Server verbunden
ist.
-
Fetchmail
verwaltet das gesamte SP-Server-seitige Mail-Management. Fetchmail
setzt DAP-Meldungen in IMAP-, POP3- oder Webmail-Meldungen für den geeigneten
Mail-Hosting-Server um. SGW leitet DAP-Mail-Meldungen zwecks Verarbeitung
zu „Fetchmail". Fetchmail reagiert
mit der richtigen Antwort auf die Anforderung. Fetchmail schließt an IMAP-Server
an. Eine Email-Applikation wird von der SP bereitgestellt. Alle SP-Applikationen
können
Email über
den vom SGW geleisteten Email-Dienst ,senden'.
-
Der
Chat-SP-Dienst schließt
an einen Chat-Server an oder beinhaltet alternativ einen Chat-Server.
Auf einen Chat-Dienst kann durch eine dedizierte Chat-Applikation
zugegriffen werden, aber auch von jeder SP-Applikation, die eine
Link mit der SP-Chat-Client-DLL
hat. Durch Bereitstellen einer Schnittstelle zwischen einem Chat
und einem Programmlisting kann ein Chatroom dynamisch mit einer Broadcast-Show
erzeugt werden. Applikationen und andere Dienste können den
SP-„Alert"-Dienst zum Auslösen von
STB-residenten Miniapplikationen verwenden. Alert nutzt die SP OMM Erweiterung
und Funktionalität
von Open Streamer. Der Email-Dienst verwendet Alert-Trigger zum Informieren
des Zuschauers über
eine eingehende Meldung.
-
10 beschreibt
die DATP-Verbindungszustandsmaschine. Diese Zustandsmaschine beschreibt
das Verhalten einer DATP-Session-Verbindungszustandsmaschine
von der STB-Client-Seite her. Eine Session muss im angeschlossenen
Zustand sein, bevor sie ein Datenpaket zum SGW sendet, und muss
nach einer Logout-Anforderung vom Client abgetrennt werden. 11 beschreibt
den Meldungssendezustand. Diese Zustandsmaschine beschreibt, wie
eine DATP-Entität
ein DATP-Datenpaket zu einer anderen DATP-Entität sendet. 12 beschreibt
die Meldungsempfangszustandsmaschine. Diese Zustandsmaschine beschreibt,
wie eine DATP-Entität
ein DATP-Datenpaket von einer anderen DATP-Entität empfängt. 13 beschreibt
die „Keep-Alive"-Zustandsmaschine.
Diese Zustandsmaschine beschreibt, wie eine DATP-Entität Ping-Pakete
benutzen soll, um zu gewährleisten,
dass eine DATP-Link mit der anderen Entität bestehen bleibt. Wenn es
sich herausstellt, dass die Link nicht mehr steht, dann wird ein
Logout eingeleitet.
-
SGW
-
Nun
mit Bezug auf 5, SGW beinhaltet mehrere Module
zum Unterstützen
von DATP-Merkmalen. Die SGW-Architektur ist eine Multiprozess-gestützte Architektur,
die Thread-Pools bereitstellt. Der gesamte Server läuft auf
einer asynchronen Version einer Plattform-Abstraktionsschicht (PAL).
Die PAL implementiert einen Meldungswarteschlangenprozess. PAL kommuniziert
mittels Meldungspassiertechniken. Wie 5 zeigt,
verwendet SGW drei Typen von Prozessen.
-
Wie
in 5 gezeigt, kommunizieren Applikationsserver oder
Dienste mit mehreren Clients/STBs durch das SGW über ein domänenspezifisches DAP-Protokoll.
In bestimmten Fällen
können Clients/STBs
sich direkt an die Applikationsdienste anschalten. Wenn beispielsweise
das Transportprotokoll zwischen der STB und dem Netzwerk TCP/IP ist,
dann ist die STB TCP/IP-enabelt und es besteht keine Notwendigkeit,
vom SGW bereitgestellte komplexe gemeinsame Dienste auszuführen, eine schnellere
Netzwerkleistung kann über
eine Direktkommunikation von Client/STB mit einem Dienst über TCP/IP
verbessert werden.
-
Gemäß 7 ist
der SGW-Hauptprozess des DATP-Servers der oben beschriebene Haupt-DATP-Serverprozess.
SGW hostet mehrere wichtige Module. Das TCP-Socket-Listener-Modul 1204 ist
ein einfacher TCP-Socket-Listener-Thread, der auf Verbindungen auf
dem DATP TCP Listen-Port wartet, sie akzeptiert und die Erzeugung
neuer Session-Manager zum Handhaben neuer Verbindungen anfordert.
Der UDP-Socket-Listener 1202 wartet
auf einem gut bekannten Port auf UDP-Verbindungen. Nach dem Eingang
einer Verbindungsanforderung erzeugt der UDP-Socket-Listener 1202 einen
neuen Socket und sendet eine Verbindungsanforderungsquittung zum
Fern-Host. Der UDP-Socket-Listener 1202 fordert dann die
Erzeugung eines neuen Session-Managers
zum Handhaben der Verbindung an.
-
Das
Session-Manager-Monitor-Modul 1206 ist Teil des Hauptthread.
Die Hauptrolle dieser Komponente besteht darin, die Population von
Session-Manager-(SM)-Prozessoren 1214 (Erzeugen
und Löschen
von SM-Prozessoren auf Lastbasis) zu überwachen und Session-Manager-Erzeugungsanforderungen
zu dem am wenigsten beschäftigten SM-Prozessor 1215 weiterzuleiten.
Jeder SM-Prozessor (0-n) 1215 umfasst ein DATP-Applikationsserver-Kommunikationsmodul
(ASCM) 1217 und einen separaten Applikationsserver-Datensender
(ASDS) für
DATP, HTTPP, LHTTP und SMTP.
-
Der
DNS-Namensserver-Thread 1212 führt eine Abgleichtabelle zwischen
Applikationsserver-Kennungen und deren Attributen (Hostname, Port,
Typ usw.) sowie eine Abgleichtabelle zwischen Session-Kennungen
und Session-Manager-Meldungswarteschlangenkennungen.
Das Namensservermodul DNS beantwortet Namensauflösungsanforderungen, die auf
seine Meldungswarteschlange gepostet wurden. Der Applikationsserver-Socket-Listener-Thread 1208 ist
dafür verantwortlich,
auf von Applikationsservern kommende Meldungspostieranforderungen
zu warten. Der Namensserver 1212 leitet dann die Postieranforderungen
zu den angepeilten Session-Managern
auf der Basis der Post-Anforderung-Session-Kennung weiter.
-
Der
Session-Managerprozessor-Prozess 1214, 1216 hostet
einen Pool von Session-Manager-Threads 1215. Neue Session-Manager-Threads werden
auf der Basis von Anforderungen vom Session-Manager-Monitor 1206 zum
Session-Manager-Prozessorthread
erzeugt. Der Session-Manager-Prozessor-Thread 1214, 1216 kommt
Anforderungen von den Session-Manager-Prozessoren 1214, 1216 nach
und erzeugt oder löscht
Session-Manager auf der Basis von Anforderungen vom SM-Monitor und
avisiert den Session-Manager-Prozessor über das Ergebnis seiner Anforderungen. Session- Manager-Threads 1215 verwalten DATP-Sessions
und leiten DATP-Meldungen von STBs oder Clients zu Applikationsservern
und umgekehrt weiter. Es gibt pro STB oder Client einen Thread.
Diese Threads nutzen mehrere wichtige Module zur Handhabung von
DATP-Sessions (Paketbibliothek; Applikationsserver-Kommunikationsmodul; DATP-Applikationsserver-Datensender;
HTTPP-Applikationsserver-Datensender; LHTTP-Applikationsserver-Datensender
und SMTP-Applikationsserver-Datensender).
-
Der
Broadcast-Manager-Prozess 1210 ist die Hauptkomponente
von DATP-Routing über Broadcast.
Dieser Prozess ist ein Open Streamer Applikationsserver, der DATP-Server-Karussells
verwaltet. Der Broadcast-Manager-Prozess aktualisiert diese Karussells
dynamisch in Abhängigkeit
von Anforderungen, die er von anderen Komponenten des DATP-Servers
erhält.
-
SP
und SGW werden vorzugsweise auf dem Datenverarbeitungssystem Sun
Solaris 7 mit Memory, Monitor, GUI, Maus, Tastatur und Prozessor
unterstützt,
das in der Technik gut bekannt und von Sun Microsystems erhältlich ist.
SGW läuft
als UNIX Daemon, wird mit einer Konfigurationsdatei konfiguriert und
von der Befehlszeile aus gestartet. Nach dem Herstellen einer Verbindung
zwischen SGW und STB/Client über
ein Netzwerk handhabt TCP/IP alle Kommunikationen zwischen den anderen
Diensten. Neben der Handhabung unterschiedlicher Transportprotokolle
routet das SGW auch Meldungen zu verschiedenen Service-Untersystemen
je nach der Konfiguration von SGW.
-
SGW
führt seine
Funktionen an der Eintrittsstelle zu den Applikationsservern aus.
So können Merkmale
leicht konfiguriert und/oder hinzugefügt werden, da Netzwerk- und
Messaging-Funktionen auf SGW isoliert sind. Dies befreit die Service-Subsysteme, so dass
sie auf Kernapplikationsfunktionen arbeiten können, und überlässt Netzwerkkonnektivitätsprobleme
dem SGW. Dies bietet auch größere Skalierbarkeit
durch Isolieren spezieller Funktionen zu separaten Hosts; Email-Meldungslieferung
und -empfang (mit dem Fetchmail-Server) von Netzwerk-Routing und
Sicherheit mit SGW.
-
SGW
ist so bemessen, dass es hunderte von gleichzeitigen Verbindungen
auf einem einzigen Server unterstützt. SGW kann so konfiguriert
werden, dass es mehr Verbindungen handhaben kann, je nach der Verarbeitungsleistung
des das SGW hostenden Prozessors. Diese Grenze basiert auf der Anzahl
der Modeme (typischerweise mehrere hundert) pro POP (Point of Presence)
für bedeutende
ISPs. Im Falle einer WAN-Architektur, bei der sich das SGW an einer
zentralen Stelle befindet, ist ein auf Hardware-Netzwerkadressumsetzung
(NAT) basierendes Lastausgleichsgerät für den parallelen Anschluss mehrerer
SGWs zum Verteilen der Last vorgesehen.
-
Inhaltsumsetzung – H2O
-
Es
folgt ein Überblick über die
H2O Proxy Umgebung mittels einer Logikübersicht über H2O-Architektur und Transaktionsbeispiele.
URI-Anforderungen können
entweder von unterschiedlichen H2O-Komponenten kommen – z.B.:
STB/SGW und Karussell. Der Fokus der folgenden Kontextüberblick ist,
dass STB/SGW die Anforderungen ausgibt – aber der allgemeine Informationsfluss
bleibt gleich.
-
Ein
Zuschauer beschließt,
mit seiner TV-Webseite zu interagieren und gibt somit eine Anforderung
von der STB an das H2O-System aus und wartet auf eine Antwort. STB-Anforderungen
werden mit Lightweight-HTTP-Anforderungen (LHTTP) zum SGW gesendet,
in DATP-Meldungen als Transportprotokoll verkapselt. Das angeforderte
Objekt wird durch den-/dasselbe(n) Kanal und Protokoll zurückgegeben.
Das SGW konvertiert das LHTTP-Protokoll in Standard-HTTP über TCP/IP
und gibt die Anforderung an einen Web-Cache aus.
-
Der
Compiled Object Cache (COC) verwendet seinen internen Speicher zum
Bedienen jeder Anforderung, die er bedienen kann (nach einer heuristischen
Berücksichtigung
der Lebenszeit von Objekten). Seine Rolle besteht darin, alle statischen
Objekte zu bedienen (standardmäßige URL-Adressen ohne
Abfragen, keine gepostete Form), ohne den H2O Proxy abzufragen,
wodurch seine Verarbeitungslast reduziert wird. In dieser Architektur
speichert der COC nur kompilierte Objekte (H2O-Module). Die COC-Maschine ist E/A-gesteuert.
-
Gemäß 14 bietet
der H2O-Proxy 248 eine skalierbare Umgebung, auf der die
verschiedenen H2O-Compiler (oder Filter) laufen können. Er verarbeitet
HTTP-Anforderungen
und Antworten „on the
fly" (nebenbei)
und somit ist die H2O Proxy Maschine prozessgesteuert. Der H2O HTML
Compiler 1420 ist für
die HTML-in-SP-Ressourcen-Kompilation
verantwortlich. Zum Berechnen des zu rendernden TV Layout 1422 gibt
diese Komponente HTTP-Anforderungen alleine auf der Basis der Größe der eingebetteten
Bilder aus. Dieser Compiler ordnet das webgestützte Bild so um, dass es zum
Client-Anzeigegerät,
z.B. ein Fernseher, passt.
-
Der
MPEG-Compiler 1426 ist für die Konvertierung vom regelmäßigen Webbilderformat
in SP H2O MPEG-Ressourcen verantwortlich. Das Quellformat beinhaltet
JPEG und GIF und kann PNG beinhalten. Durch Leiten von Argumenten
durch die URL-Adresse kann der Konvertierungsprozess angesteuert
werden. Der PIXMAP-Compiler ist für die Konvertierung von regelmäßigen Webbildern
in SP H2O Ressourcen verantwortlich. Das Quellformat umfasst GIF
und kann PNG beinhalten.
-
Der
Request Patcher 1424 ist verantwortlich für das Erledigen
oder Modifizieren der Anforderungen oder der Antworten zum Integrieren
von Daten, die von einem anderen System kommen (z.B. Kreditkartennummer
usw.). Er kommuniziert mit einem externen Prozess oder einer externen
Datenbank zum Einholen von Kundeninformationen. Die SP-Komponente
bietet ein zentrales Repository für Benutzerinformationen. Der
Request Patcher kommuniziert mit dieser Komponente, um die Daten
einzuholen, die zum Patchen der Anforderungen/Antworten notwendig
sind.
-
Der
Not Compiled Object Cache 1430 verwendet seinen internen
Speicher zum Bedienen jeder Anforderung, die er bedienen kann (gemäß einer heuristischen
Berücksichtigung
der Lebensdauer von Objekten). Die gecachten Objekte umfassen statisches
HTML, GIF-Bilder, JPEG-Bilder und alle standardmäßigen Webformat-Dateien. Seine Rolle
ist es, alle statischen Objekte zu bedienen (standardmäßige URL-Adressen ohne Abfragen,
keine gepostete Form), ohne das Internet abzufragen, wodurch Latenzzeiten
zum Holen eines Objekts reduziert werden und dem System eine Art
Fehlertoleranz verliehen wird. Die Kunden-Website enthält die Website zur
Veröffentlichung
durch das H2O-System.
-
15 illustriert
eine Anforderung für
eine bereits gecachte statische Seite. Der STB-Benutzer gibt eine
Anforderung zum Laden einer HTML-Seite 1520 aus. Diese
Anforderung wird mit LHTTP über DATP
zum SGW 248 gesendet. Das SGW konvertiert die Anforderung
in HTTP über
TCP/IP und leitet sie zum Compiled Object Cache 1410 weiter
(1522). Der Compiled Object Cache 1410 hat die
angeforderte (zu einem Modul kompilierte) HTML-Seite in seinem internen
Festplattenspeicher gespeichert; wenn die Lebenszeit des Objektes
nicht abgelaufen ist und der Compiled-Objekt-Cache kommt der Anforderung mit der
kompilierten HTML-Seite nach [sic]. Er sendet die HTTP-Antwort 1424 zum
SGW mit HTTP über TCP/IP.
Das SGW setzt das Protokoll von HTTP über TCP/IP in LHTTP über DATP
um. Die STB lädt
die angeforderte Seite 1526 (kompiliert) in ihren Speicher
und sendet sie zwecks Interpretation zur H2O-Browser-Maschine. Die
H2O-Browser-Maschine fordert beim SGW an (1528), die zum
Rendern des Bildschirms auf dem Fernseher notwendigen Bilder zu
holen, mit Konvertierungsoptionen (mpeg oder pixmap, Breite, Höhe usw.)
auf URL. Das SGW sendet die HTTP-Anforderung 1530 zum Compiled
Object Cache. Das angeforderte (zu einem Modul kompilierte) Bild
ist im internen Festplattenspeicher des Compiled Object Cache gespeichert;
die Lebenszeit der Objekte ist nicht abgelaufen und der Compiled Object
Cache kommt der Anforderung mit dem kompilierten Bild nach (1532 und 1534).
Bei diesem Szenario wurde dem H2O Proxy die Anforderung erspart und
er kann somit andere Anforderungen verarbeiten.
-
Wie
in 16 gezeigt, gibt der Benutzer der STB 212 eine
Anforderung 1610 zum Laden einer HTML-Seite (home.asp)
aus, Host- und Benutzer-Info des Anforderungs-Headers enthalten
[STB Modell+STB Seriennummer] und [Zugangskarten-ID] des Benutzers.
Diese Anforderung 1610 wird mit LHTTP über DATP zum SGW gesendet.
Das SGW konvertiert die Anforderung in HTTP über TCP/IP und leitet sie zum
Compiled Object Cache weiter (1612). Das angeforderte Objekt
ist im Speicher des Web-Cache nicht verfügbar. Der Web-Cache leitet dann
die Anforderung 1614 zum H2O Proxy weiter. Der H2O Proxy
fordert die SP auf (1616), den Namen des Benutzers (für den amazon.com
Dienst) zurückzugeben
(1620). Der H2O Proxy patcht die Anforderung mit dem Namen
des Benutzers und gibt diese Anforderung an den „Not Compiled Object Cache" aus (1622).
Der „Not
Compiled Object Cache" hat
die angeforderte HTML-Seite nicht in seinem Speicher und gibt dann
die Anforderung 1624 an den angepeilten Webserver aus,
hier amazon.com. Der angepeilte Webserver berechnet die HTML-Seite
auf der Basis der Benutzerinformationen und gibt sie zum „Not Compiled
Object Cache" zurück (1626).
Der „Not Compiled
Object Cache" gibt
die HTML-Seite 1628 zum H2O Proxy zurück.
-
Der
H2O Proxy sendet die HTTP-Anforderung 1630 zum „Not Compiled
Object Cache", um
die Bilder 1632, 1634, 1636 zu holen,
die für
seine Layout-Berechnungen notwendig sind (gif, jpeg usw.). Der H2O
Proxy kompiliert die HTML-Seite, berechnet das Layout, patcht die
URL-Adressen der eingebetteten Bilder und sendet die resultierende
OpenTV-Ressource 1646 (mit SP-Ressource Mime-Typ) zum „Compiled
Object Cache" zurück. Der
Compiled Object Cache speichert das Objekt in seinem internen Speicher
und sendet die kompilierte HTML-Seite 1648 zum SGW zurück. Das
SGW konvertiert die Antwort in LHTTP über DATP und sendet sie zur
STB 1650 zurück.
Die STB lädt
das angeforderte Objekt in ihren Speicher und sendet sie zur Interpretation
zur H2O-Browser-Maschine.
-
Die
H2O-Browser-Maschine gibt Anforderungen 1652 an das SGW
aus, um die zum Rendern notwendigen Bilder zu holen (durch die gepatchten URL-Adressen:
hier beinhaltet die URL-Adresse logo.gif eine Direktive für das Pixmap-Ressourcenformat):
pix/logo.gif. Das SGW konvertiert die Anforderung 1652 in
HTTP über
TCP/IP und leitet sie zum Compiled Object Cache weiter. Der „Compiled
Object Cache" hat
das angeforderte GIF-Bild bereits im richtigen Ressourcenformat – weil ein
Benutzer dieses Bild bereits zu einem früheren Zeitpunkt angefordert hat – und das
Bild wird direkt zum SGW zurückgegeben
(1654). Das SGW konvertiert die Antwort in LHTTP über DATP
und sendet sie zur STB zurück (1656).
Die H2O-Browser-Maschine gibt Anforderungen an das SGW aus (1658),
um die zum Rendern notwendigen Bilder zu holen: mpg/banner.jpg.
Der „Compiled
Object Cache" hat
das angeforderte Bild nicht in seinem Speicher und gibt daher die
Anforderung 1660 an den H2O Proxy aus. Der H2O Proxy sendet
die HTTP-Anforderung 1662 zum „Not Compiled Object Cache", um das /banner.jpg
Bild zu holen.
-
Der „Not Compiled
Objekt Cache" hat
das Bild in seinem Cache und gibt es sofort zum H2O Proxy zurück (1664).
Der H2O Proxy konvertiert das Bild mit den Parametern in der URL-Adresse (MPG-Format,
Breite, Höhe
usw.) und gibt das Ergebnis an den Compiled Object Cache 1668 zurück. Der
Compiled Object Cache speichert das Objekt in seinem internen Speicher
und sendet das konvertierte MPEG-Bild
zum SGW zurück
(1668). Das SGW konvertiert die Antwort in LHTTP über DATP
und sendet sie zur STB zurück
(1670). Die STB rendert die HTML-Seite auf dem Bildschirm.
-
Die
H2O Proxy Komponente bietet anderen H2O-Komponenten oder -Compilern
eine robuste und skalierbare Architektur sowie eine Schnittstelle für die „Compiler"-Konfiguration. Weitere mögliche Dienste
sind: die Fähigkeit
zum Protokollieren von Fehlern; die Fähigkeit zum Alarmieren eines
Administrators über
definierte Events und die Fähigkeit
zur Fehlersuche in den „Compilern". Von der bereitgestellten
H2O Proxy Umgebung und APIs „patchen" die Compier HTTP-Anforderungen
und -Antworten „on the
fly" und greifen
schließlich
dazu auf eine externe Datenbank, Datei oder einen Prozess zu. Die Compiler
patchen HTTP-Anforderungen durch Entfernen der speziellen HTTP-Header
(STB-Kennung, Zugriffskartenkennung usw.); durch Addieren eines speziellen
HTTP-Headers (Benutzername, Kreditkartennummer usw.); durch Addieren
von HTML-Formular-Feldern zu eingehenden Postieranforderungen (Visakartennummer
usw.); und durch Ausführen
von Stringsubstitution ($UID$ → Benutzerkennung)
konvertieren die Compiler Webobjektformate und Mime-Typen „on the
fly" in HTTP-Antworten und geben HTTP-Anforderungen
alleine aus und holen dafür
ein Antwortobjekt ein.
-
Wie
in 17 gezeigt, wird der H2O Proxy in einer bevorzugten
Ausgestaltung durch die Entwicklung einer Erweiterung von Einschlusssoftware
(Web Proxy, Firewall, Webserver oder sonstige usw.) implementiert.
Diese Host-Software bietet H2O-Threading
und Planung der H2O-Tasks sowie einige der benötigten Funktionen zum Implementieren
von H2O „Compilern" und Patching-Komponenten.
-
Unter
Verwendung der von der Proxy Host Software bereitgestellten API
wird ein API-Satz (die H2O Proxy API) zum Implementieren der von
den H2O-Compilern benötigten
Funktionen bereitgestellt, die von den H2O Proxy Host Software Services
fehlen, und bieten ein höheres
Abstraktionsniveau für die
von der H2O Proxy Host Software zur Verfügung gestellten Dienste. Die
Komponente Request Patcher 1424 liest eingehende HTTP-Anforderungen
für HTML-Seiten
und vervollständigt
sie mit Informationen von einem anderen Prozess oder einer anderen Datei
oder Datenbank. Der HTML2RES Compiler 1420 kompiliert zurückgegebene
HTML-Seiten in SP-Ressourcen-Dateien
und ändert
den Mime-Type des HTTP-Antwort-Headers passend zum neuen Format:
Mime-Type: text/otvres.
-
Der
GIF2PIX Compiler 1422 konvertiert ein zurückgegebenes
GIF-Bild in eine SP-Ressourcen-Datei und ändert den Mime-Type des HTTP-Antwort-Headers
passend zum neuen Format: Mime-Type: image/otvpix. Der 2MPEG Compiler 1426 konvertiert
ein zurückgegebenes
GIF- oder JPEG-Bild in eine SP-Ressourcen-Datei und ändert den
Mime-Type des HTTP-Antwort-Headers passend zum neuen Format: Mime-Type:
image/otvmpg. 18 zeigt ein Folgeschema für eine dynamische
Anforderung einer HTML-Seite. Die Object Caches werden in dem Folgeschema
nicht angezeigt, weil sie „passive" Komponenten in dieser
Interaktion sind. Die Benutzer-STB 212 gibt eine Anforderung 1810 um
eine Seite (home.asp) durch eine HTTP-Anforderung aus. Der Request
Patcher 1424 greift auf eine externe process/file/database/url 1812, 1814 zu,
um den Benutzernamen zu holen, patcht die Anforderung und sendet
sie zum HTML2RES Compiler (1816). Der HTML2RES Compiler
sendet die Anforderung 1818 zur angepeilten Website (amazon.com).
Die Website berechnet die Anforderung und sendet die resultierende
HTML-Seite zum HTML2RES Compiler zurück (1820). Der HTML2RES
Compiler parst die Datei zum Holen der URL-Adresse der Bild-Links
und gibt die Anforderungen zur Website aus (1822), um die Bilddateien
(logo.gif, banner.jpg) zu holen (1824). Der HTML2RES Compiler
berechnet das TV-Layout für
die Seite, kompiliert sie zu einer SP-Ressourcen-Datei und sendet
sie zur STB zurück
(1830). Die STB rendert die HTML-Seite auf dem Fernseher.
-
19 zeigt
ein Folgeschema einer Anforderung für eine Bilddatei. Eine in die
Benutzer-STB geladene HTML-Seite braucht ein Bild zum Rendern auf
einem Bildschirm. Sie gibt eine HTTP-Anforderung 1910 für das Bild
(in der URL-Adresse eingebettete Konvertierungsoptionen) an den
2MPG Compiler aus. Der 2MPG Compiler fordert das Bild 1912 von der
Ziel-Site an (amazon.com). Die Ziel-Site gibt die Bilddatei banner.jpg 1914 an
den 2MPG Compiler zurück.
Der 2MPG Compiler konvertiert die Datei banner.jpg mit den auf der
URL-Adresse angegebenen Optionen und gibt das Ergebnis, mit einem image/otvmpg-Mime-Type,
zur STB zurück
(1916). Die STB rendert das Bild auf dem Bildschirm.
-
Die
verschiedenen identifizierten H2O-Compiler erben vom Klassen-H2O-Compiler und bieten eine
Implementation für
die verschiedenen reinen virtuellen Eintrittsstellen der Klasse.
Compilern werden Speicherfunktionen gegeben, um die Anforderungen/Antworten-Puffer
zuzuordnen und zu befreien. Die Größe des zugeordneten Puffers
wird einer FreeBuffer-Funktion gegeben, so dass der Puffer mit unterschiedlichen
Ansätzen
befreit werden kann (für eine
bestimmte Größe könnte der
Puffer als temporäre
Datei implementiert werden, die in Memory gemappt ist, während sie
für geringere
Größen vorzugsweise
wie in Memory-Puffer implementiert wird).
-
Der
Puffer wird zu einer Ausführungsfunktion geleitet,
die die volle HTTP-Anforderung/Antwort
enthält,
der Compiler parst die Anforderungsheader, Mime-Typen und führt die
geeigneten Aktionen durch. Dieser Puffer ist vorzugsweise ein Nur-Lese-Puffer. Der Puffer
kann auch beschreibbar sein, um eine Erweiterung durch den Compiler
oder andere Funktionen danach zu ermöglichen. Der von den Ausführungsfunktionen
zurückgegebene
Puffer enthält
eine gültige
HTTP-Anforderung/Antwort,
der Memory wird vom H2O Proxy mit der richtigen FreeBuffer-Funktion befreit
und muss von der bereitgestellten AllocBuffer-Funktion zugeordnet
werden. Das Debug-Member wird für
Compiler-Implementierer bereitgestellt, damit sie eine Debug-Trace
aus der H2O Proxy Umgebung holen können.
-
Die
Parameterfunktionen dienen zum Einholen der Namen der Parameter,
zum Einholen der aktuellen Werte (String) der Parameter, zum Einstellen eines
neuen Wertes für
einen Parameter und zum Validieren eines Parametersatzes. Die URL-Funktionen
werden vom HTML-Compiler zum Abrufen von Bildern verwendet. Diese
Funktionen stehen den anderen Compilern zur Verfügung, um den Komponenten nach
Bedarf zusätzliche
Dienste zu bieten.
-
So
erzeugt beispielsweise ein Netzwerk mit 1 Million STBs mit durchschnittlich
20.000 angeschlossenen Benutzern 2000 Anforderungen pro Sekunde für HTML-Seiten
zum SGW und „Compiled
Object Cache" (es
sei denn, dass ein Teil der angeforderten Seiten von Breitband kommt).
Angenommen, diese Seiten sollen statisch sein und sollen sofort
vom „Compiled
Object Cache" bedient
werden, muss der H2O Proxy 200 Anforderungen pro Sekunden
bedienen. Angenommen, dass eine typische HTML-Seite 10 Bilder einbettet,
wobei 8 von 10 JPEG H2O Proxy 10 abgehende Anforderungen für jede eingehende Anforderung
ausgeben, bedient der „Not
Compiled Object Object Cache" 2000
Anforderungen pro Sekunde.
-
Die
MPG-Konvertierung erfolgt vorzugsweise nach Möglichkeit im Voraus. Ein Web-Crawler kann
die HTML-Seiten und Bilder nachts anfordern, so dass sie im Voraus
konvertiert werden, was diese Sache verbessert. Die Compiler interagieren
somit mit H2O. H2O 248 ist die bevorzugte Client/Server-Lösung, die
im der SP vorgesehen ist und es Internet-Inhaltsentwicklern ermöglicht,
interaktiven Fernsehinhalt, Applikationen und Dienste für die auf der
SP laufenden Netwerkbetreiber zu erzeugen. Somit wird über H2O
der größere Pool
von Internet-Talent und -Inhalt dem riesigen wachsenden Weltmarkt für interaktiven
Fernsehanwendungen zur Verfügung gestellt.
Der H2O-Server konvertiert
Internet-Inhalt (HTML-Seiten, ECMA-Skripte und HTML-Seitenformatierung)
zu SP-Assets. Der H2O-Client, H2OC, rendert die Assets und interagiert
mit den Clients. In dem Szenario mit T-Commerce/E-Commerce ermöglicht es
H2O E/T-Commerce-Verkaufsstellen, existierende Web-Tools zum Schaffen
von Einkaufsdiensten zu nutzen und über standardmäßige Webprotokolle
mit der bevorzugten SP (Operator) Verbindung aufzunehmen. Somit
ist die vorliegende Erfindung bedienerfreundlich, weil sie APIs
durch bekannte Methodiken bereitstellt.
-
H2O
dient als Proxy für
das SGW und die Broadcasting-Tools zum Konvertieren von Webinhalt in
SP-Inhalt. Somit können
Website-Entwickler ihre derzeitigen HTTP-Server und Applikationsserver benutzen,
um interaktiven Fernsehinhalt kostenarm zu erzeugen. In einer bevorzugten
Ausgestaltung konvertiert H2O HTML, JavaScript und Internet-Graphik, es
können
aber auch andere bekannte oder entwickelte Internet- oder sonstige
Inhalte oder Protokolle zur Proxy-Funktionalität von H2O hinzugefügt werden.
H2O ermöglicht
es der SP, Webseiten auf STBs anzuzeigen, die nicht vollständig Browser-fähig sind, und
Original-Benutzerschnittstellen zu erzeugen. H2O ermöglicht eine
SP-Verbindung mit einer beliebigen Commerce-Maschine, die nur HTML
benutzt. H2O ist für
das Konvertieren aller jetzigen oder zukünftigen Breitband- und Webinhalte
wie HTML-Seiten, JPG-Bilder, Wav-Audio-Dateien usw. in SP-Ressourcen
verantwortlich.
-
Die
Server-Seite von H20, H2OS, ist ein HTTP-Proxy. Für andere
Zwecke kann sie als dynamische Link-Bibliothek (DLL) oder als Batch-Tool
verpackt werden. Die Client-Seite von H2O, H2OC, ist eine STB O-Code-Applikation.
H2OC baut auf anderen SP-Client-Komponenten wie der SGW-Bibliothek oder
der Carousel Load Bibliothek auf. H2O lässt es zu, dass URLs zum Adressieren
von Dokumenten und Diensten verwendet werden. H2O ermöglicht auch
Tracking in den Broadcast- und Online-Umgebungen. H2OS bietet HTTP-Proxy-Funktionen. SP-Applikationen
fordern ein Dokument durch H2O an, worauf H2O das Dokument abruft,
parst, kompiliert und das Dokument zum Anforderer zurücksendet.
Diese H2O-Funktionalität
ermöglicht
die Verwendung derselben Maschine für unterschiedliche Zwecke,
online und Broadcast, erleichtet die Skalierbarkeit und ermöglicht eine
flexible Nutzung von H2O. Das Parsing hängt vom Typ des Dokuments ab,
Parsing kann HTML-Parsing, ein GIF-Bild oder JPEG-Bilder usw. sein.
Um es erweiterungsfähig
zu machen, kann H2O „einsteckbar" (Plug-In) sein und kann
neue Fremdfilter verwenden.
-
H2O
ermöglicht
Skript-Erstellungen mit unterschiedlichen Sprachen. Vorzugsweise
standardisieren alle SP-Serverkomponenten um Überwachung, besonders um die
Fähigkeit
zum Fernverwalten der unterschiedlichen Prozesse. SNMP dient zum
Handhaben von Grundfunktionen („Process OK" und Traps bei bedeutenden
Problemen). Ein Befehlszeilen-Interpreter ist am Socket zum Prüfen des
Status vorgesehen. Das Einstellen von Parametern ermöglicht Fernmanagement
und bietet eine Schnittstelle mit dem Web durch Web-Skripts. In
einer bevorzugten Ausgestaltung sind standardisierte Warnungen und
Fehlerprotokolle vorgesehen.
-
HTML/JS
ermöglicht
keine gemeinsame Nutzung von Informationen von einer Seite zur anderen für das Web,
wenn der Server den Kontext verwaltet. Im Broadcast-Modus reicht diese
Anordnung nicht aus. Die vorliegende Erfindung stellt einen Broadcast-Modus
bereit, bei dem vorzugsweise ein globales permanentes Objekt vorgesehen
ist, das beim Starten einer neuen Seite nicht gelöscht wird.
Das permanente Objekt führt
Kontext zwischen Seiten. Andere von der SP bereitgestellte Basisobjekte
werden ebenfalls beim Übergang
(z.B. Stationssteuerung, OSD) permanent gemacht. Gadgets werden durch
eine Schnittstellendefinitionssprache definiert, um die Erzeugung
neuer Gadgets, die Modifikation von Gadgets und die Hinzufügung von
Methoden zu ermöglichen,
ohne den Compiler zu modifizieren.
-
Das
H2O-Karussellmerkmal bietet Echtzeit-Aktualisierung von Katalogen,
das Bewahren der Einheitlichkeit von Katalogen bei Updates und das Bereitstellen
sicherer Transaktionsmodelle. Das H2O-Karussell ermöglicht die
Aktualisierung einer einzelnen Seite oder eines ganzen Satzes von
Seiten in einer einzelnen Transaktion. Karussellmanagement ermöglicht das
Management eines Karussellindex oder -verzeichnisses. Der Index
enthält
Informationen zum Zugreifen auf und Abrufen von Daten vom Karussell.
Das heißt
für eine
bestimmte Seite, das Karussellmanagement enthält eine Liste aller notwendigen
Module, so dass H2OC alle notwendigen Module gleichzeitig zum Beschleunigen
des Prozesses anfordert.
-
Das
Karussell bietet Datenkompression, Metadaten auf Seiten (z.B. seitenrelative
Priorität,
wie oft die Seite gesendet wird) und Seitenverfolgung (Elementarstrom).
Der Karussell-Client ist eine STB OCOD Bibliothek, die das Laden
von Ressourcen handhabt. Der Karussell-Client verwaltet die Dynamik
von Ressourcen, d.h. neue Ressourcen, gelöschte Ressourcen und geänderte Ressourcen.
Das dynamische Ressourcenmanagement ermöglicht es dem Client (H2OC)
dieser Bibliothek, dynamischen Inhalt zu präsentieren. Der Karussell-Client
verwaltet Speicherzuordnung, Pre-Fetching und Caching von Ressourcen
und die Dekompression von Modulen. Der Karussell-Client verwaltet
Subindex/Verzeichnisse und verwaltet einen ,Satz' von Ressourcen anstatt eines ,Baums' von Ressourcen,
was die gemeinsame Nutzung von Assets erleichtert. Teilmengen eines einzelnen
Baums von Ressourcen können
getrennten Prozessen zugewiesen werden, so dass Ressourcen gemeinsam
genutzt werden können.
-
H2O überwacht
Leistung und Bandbreite von TV-Triggern, z.B. gemeinsam genutzte
Ressourcen in gemeinsam genutzten Modulen. H2O optimiert die Bandbreitenauslastung.
H2O bietet Multitracks, Multiprioritäten und Management von Datenangebotsvolumen.
H2O bietet Laufzeit-Prefetching und Caching auf Modulebene. H2O
unterstützt
komprimierte Module. H2O unterstützt
Pfeil- und Direkttastennavigation (z.B. Stelle oder Farbe), handhabt
internationale (chinesische) Metadaten auf Seiten (z.B. seitenrelative
Priorität,
wie oft sie gesendet wird) und Seitenverfolgung (Elementarstrom).
Globale GUI wird gemeinsam genutzt, d.h. es ist eine direkte Tastenverbindung
vorgesehen, so dass jede Informationsseite auch von jeder anderen
Seite genutzt werden kann.
-
H2O
verwaltet Seiten und Unterseiten zum Handhaben von Fällen, bei
denen Seiten zu groß sind,
um ohne zu rollen auf einen Bildschirm zu passen. H2O ermöglicht die
Verwendung von HTML zum Präsentieren
von Inhalt, online, Punkt zu Punkt und Broadcast. H2O ermöglicht das
Komponieren einer Seite mit einem Gemisch aus Broadcast- und Online-Komponenten.
So kann eine Seite beispielsweise von einem Online-Server kommen,
während
sein Hintergrund Broadcast ist. H2O ermöglicht das Zusammenführen von
Inhalt in der STB. So kann beispielsweise eine Bankapplikation die
letzten 20 Kreditkartentransaktionen eines Zuschauers von ihrem Server
senden, während
die HTML-Seite gebroadcastet wird. Vorzugsweise fordert eine Java-Skript-Funktion (HTTP ähnlich)
vom Server XML unter Verwendung des Ergebnisses an und eine DOM-Funktion
patcht das Ergebnis in eine Tabelle.
-
Vorzugsweise
wird Sicherheit für
eine gesicherte Authentifizierung des Zuschauers vorgesehen, was
am SGW anstatt bei H2O erfolgt. H2O kann jedoch alternativ auch
Authentifizierungsfunktionalität
enthalten. H2O sendet auch verschlüsselte Daten zu (z.B. Senden
einer Kreditkartennummer) und von einer STB zu einem Online-Server.
Für einige
Dienste ist es geeignet, durch einen Sicherheitsproxy in der Nähe der HTML-in-SP-Konvertierung
zu gehen. SP kann HTTPS vom Proxy zum Diensteanbieter und eine SSL-ähnliche
OCOD-Bibliothek von der STB zum Proxy nutzen. In anderen Fällen (z.B.
Banken) wird Sicherheit von Ende zu Ende bereitgestellt, und in
diesem Fall führt
H2O gewöhnlich
keine Umsetzung durch. Dieses Szenario ist vorzugsweise für Daten
reserviert, die die STB ohne Umsetzung durch H2O verarbeiten kann.
Verschlüsselung
kann alternativ bei SGW oder STB durchgeführt werden.
-
Die
vorliegende Erfindung wurde für
interaktives Fernsehen in einer bevorzugten Ausgestaltung beschrieben,
aber die vorliegende Erfindung kann auch in einem verteilten Computersystem
ausgestaltet werden, das einen Server und ein Clientgerät beinhaltet.
In einer anderen Ausgestaltung wird die vorliegende Erfindung als
ein Satz von Befehlen auf einem rechnerlesbaren Medium implementiert,
das ROM, RAM, CD ROM, Flash oder ein anderes rechnerlesbares Medium
umfasst, jetzt bekannt oder unbekannt, das bei Ausführung auf
einem verteilten Computersystem bewirkt, dass ein verteiltes Computersystem
das erfindungsgemäße Verfahren
ausführt.
-
Es
wurde zwar eine bevorzugte Ausgestaltung der Erfindung in der obigen
Erfindung dargestellt, aber dies geschah nur beispielhaft und soll
den Umfang der Erfindung nicht begrenzen, der durch die folgenden
Ansprüche
definiert wird.