Tik-110.300 Tietoliikennearkkitehtuurit. Tehtävä 7/syksy 1997.
Olli-Pekka Auvinen, 44010h
Televisiolähetyksen jakelupalvelu Calypso-arkkitehtuurissa.
-
Yleistä Calypso-arkkitehtuurista
- Calypso on Teknillisen Korkeakoulun TLM-laboratorion
tutkimusprojekti [1,2], joka pohjautuu osittain laboratorion
TOVE-projektiin [3]. TOVE-projektin tuloksia on käytetty uuden
kolmikerroksisen laajakaistaverkkoarkkitehtuurin suunnittelemiseksi.
Calypso on palveluarkkitehtuuri, jossa palveluiden luominen,
kehittäminen ja hallinta on tehty helpoksi.
- Arkkitehtuurin alin kerros on FCL (Fabric Control Layer),
joka vastaa ATM-kytkimen hallinnasta. Tämänhetkisessä kuitujen
hallintakerroksen toteutuksessa on käytössä FSR (Frame
Synchronized Ring) API, jolla ohjataan VTT:llä kehitettyä FSR-
kytkintä. Toteutuksessa on varauduttu myös ottamaan käyttöön
GSMP (General Switch Management Protocol). Kuidunhallintakerroksen
liittymä tehdään Javalla. Toinen kerros on NCL (Network Control
Layer), joka mahdollistaa päästä-päähän yhteydet, kontrollitiedon
siirron ja virtuaalipolkujen varauksen. Kolmas kerros, SCL
(Service Control Layer), muodostaa palveluiden ajoympäristön
(SEE, Service Execution Environment) ja liittymän
palvelusovelluksille [4]. Palveluiden ajoympäristö on vastuussa
palveluiden hallinnasta.
Palvelut toteutetaan agentteina ja ne toteutetaan Java-pohjaiseen
ympäristöön. Uusien palveluiden eli agenttien lisäys ja poistaminen
kytkinkohtaisesta ajoympäristöstä on tarkoitus toteuttaa
dynaamisesti. Käyttäjän liittymä palveluihin tarjotaan
palveluikoneiden kautta (SI, Service Icons). Palveluikonit
kommunikoivat palveluagenttien kanssa esimerkiksi Java RMI:n avulla.
Näin on esimerkiksi tv-jakelupalvelun toteutuksessa [5].
Palveluikonit on tarkoitus toteuttaa Java-appletteina, mutta
nykyisten Javan turvallisuusrajoitusten vuoksi käytännössä ikonit
toteutetaan ainakin aluksi Java-sovelluksina. Arkkitehtuurin
kerrosmallin toteuttava ohjelmisto palveluagentteineen on
ATM-kytkintä hallitsevassa työasemassa, jota kutsutaan SEP:ksi
(Service Execution Point). Varsinaisessa implementaatiossa
työasemassa on käytössä Linux-käyttöjärjestelmä.
-
Televisiolähetyksen jakelupalvelu
- Televisiolähetyksen jakelupalvelu on
Calypso-arkkitehtuurin
ensimmäisiä toteutettuja palveluja. Palvelu koostuu kolmesta
erillisestä komponentista: ohjelmalähteistä, palveluagentista ja
katseluohjelmasta, joka käynnistetään palveluikonista. Lisäksi
Palveluikonin ohjaus, esimerkiksi kanavan vaihto ja äänen
voimakkuuden säätäminen tapahtuu infrapunakaukosäätimellä.
Ohjelmalähteet sijaitsevat TV-jakelupalvelimilla.
-
- Toteutetussa demoversiossa ohjelmalähteenä on C-kielinen
Linuxissa toimiva yksinkertainen ohjelma, joka lukee tiedostosta
MPEG-koodattua System Layer Streamiä ja lähettää tätä halutessa
ATM PVC-yhteyden yli tai Internetin kautta UDP:llä (User
Datagram Protocol). MPEG System Layer Stream sisältää kompressoitua
Video Streamiä sekä Audio Streamiä. Ohjelmalähde lähettää
koodatun streamin ATM-kytkintä hallitsevaan työasemaan (SEP).
Projektin tässä vaiheessa lähetystapana käytetään ATM PVC-yhteyttä.
-
- ATM-kytkintä hallitsevan työaseman palveluajoympäristössä on
palveluagentti, jolla on hallussa tiedot kytkimeen tulevista
tv-lähetyksistä. Näitä tietoja on mm. kanavan nimi, kanavaan
liittyvä Multicast-yhteys, kytkimen portti (josta lähetys otetaan
sisään), VPI (Virtual Path Identifier), VCI (Virtual Channel
Identifier) ja tieto kanavan maksullisuudesta. Jokaisella
kanavalla on siis oma Multicast-yhteys, jossa on yksi sisääntuleva
yhteyspiste ja kytkimen kautta katselupalvelun käyttäjien
lukumäärän mukainen määrä ulosmeneviä yhteyspisteitä. Kanavien
tiedot palveluagentti hakee käynnistyksen yhteydessä omasta
konfigurointitiedostosta. Agentti pitää listaa kaikista
kytkimeen saapuvista tv-kanavista. Palveluagentti kommunikoi
palveluikonin kanssa käyttäen Java RMI:tä (Remote Method
Invocation). RMI mahdollistaa etäolioiden luomisen. Näille olioille
annetaan oma tunniste (URL) ja luomisen jälkeen ne sidotaan
RMI:n rekisteröintikantaan (rmiregistry). RMI käyttää
etäolioviittauksien siirtoon sekä metodien parametrien ja
paluuarvojen siirtämiseen TCP:tä (Transmission Control Protocol).
Tällöin tiedot etäolioista siirtyvät Internetin kautta.
Kun oliot on sidottu rekisteröintikantaan, niistä voidaan hakea
viittaus ja niiden metodeja voidaan kutsua etäkoneista. Edellytys
olioiden toimivuudelle on että ne toteuttavat Remote-rajapinnan,
jossa määritellään ne metodit, joita on mahdollista kutsua
etäkoneista. Palveluagentti toimii siten, että käynnistyessä se
luo yhden etäolioinstanssin, jota käytetään tv-jakelupalveluun
liittymisessä. Tämän jälkeen aina, kun uusi käyttäjä siirtyy
käyttämään palvelua, palveluunlittäjäinstanssi luo oman
palveluolioinstanssin uniikilla tunnisteella palvelemaan yksittäistä
käyttäjää. Tämä instanssi toteuttaa käytäjään liittyvät toiminnot,
kuten kanavanvaihdon.
-
- Palveluikoniosuus jakelupalvelussa koostuu Java-sovelluksesta,
joka käynnistää katseluohjelman, jolla pystytään lukemaan
MPEG-koodattua System Layer Streamiä. Katseluohjelma ei ole
laitteistoriippumaton. Ohjelmana käytetään MpegTV Playeriä, jonka
oikeudet kuuluvat MpegTV LLC:lle ja ohjelmasta on hankittu
kehityslisenssi projektia varten. Ohjelma pystyy lisäksi
sopeutumaan tilanteisiin, joissa laskentateho ei riitä purkamaan
kaiken aikaa syötteenä annettua MPEG-streamiä.
Katseluohjelma liitetään linuxin ATM API:lla luettuun
MPEG-streamiin erillisellä välitysohjelmalla. Tämä ohjelma
mahdollistaa myös palveluikonista lähetettävien kontrolliviestien
välityksen MpegTV:n käyttäjärajapinnalle. Nämä viestit on
tarkoitettu mm. äänen voimakkuuden säätämiseen sekä kuvan
zoomaukseen. Palveluikoni kommunikoi välittäjäohjelman kanssa
UDP-sokettien kautta ja käyttää omaa protokollaa kontrolliviestien
ja niiden kuittausten lähetykseen. Käynnistettäessä palveluikoni,
hakee se katsojakohtaiset parametrit Javan laitteistoriippumattomista
ympäristömuuttujista (Properties). Tässä vaiheessa ainoa parametri
on ATM-kytkimen portti, johon kyseinen käyttäjä on liitetty.
Palveluikoni avaa ikkunan, jossa pidetään tietoja kyseisenä
ajankohtana katsotusta tv-kanavasta. Ikkunasta pystytään avaamaan
myös toinen ikkuna, josta nähdään mahdolliset kanavavaihtoehdot.
Ikoniohjelma hakee ATM-kytkintä ohjaavasta työasemasta RMI:n
avulla viittauksen palveluagentin palveluunlittäjäinstanssiin, jota
pyydetään luomaan uutta käyttäjää varten uusi
palveluolioinstanssi ja palautetaan tämän uuden instanssin uniikki
tunniste, kun se on sidottu RMI:n rekisteröintikantaan. Tämän
jälkeen haetaan viittaus RMI:llä palveluolioinstanssiin.
Palveluolioinstanssilta saadaan tietoon lista mahdollisista
kanavista sekä (VPI, VCI)-pari, jonka se on varannut tätä
käyttäjää varten käyttäjäkohtaisesta portista. Palveluikonin
käynnistyttyä mitään kanavaa ei ole valittu. Kanavanvaihto tapahtuu
siten, että palveluolioinstanssia pyydetään vaihtamaan haluttu
kanava. Palveluolioinstanssille tämä merkitsee ensin poistamista yksi
yhteyspiste nykyisen kanavan Multicast-yhteydestä, siinä
tapauksessa, että oltiin jo valittu jokin kanava. Tämän jälkeen
haetaan halutun uuden kanavan Multicast-yhteys ja luodaan uusi
yhteyspiste ja lisätään se tämän yhteyden yhdeksi ulostuloksi,
jolloin kanavanvaihto on suoritettu.
-
- Katseluohjelman ja ohjelmalähteen osalta on toteutettu myös
toinen versio, joka kuitenkin hylättiin laadukaan MpegTV:n
vuoksi. Tämä aikaisempi versio käytti MPEG Video Streamin
purkamiseen Berkeleyn dekooderia, jota oli muokattu siten, että
se pystyi lukemaan streamiä Linuxin ATM- tai UDP-soketista.
Lisäksi dekooderiin oli tehty purkamistehon vaihteluun
mukautuminen. Tämä toteutettiin siten, että lähettävä pää parseroi
MPEG Video Stream:in I-, B- ja P-kehyksiksi - riippuen kehyksen
koodausmenetelmästä. Nämä kehykset ovat MPEG-standardin mukaisia.
I-kehykset sisältävät kaiken tiedon kehyksen purkamiseksi ja
niitä on streamissä esimerkiksi joka kolmastoista kehys. P-kehykset
ennustetaan edellisestä I-kehyksestä standardin määrittelemällä
algoritmilla ja B-kehykset interpoloidaan kaksisuuntaisesti
näistä liikevektoreiden avulla. Tällöin I-kehyksen ja P-kehyksen
välissä on yleensä pari B-kehystä. Jakso kompressoitua streamiä
voi olla esimerkiksi I-B-B-P-B-B-P-B-B-P-B-B-I-B-B-P- - - jne.
Tällöin jakso I-kehyksestä toiseen muodostaa GOP-rakenteen (Group
of Pictures). Kehystysparseroinnin jälkeen lähettävä pää
siirtää verkon yli yhdessä paketissa yhden kehyksen, jolloin
dekooderin puolen on helppo jättää väliin tarvittava määrä
kehyksiä, jos purkamisteho laskisi alle vaaditun tehon.
Siirrossa käytetyn protokollan kehys sisältää aikaleimoja
erillisille kehyksille, joita dekooderi käyttää väliinjätettävien
kehyksien valinnassa. Tämän ratkaisun huonona puolena on se, että
Berkeleyn dekooderi ei tue System Layer Streamin purkamista
Audio Streamin osalta, jolloin kanavalta ei saada ääntä kuulumaan.
Paras ratkaisu olisi siirtää streamin purkaminen MPEG-dekoodaavalle
kortille, jolloin dekoodausteho ei olisi ongelma. Vaihtoehtoiset
ratkaisut ovat edelleen harkinnassa, mutta ensimmäinen demo
(joulukuussa 1997) tullaan pitämään MpegTV:llä.
-
- Kanavien valinta palveluikonin puolella tapahtuu käyttämällä
infrapunakaukosäädintä. Infrapunalähettimellä vastaanotetut
koodit tulkitaan Linuxin moduulia käyttävällä C-kielisellä
ohjelmalla ja lähetetään edelleen omilla tunnisteilla eteenpäin
palveluikonille käyttäen TCP:tä. Palveluikonissa vastaanotetaan
kaukosäädinviestejä JavaBeans-mallin mukaisella 'kuuntelijalla'.
Kun vastaanotetaan uusi viesti kaukosäätimeltä generoidaan
tapahtuma (Event), jonka seurauksena kaikkien
kuuntelijarajapinnan toteuttavien instanssien rajapinnassa
määriteltyä tapahtumaan liittyvää metodia kutsutaan. Palveluikonin
nykyisessä toteutuksessa näitä instansseja on kaksi. Palvelun
kannalta oleellisempi on kanavanvaihtoa etäolioviittaukselta
pyytävä instanssi. Toinen olio sisältää demonstraatiotarkoituksessa
käytettävän kaukosäätimen kuvan, johon päivitetään viimeisimmät
kaukosäätimen painallukset. Tämä kaukosäätimen kuva on omassa
ikkunassaan, jonka näyttäminen on sidottu ikoniohjelman
käynnistyksessä annetuun optioon.
Viitteet:
[1] Executive Summary (***)
<URL:http://www.tcm.hut.fi/Research/CALYPSO/summary.html>
[2] Calypso project personnel contact information (**)
<URL:http://www.tcm.hut.fi/Research/CALYPSO/personnel.html>
[3] TOVE-esite (*)
<URL:http://www.cs.hut.fi/~tta/TOVE-esite.html>
[4] Calypso: System Components and Tools for Media Distribution over
Broadband Networks (*****)
<URL:http://www.tcm.hut.fi/Research/CALYPSO/published/
slideshows/lappeenranta_aug97/index.htm>
[5] Räsänen J., Koponen P., Martikainen O. Broadband Network
Architectures, Proceedings of the Network Information Processing
Systems '97 Conference (Boyanov K., ed.), Sofia, Bulgaria, lokakuu
1997(*****)
Lisätietoviitteet aiheesta:
[6] Broadband Network Architectures (*****)
<URL:http://www.tcm.hut.fi/Research/CALYPSO/published/
slideshows/sofia_oct97/index.htm>
[7] 1997 International Conference 2IN'97 (*)
<URL:http://www.prism.uvsq.fr/public/marefat/2IN97/2in97.html>
[8] OPENSIG Spring '97 Workshop (***)
<URL:http://www.cl.cam.ac.uk/Research/SRG/opensig97/>
[9] The ATM Forum (*)
<URL:http://www.atmforum.com/>
Javaan liittyvät lisätietoviitteet:
[10] JavaBeans Documentation (**)
<URL:http://java.sun.com/products/jdk/1.1/docs/guide/beans/index.html>
[11] RMI Documentation (**)
<URL:http://java.sun.com/products/jdk/1.1/docs/guide/rmi/index.html>
MPEGiin liittyvät lisätietoviitteet:
[12] MPEG.ORG - MPEG Pointers and Resources (*)
<URL:http://www.mpeg.org/>
[13] MPEG-2 FAQ (*)
<URL:http://bmrc.berkeley.edu/projects/mpeg/faq/MPEG-2-FAQ.html/>
[14] MPEG Moving Picture Expert Group Information (*)
<URL:http://www.vol.it/MPEG/>
[15] MPEG-FAQ 4.1 (*)
<URL:http://www.mpeg1.de/mpegfaq/>
Olli-Pekka Auvinen
Last modified: Fri Oct 31 11:20:03 EET