Samenvatting Internettechnologie Daan Pape 3e bachelor informatica UGent 31 mei 2014 Internettechnologie 1 Daan Pape Inleiding 1.1 Basisprincipes van netwerkgebaseerde computersystemen Een systeem is opgebouwd uit verschillende interagerende deelsystemen die zelf opgebouwd zijn uit deelsystemen of atomaire componenten. De architectuur van een systeem is de structuur en organisatie van het systeem en deze bestaat uit 3 componenten: • Decompositie: het opsplitsen in deelsystemen zoals LAN, WAN, routers, hosts, . . . • Functionaliteit: de functionaliteit van een bepaalde server is bv. email • Interactie: hoe de communicatie tussen deelsystemen in elkaar zit. 1.2 Infrastructuur van netwerkgebaseerde systemen De infrastructuur is een platform voor specifieke applicatiesoftware en verzorgt communicatie, opslag, dataverwerking en interactie met de gebruiker. De hardware en softwareinfrastructuur kan men zien als een gelaagd systeem: applicatie middleware (ipc library, databank abstractie software) besturingssysteem (netwerkstack, bestandssysteem) hardware (netwerk, opslag) Iedere host heeft een OS voor netwerk, GUI, opslag, . . . de middleware is echter optioneel. De communicatiediensten zijn vandaag zeer belangrijk en moeten rekening houden met verschillende soorten communicatie. Zo kan men communicatie hebben in LAN’s waarbij de servers op dezelfde fysieke locatie staan of WAN’s waarbij dit niet zo is. Ook zijn de communicatienetwerken niet homogeen zoals mobiele netwerken. Een netwerk interpreteert geen data maar er wordt onderzoek gedaan op cognitive networking. Men wil vandaag vooral dat er geen congestion optreed op punten zoals de internetlijn, serverbelasting, peering punten, . . . Het bestandssysteem verzorgt veel taken: • Organisatie van bestanden in directories • Centralisatie van gegevens in server hosts (fysisch of logisch) wat backuppen makkelijker maakt. • Het toekennen van permissies aan gebruikers • File sharing Vaak zijn bestandssystemen over meerdere fysieke hosts gespreid en men spreekt dan van Distributed File System of DFS. De gebruiker ziet dit niet en men kan replicatiesoftware gebruike nvoor backups en beveiligde netwerkcommunicatie toepassen. Het gebruik van een DFS zorgt voor een lagere Total Cost of Ownership of TCO omdat het beheer eenvoudig en dynamisch is waardoor alles effici¨enter kan. De meeste applicaties maken gebruik van databanken die met een DBMS worden beheerd zoals MySQL, MSSQL, PostgreSQL, SQLite, . . . en er bestaan standaardbewerkingen die alle DMBS systemen kunnen zoals opslag van nieuwe data, verwijderen van data, zoeken naar data (filters), . . . Het is niet wenselijk deze standaardbewerkingen voor elk DBMS opnieuw te implementeren en daarom kan men van een middleware softwarelaag gebruik maken. Dit is een API die DBMS, OS en programmeertaal onafhankelijk is, voorbeelden: 1 Internettechnologie Daan Pape • ODBC of Open DataBase Connectivity: initieel enkel voor Windows maar nu voor de meeste besturingssystemen en het wordt door veel DBMS leveranciers ondersteund. • JDBC of Java DataBase Connectivity: een software API voor Java en als de DBMS software geen JDBC gebruikt is er een ODBC naar JDBC bridge. De veelgehoorde term the cloud is nogal vaag en kan software, gegevensopslag of infrastructuur betreffen. 1.3 Client/Server architecturen Deze architectuur is per definitie asymmetrisch wat wil zeggen dat vele clients ´e´en server aanspreken. De server is hierbij reactief omdat hij reageert op aanvragen van de clients die actief zijn. In dit soort architectuur wordt de business application gecentraliseerd en kan men zo goede beveiliging, onderhoud, bescherming, . . . aanbieden. De gebruiker heeft echter minder controle over de gebruikte versie van de software. Een server moet dus altijd beschikbaar zijn en weet niet wanneer een client een request zal sturen. Afhankelijk van wat de vereisten zijn voor de applicatie moet er dus aan redundantie gedacht worden en van aangepaste hardwareplatformen gebruik worden gemaakt. Clients mogen aan- en afgezet worden volgens behoefte van de gebruikers en we maken onderscheid tussen 3 soorten clients: 1. Fat client: zeer veel functionaliteit. 2. Thin client: uitsluitend presentatie en gebruikersinterface zoals een webbrowser. 3. Ultra-thin client: een apparaat enkel voor de grafische weergave van applicatieresultaten en verwerking van input van de gebruiker. Zoals remote desktop en Citrix. De presentatie wordt ook door de server gedaan. In een C/S architectuur hebben we typische verschillende lagen: • Presentation layer: de volledige gebruikerservaring met bv. een GUI zit hierin. Ook de formattering van data als die van de server wordt verkregen. De browser vervult meestal alle taken in de presentatielaag bij webtoepassingen. • Application layer: ook wel application logic of business logic. Deze laag omvat de applicatieservers die de applicatiefunctionaliteit implementeren, input ontvangen, beslissen welke acties er moeten worden ondernomen, data verwerken, . . . Veiligheid is zeer belangrijk in deze laag, zeker als men op het gevaarlijke internet moet. • Data layer: ook wel database layer of Enterprise Information System (EIS). Deze laag ontvangt en stockeert data uit de applicatielaag en verzorgt ook het opvragen en doorgeven van data terug aan de applicatielaag. Onder data verstaan we records, bestanden, . . . en voorbeelden zijn ERP systemen en andere MIS of Management Information System systemen. Men kan diverse lagen redundant uitvoeren. Zo kan men op de datalaag data repliceren en partitioneren met fileservers, DBMS systemen, ... Op de applicatielaag kan men gaan voor modulaire of redundante applicatielogica. Men kan zo een indeling van architecturen maken: • One tier: de 3 lagen zijn in 1 entiteit ge¨ıntegreerd en de clients zijn terminals die zowel presentatie, applicatie en data vanop de server benaderen. Typisch is dit een mainframe architectuur die zeer gecentraliseerd is wat onderhoud gemakkelijk en goedkoop maakt. 2 Internettechnologie Daan Pape • Two tier: De clients worden steeds krachtiger en de presentatielaag bevindt zich nu op de client. Op deze manier kunnen meer veeleisende presentatiemanieren worden gebruikt en het netwerk moet enkel nog data doorsturen. Een API (zoals REST) wordt mogelijk. Dit is voldoende voor veel netwerkgebaseerde systemen maar als informatie kritisch is, is dit systeem ontoerijkend. • Three tier: de drie lagen draaien nu elk op hun eigen machine. De presentatielaag bevindt zich bij de clients en zowel de applicatielaag als de datalaagdraaien op verschillende servers. Dit zorgt voor een hoge schaalbaarheid en beveiliging, de clients hebben namelijk geen rechtstreekse connectie met de datalaag. Ook kunnen verschillende applicaties dezelfde data gemakkelijk aanspreken. Men kan zowel logisch (firewall) als fysisch (verschillende datacenters) de data beveiligen. Men kan met contentnetwerken voor de data de performantie ook verbeteren. • Four tier: dit wordt gebruikt in webapplicaties. De applicatielaag wordt nu verder opgesplitst in: – Web layer of Integratielaag gericht op presentatie – Business logic zoals regels, sessiebeheer, . . . Grote webapplicaties hebben vaak deze architectuur en .NET en J2EE platformen hebben dit type architectuur. De Business logic gaat dan vaak via API invokatie terwijl de web layer in de browser draait. Interactie tussen de weblaag en business logic gebeurt met RMI of Remote Method Invokation. Dit laat toe dat gedistribueerde objecten met elkaar communiceren en er zijn heel wat techologie¨en zoals Java/RMI met Java Remote Method Protocol (JRMI), Distributed Component Object Model (DCOM) met Object Remote Procedure Call (ORPC), Common Object Request Broker Architecture (CORBA) met Internet InterORB Protocol (IIOP), .NET Remoting, . . . Onder business logic verstaan we: • Business objecten: bv. een cataloog, een winkelkarretje, een account, . . . • Business logic voor een object: bv. elke klant heeft een uniek account, een account bestaat uit naam, email en adres, . . . Soms spreken we van multi-tier als we de applicatielaag of middle tier verder opdelen. Een extra component is dan vaak de Data Access Layer (DAL). Het meerdere aantal lagen laat gemakkelijker onderhoud toe met een lagere TCO. Dit wordt typisch voor complexe software gebruikt waar meerdere personen onderhoud en beveiliging doen. De applicatieserver is dan vaak gedistribueerd en databankservers wordt door veel applicatieservers bevraagd. Een E-comerce platform zal typisch N-tier zijn opgebouwd. 1.4 Het opzetten en beheren van netwerkgebaseerde systemen Bij het opzetten van een dergelijk systeem moet men met enkele parameters rekening houden: • Is het wenselijk een systeem netwerkgebaseerd te maken, vaak wel. • Schaalbaarheid : het systeem moet goed kunne nomgaan met veranderlijke capaciteit en activiteit. Meestal zijn hiervoor verschillende hosts nodig wat de applicatie dus netwerkgebaseerd maakt. • Administratie: er is nood aan automatisatie om alles op orde te houden. Netwerkgebaseerd kan men dit gespecialiseerd doen door een goede scheiding van de componenten. 3 Internettechnologie Daan Pape Men moet dan een architectuur ontwerpen. Informatie is het basisproduct welke door data wordt voorgesteld. Men moet bij het ontwerp van de architectuur gemengt decompositie en assemblage toepassen. Decompositie is het opsplitsen in deelsystemen waarbij elk systeem onafhankelijk kan worden ontwikkelt en assemblage is de aanschaf en integratie van bestaande deelsystemen. Hoe meer deelsystemen hoe modulairder het systeem is. Bij het beslissen over de locatie van de data en de dataverwerking moet men rekening houden met 4 fundamentele taken qua data: 1. Verwerven 2. Opslaan 3. Verwerken 4. Presenteren Het toekennen van welke taken door welke host worden gedaan zal de performantie en communicatie bepalen. Steeds moet men zich afvragen hoe dicht de data zich bevindt, hoeveel gebruikers er zullen zijn, hoe veranderlijk de data is, . . . 1.5 Hoe Google werkt Het doel van Google is om het internet doorzoekbaar te maken en reclame te verkopen met AdWords en AdSense. Het werd opgericht door Larry Page en Sergey Brin na hun onderzoek aan Stanford University. Het google zoekmodel is gebaseerd op meer dan 100 verschillende parameters maar de belangrijkste is PageRank: • Gebaseerd op ’citations’ wat wil zeggen dat men kijkt hoe populair een url is door het aantal verwijzingen te tellen. • Het is een maat voor de waarschijnlijkheid dat een willekeurige surfer op die pagina terecht komt. De PageRank P R(A) van een webpagina A wordt als volgt berekent: P R(Tn ) P R(T1 ) + ··· + P R(A) = (1 − d) + d C(T1 ) C(Tn ) (1) waarin: • T1 , . . . , Tn : deze pagina’s bevaten een hyperlink naar A, de citations. • d: de ’damping factor’: dit is de waarschijnlijkheid dat een gebruiker een bepaalde pagina verlaat voor een andere, meestal d = 0.85. • C(x): het aantal linken dat vanuit pagina x vertrekt naar een andere pagina Er is steeds behoud van PageRank vanuit een bepaalde pagina. De berekening van PageRank is een iteratief proces en er zijn tools op het web die de PageRank kunnen berekenen. Soms gebeurt deze berekening via theoretische modellen of simulaties of soms is het gewoon een look-up service bij Google. Om te vermijden dat er SEO wanpraktijken gebeuren is niet bekend hoe de echte PageRank wordt berekend. Vanuit SEO standpunt wil men zoveel mogelijk inkomende links, citations. Hoe minder uitgaande links in de pagina die verwijzen naar je webpagina hoe beter, want de citations moeten uniek zijn. 4 Internettechnologie Daan Pape PageRank is uiteraard niet het enige criterium en moet gezien worden als een vermenigvuldigingsfactor in het hele zoekproces. De meeste zoekmachienes associeerden de tekst van een hyperlink, de anchor text, enkel met de pagina waarop hij voorkomt. Google associeert de anchor text ook met de webpagina waarnaar hij verwijst. Dit omdat anchors vaak goede beschrijvingen bevatten. Ook kunnen links naar afbeeldingen, video of audio wijzen die anders niet tekstgebaseerd kunnen worden geanaliseerd. Het is de enige manier om te crawlen op sommige dingen. Het gebruik van anchor text houdt ook risico’s in zoals een Google Bom. De gebruikers registreren veel domeinen die allemaal naar een site verwijzen met dezelfde anchortekst ”xyz”. Als men dan de term ”xyz¨ıntikt in Google is de kans groot dat men op die pagina terecht komt. Als veel gebruikers samenspannen kan dit effect ook optreden. Een voorbeeld zijn de woorden ”miserable failure”. Naast de anchor text wordt ook de volledige raw HTML van een pagina bijgehouden en de visuele presentatie van de woorden. Algemeen gebeuren volgende 4 stappen bij een zoekopdracht: 1. Zoek alle webpagina’s die de trefwoorden van de zoekactie bevatten. 2. Rangschik volgens de features per pagina zoals trefwoorden en opmaak ervan. 3. Breng het principe van anchor text in rekening. 4. Pas PageRank toe als vermenigvuldigingsfactor. Google gebruikt dus een zeer sterk gelaagde architectuur omdat men een goede kwaliteit wil aanbieden met een zeer goede performantie. Er is een instantaan resultaat voor zoekacties in een systeem met honderden miljoenen webpagina’s. Het Google-datacenter in Belgi¨e zorgt voor enkele milliseconden betere performantie in Europa. We bekijken nu de verschillende lagen: 1. Crawling: de GoogleBot download automatisch webpagina’s en kan dit snel en effici¨ent doen. Een URL server stuurt een lijst van de te downloaden URL’s naar de crawlers. De gedownloade pagina’s krijgen een unieke ID en worden gecomprimeert opgeslagen. 2. Indexing en Sorting: elk document wordt omgezet in een set van hits die in barrels of databases worden opgeslagen. Een hit is een woord met metadata zoals opmaak. Alle hyperlinks worden geparsed en in een ”Anchors’ database opgeslagen met de oorsprong, het doel en de anchor text. De sorter sorteert de inhoud van de barrels zodat de docID’s en wordID’s gemakkelijk gevonden kunnen worden. 3. Interne operaties: de URL resolver haalt URL’s uit de anchor databae en converteert ze naar absolute URL’s waarna ze aan de docID’s in de barrels worden gelinkt. Er wordt dan een database met alle docID’s opgebouwd en er wordt een checksum berekend van de URL’s gelinkt aan de docID’s en daarop wordt gesorteerd. Zoeken kan nu met binary search worden gedaan. Een database met alle links wordt gebouwd wat dus een verzameling van paren docID’s is, daaruit wordt dan de PageRank berekend. 4. Searching: het Google Query Evaluation Process verloopt in 5 stappen: (a) Interpreteer de query. (b) Zet zoekwoorden om in wordID’s. (c) zoek in de documentenlijst naar docID’s die alle zoektermen bevatten. (d) Bepaal pagina rank op basis van hit-types (title, anchor, ...) met hun gewicht. (e) Combineer het resultaat met PageRank. 5 Internettechnologie 1.6 Daan Pape Hoe Amazon werkt Amazon wil een plaats zijn waar mensen alles kunnen vinden. Ze werken daarvoor samen met e-commerce partners en bieden vele diensten aan. Amazon heeft ook andere diensten zoals IMDB. De Amazon Web Services of AWS zijn cloud diensten: • EC2 of Elastic Compute Cloud: dit is aanpasbare rekencapaciteit aangerekend in CPUuur en dataverkeer. Er kunnen binnen minuuten servers aangemaakt worden met AMI’s of Amazon Machine Images. Je kan publieke gebruiken met linux of windows, private met eigen app’s of betalende door third party. • S3 of Simple Storage Service: men kan objecten tot 5Gb opslaan in de cloud. Dit kan zowel publiek en privaat door URL met ACL (Acces Control List). Er is een hoge beschikbaarheid van 99,99% en ondersteuning voor BitTorrent en verschillende API’s. De objecten zitten in buckets. • SimpleDB • SQS of Simple Queue Service: een schaalbare berichtenservice die zeer betrouwbaar is en tot miljoenen berichten per dag kan gaan. Inter Process Communicatie, buffering, . . . zijn mogelijkheden en er is een simpele 10 methoden platformonafhankelijke API. • Mechanical Turk: sommige taken zijn moeilijk voor een computer maar makkelijk voor een mens zoals beeldherkenning, spraakverwerking, . . . . De Mechanical Turk API stelt ontwikkelaars in staat gemakkelijk menselijke intelligentie toe te passen. De developer geeft een Human Intelligence Task op die aan echte mensen worden overgelaten. Voorbeelden zijn vertalingen, the sheep market, . . . Deze diensten worden aangeboden om de rompslomp en kosten van web development weg te namen. Het beheer van servers, voorzien van koeling, bandbreedte, stroom en het voorbereiden op schaalvergroting is vaak moeilijk en duur. Men moet grote investeringen doen op voorhand indien men wil voorbereid zijn. Obstakels zijn schaalvergroting zoals een continue stijging in gebruik (youtube, facebook). Andere opstakels zijn pieken zoals Slashdot of de jaarlijkse belastingsaangifte. De oplossing is Web-scale computing waarbij vaste kosten voor een hoge capaciteit variabel worden omdat er schaalbaarheid op aanvraag is. Er is een hoge beschikbaarheid en betrouwbaarheid. En de envoudige API’s en lage TTM (Time To Market) maken het kost-effectief. Amazon bekijkt welke delen van zijn techologie het aan ontwikkelaars kan aanbieden, dan worden obstakels om ermee aan de slag te gaan verwijderd of verkleind en zo bekomt men een verzameling API’s en businessmodellen voor Amazon services. Ze bieden zowel data aan, infrastructuur (SQS, S3, EC2), zoeken tot zelfs mensen. 1.7 Energieverbruik Webapplicaties vereisen veel rekenkracht en dus moeten meer machines worden ingezet. Datacenters zetten daarom massaal in op groene energie en datacenters worden strategisch geplaatst in koude gebieden dicht bij water. 2 Clustering Bij de karakterisering van de werklast bij een goede capaciteitsplanning is clustering zeer belangrijk. Deze algoritmen kunnen het optimaal aantal basiscomponenten bepalen en ze geven waarden voor de parameters die deze basiscomponenten karakteriseren. We vermelden hier twee basisprincipes MST of Minimum Spanning Tree en het k-gemiddelden algoritme. 6 Internettechnologie 2.1 Daan Pape MST-algoritme Dit is een hi¨erarchisch algoritme dat start met het beschouwen v an alle individuele gebeurtenissen als zijnde clusters. Twee clusters die het dichtst bij elkaar liggen worden dan samengevoegd tot een nieuwe cluster totdat het gewenst aantal bereikt is. Meer formeel: 1. Als de performantiedata van P gebeurtenissen gekend is waarbij elk meetpunt uit K metingen bestaat. We hebben danP meetpunten van de vorm (Dp1 , Dp2 , . . . , DpK ) met p = 1, . . . , P . 2. Kies J als het gewenste aantal clusters. 3. Stel het actuele aantal clusters j gelijk aan het aantal meetpunten, dus j = P . 4. Herhaal volgende stappen totdat j = J: (a) Bepaal de parameterwaarden van de centro¨ıden C1 , . . . , Cj voor elk van de j actuele clusters. Deze zijn gemiddelden van de parameterwaarden van alle meetpunten van de cluster. (b) Bereken de (bv. euclidische afstand) tussen elk paar centro¨ıden en bouw de j × jinterclusterafstandsmatrix op. Element (m, ) stelt dan de afstand voor tussen clusters m en n. (c) Bepaal het minimale van nul verschillende element (q, r) in de interclusterafstandsmatrix. (d) Voeg de clusters q en r samen en verminder het actuele aantal clusters j met 1. 2.2 k-means Het k-gemiddeldenalgoritme is een niet-hi¨erarchisch clusteringsalgoritme dat start met het kiezen van J meetpunten/gebeurtenissen. Deze worden als beginschatting gebruikt voor de centro¨ıden van de J clusters die moeten worden gevonden. De andere meetpunten worden toegevoegd aan de dichtstbijzijnde clusters. Deze allocatieprocedure wordt iteratief uitgevoerd totdat geen enkel meetpunt meer van cluster verandert, of tot een vooraf vastgelegd maximum aantal iteraties is bereikt. Meer formeel: 1. Als de performantiedata van P gebeurtenissen gekend is waarbij elk meetpunt uit K metingen bestaat. We hebben danP meetpunten van de vorm (Dp1 , Dp2 , . . . , DpK ) met p = 1, . . . , P . 2. Kies J als het gewenste aantal clusters. 3. Kies I het maximum aantal iteraties. 4. Kies J startpunten die zullen gebruikt worden als initi¨ele schattingen voor de clustercentro¨ıden. Men kan bv. de eerste J meetpunten kiezen of de J meetpunten die zich mutueel het verst van elkaar bevinden. 5. Beschouw elk meetpunt en vloeg het toe aan de cluster met de dichtstbijzeijnde centro¨ıde. Herbereken de parameterwaarden van deze centro¨ıde met het nieuwe meetpunt erbij. 6. Herhaal iteratiestap 4 tot geen enkele meetpunt meer van cluster verandert of tot I iteraties werden gedaan. Voor een voorbeeld van het clusteringalgoritme zie het bijbehorende clusterdocument. 7 Internettechnologie 3 Daan Pape Operationele aspecten 3.1 Performantie van webgebaseerde toepassingen Bij het meten van de tijd die verstrijkt om een webrequest te beantwoorde zijn 3 componenten belangrijk: 1. Client (browser): de eidgebruiker klikt op de link waarna de browser in lokale cache kijkt. Indien de pagina gevonden werd is de antwoordtijd Rc . Anders moet er een IP-adres aan de DNS server worden gevraagd, een TCP connectei gemaakt worden en een HTTP request verzonden en ontvanen worden. 2. Newerk: transport van de data 3. Server (webserver): de server ontvangt de HTTP-vraag en voert deze uit waarna het antwoord wordt verstuurd en afhankelijk van persistent of niet de connectie wordt gesloten. Er zijn dus heel wat verschillende tijden om te meten: • Rr : de totale antwoordtijd • RN 1 : de transfer van de HTTP-vraag (client naar server) • RN 2 : de transfer van het HTTP-antwoord (server naar client) • RS : de server residentietijd (tijd voor serveractiviteit) • RC : de client residentietijd (tijd voor clientactiviteit) Als we stellen dat RN = RN 1 + RN 2 dan geldt: Rr = RC + RN + RS (2) Hierbij is RC << RN + RS . Indien we met caching te maken waarbij hebben we: pC = NC NP (3) met pC de succesrate wat het aantal cache hits gedeeld door het totaal aantal aanvragen is. De totale antwoordtijd Rr wordt nu dus: Rr = pC RC + (1 − p)Rr (4) De cachegrootte heeft dus een grote impact op de browsesnelheid. Een succesvolle webtoepassing heeft een sterke verhoging van het aantal clients en servers. Schaalbaarheid is dus zeer belangrijk zeker als men weet dat de globale performantie wordt beperkt door de traagste component in het systeem. Een bottleneck is een deelsysteem dat de globale performantie beperkt en identificatie daarvan is zeer belangrijk en deze moeten het eerst worden aangepast bij upscaling. Het is belangrijk om een inschatting te kunnen maken van de benodigde resources. Zo kan men schatten heoveel objecten en welk type er zullen worden opgeslagen, hoeveel requests met welke omvang er zullen zijn, . . . Voor een publieke applicatie is dit veel moeilijker dan voor een interne applicatie. Voor een systeemadministrator is performantie gelijk aan de verreiste bandbreedte, de gegarandeerde uptime, . . . voor gebruikers is dat de beschikbaarheid, de snelheid van antwoorden, . . . Hoe performant een applicatie is, is ook grotendeels perceptie en er moeten dus kwantitatieve performantiematen zijn. Bij webtoepassingen heb je niet steeds alles onder controle (flash crowds, 8 Internettechnologie Daan Pape slechte verbindingen, . . . ) Enkele belangrijke performantiematen zijn de volgende: • Throughput: de verwerkingscapaciteit vande connectie tussen client en server. Dit wordt in aantal HTTP-requests/sec of bps uitgedrukt. • Latency: de tijd die de server nodig heeft om antwoord te formuleren. De totale antwoordtijd hnagt af van de latency en de throughput en de verwerkingstijd van de clients. Afgeleide maten zijn packet loss in procent wat het aantal fouten per seconde betekent. De populariteit van de toepassing komt overeen met het aantal gevraagde connecties met de server. Service Levels zijn niveau’s die aangeven welke mate van dienstverleningskwaliteit wordt geleverd. Periodiek wordt gemeten wat de performantiematen zijn om adequate capaciteitsplanning te kunnen uitvoeren op piekmomenten. Een SLA of Service Level Agreement is een overeenkomst tussen provider en afnemer over de geleverde kwaliteit. Gebruikers ervaren 0.1 seconde als instantaan, 1 seconde als traag maar doenbaar en vanaf 10 seconden is het zeer slecht. Proxy servers die dichter bij de user staan kunen latency korter maken en bandbreedtevereisten verlagen door ze te spreiden. De Content Delivery Netwerken of CDN’s doen dit. De proxy server is nu een client en server tegelijk met een lokale cache. Voor een proxyserver kan men volgende performantiematen gebruiken: • De succesverhouding pC = NC NP : dit zecht niets over de bandbreedte. • De byte-succesverhouding: dit zegt wel iets over de bandbreedte. • Hoeveelheid getransfereerde data: het totaal aantal verstuurde bytes uit de cache. Scripting voegt veel functionaliteit toe en maakt websites dynamisch. De keuze over welke scripts op de server lopen en welke op de client kan een grote impact hebben op de globale performantie. De distributie van de te verwerken objecten (bv. bestandsgrootte) en de populariteit ervan zijn twee belangrijke aspecten van de performantie. De invloed van de bestandsgrootte-distributie (of bijhorende verwerkingstijd) heeft volgende aandachtspunten: • Een niet te verwaarlozen staart wat wil zeggen dat de kans op zeer grote bestanden niet te verwaarlozen is. • Afgeleide grootheden zoals gemiddelde vertonen grote variabiliteit. • De betekenis van individuele performantiemetingen op basis van bestandsgrootte moeten geminimaliseerd worden. De verwerkingstijd van bestandsgrootte-distributie of bijhorende verwerkingstijd volgt veelal een pareto-distributie: 9 Internettechnologie Daan Pape We kunnen de CPU-belasting indelen in klassen en dan daarover het gewogen gemiddelde nemen. Stel volgende verdeling van de CPU-tijd van 10 HTTP-requests reeds gesorteerd: 0.3 0.4 0.6 0.7 t < 1s 0.9 1.4 1.5 1.5 t ≤ 6s 1.7 18.1 t ≥ 6s De gemiddelde CPU tijd over alle klassen is dan 6,7s. De algemeen gewogen CPU tijd wordt echter: 5 ∗ 0.58 + 4 ∗ 1.53 + 18.1 = 2.71 10 De 2,71 seconden is nu wel de meest relevante waarde. Niet enkel de bestandsgrootte is belangrijk maar ook de populariteit van de objecten. Dit is ook een goed gedocumenteerd fenomeen en er bestaat de wet van Zipf die stelt dat hoe groter de populariteitsrang p hoe minder populair (f = frequentie van optreden) het object is: f∼ 1 p (5) De populariteitsrang is gewoon het volgnummer van de pagina indien deze op dalende populariteit worden gesorteert. Stel dat je paginas A en B hebt waarbij pagina B 100 bezoekers per dag heeft en pagina A 10 bezoekers, dan krijgt pagina B populariteitsrang 1 en pagina A populariteitsrang 2. Ter volledigheid geven we nog eens de netwerkkarakteristieken weer: • Latentie of vertraging: dit is de tijd nodig om ´e´en pakket van client naar server of omgekeerd te transfereren. De Round Trip Time of RTT is een maat om latentie uit te drukken in seconde en telt de totale tijd voor een pakket om aangevraagd en teruggezonden te worden. • Bandbreedte: een paat voor de snelheid waarmee data kan worden verzonden, in bps uitgedrukt. • Bandbreedte-latentieproduct een capaciteit voor datatransfer van de client naar de server of omgekeerd in aantal bit of byte. Er is altijd een groot verschil tussen gemiddelde activiteit en piekactiviteit, daarom is het aan te raden om met percentielen te werken. 3.2 Capaciteitsplanning Een belangrijk begrip bij capaciteitsplanning is adequate capaciteit en er is een methodologie nodig voor capaciteitsplanning met: • Effici¨ente (deel)systeemconfiguratie • Geschikte netwerk- of systeemconfiguratie • Kosteffici¨entie met personeel- en investeringskosten Een SLA is het contractueel vastleggen van performantievereisten zoals een server die minimum zoveel tijd beschikbaar moet zijn of zoveel requests per seconde moet aankunnen. Als er geen SLA is geldt een best-effort approuch waarbij men een zo goed mogelijke dienstverlening nastreeft. Bij het kiezen van de goede technologie speelt niet alleen de performantie een rol maar ook de kennis, de kost, . . . Hoe strenger de SLA is hoe hoger de kosten typisch zijn en er zijn 2 types kosten: • CAPEX: dit zijn de opstartkosten en omvatten hard- en software, installatie, personeel, . . . • OPEX: operationele kosten met administratie, onderhoud, telecomkosten 10 Internettechnologie Daan Pape Schaalbaarheid is belangrijk maar niet altijd eenvoudig te realiseren. De definitie van adequate capaciteit is nu dus: • Het continu realiseren van de SLA’s. • Dit gebruik makende van vooraf gedefinieerde technologie¨en/standaarden • De realisatie gebeurt binnen de beperkingen van de kosten. De heterogeniteit aan diverse deelsystemen maakt het soms moeilijk, zo zijn er veel OSen, hardwaresooften, . . . Er zijn 3 modellen om de adequate capaciteit bij C/S-gebaseerde systemen te bepalen: 1. Werklastmodel: dit model beschrijft de vraag naar middelen binnen een representatieve tijdsspanne. 2. Performantiemodel: dit voorspelt de systeemperformantie als functie van de systeembeschrijving en de werklastparameters. De antwoordtijden en verwerkingssnelheid komen dan uit het model en deze kunnen met de SLA vergeleken worden. 3. Kostenmodel: de kosten voor soft- en hardware, telecom en administratie van het systeem worden bekeken. 3.2.1 Werklastmodellen De werklast wordt beschreven door een systeem in deelsystemen op te splitsen en deze dan met kwantitatieve parameters te beschrijven. Twee basisparameters zijn: • Workload Intensity (WI): een maat voor de globale load op het systeem. • Service Demand (SD): een maat voor tijd nodig voor elke resource component (bv. CPU, RAM). Veel parameters worden afgeleid of geschat omdat ze niet rechtstreeks kunnen worden gemeten. Bij een hoge werklast zijn er veel gebeurtenissen en alle individuele werklastparameters van de gebeurtenissen bekijken is dan niet altijd relevant. Daarom gebruiken we een compacte representatie, namelijk het werklastmodel. We splitsen door middel van clustering de werklast op en berekenen de gemiddelden van de clusters omdat het globaal gemiddelde niet veel zegt. Het aantal clusters be¨ınvloed de nauwkeurigheid van het werklastmodel en clusteringsalgoritmen berekenen 11 Internettechnologie Daan Pape het optimaal aantal clusters. Idealiter geven performantiemonitors een waarde aan voor elke werklastparameter. In de realiteit zijn er vaak geen goede performantiemonitors beschikbaar en noodgedwongen wordt er te weinig tijd aan performantiemonitoring besteed. Sommige monitors geven globale parameter waarden zoals het totaal aantal getransfereerde pakketten in LAN, totale CPU benutting, . . . opsplitsing is dan beter en vuistregels om dat te doen werken vaak al goed. Vaak is het afdoende enkel de performantieparameters van de bottlenecks te meten en deze dan te vertalen naar andere omstandigheden en types van hardware. Best kiest men een vastgelegde benchmark als maatstaf. Op die manier kan men een syntetisch model gebruiken om het model te calibreren indien het verschil tussen de syntetische en werkelijke werklast te groot wordt. Op basis van de huidige toestand en de historiek kan men de toekomstige werklast en pieken voorspellen. Op deze manier kan men een strategie uitstippelen en eventueel hardware aanpassen. Een correcte trendanalyse is dus zeer belangrijk. 3.2.2 Performantiemodellen In dit model is het systeem een black box. Interne details worden niet gemodelleerd en enkel verwerkingscapaciteit wordt gemodelleerd met de verwerkingsfunctie of throughput function: X0 (k) met k het aantal aanwezige aanvragen (6) Het toestandstransitiediagram (TDD) of State Transition Diagram (STD) bevat de mogelijke toestanden van (deel)systemen en de transities tussen toestanden waarin het systeem zich kan bevinden. Een alternatief is het modelleren van individuele componenten/deelsystemen. Het eerste servermodel gaat uit van een oneindige populatie en oneindige wachtlijn. We nemen nu een aantal parameters op in het model: • λ (aanvragen/s): de aankomstsnelheid van de aanvragen • X0 (k) = µ: we modelleren een homogene werklast waarbij alle aanvragen statistisch gelijk zijn en enkel het aantal een invloed heeft. We hebben dus een constate verwerkingsfunctie. De oneindige wachtlijn in het model zorgt ervoor dat alle aanvragen worden behandeld en er dus geen verloren gaan. We gaan dan ook uit van een operationeel overzicht waarbij het aantal aanvragen bij het begin van de observatie gelijk is aan dat van het einde van de observatie. Tijdens de observatie kan het wel schommelen. We hebben dus: λ (aanvr/s) aankomst request server → aanvraag in wachtlijn → µ (aanvr/s) aanvraag wordt behandeld Het model berekent: • Het model moet nu pk berekenen, dat is de fractie van de tijd dat er k aanvragen in de server aanwezig zijn. • Het gemiddeld aantal aanwezig aanvragen. • De gemiddelde response tijd. • De benuttiging van de server. • De verwerkingssnelheid van de server. 12 Internettechnologie Daan Pape De toestand van de server wordt door 1 parameter gekarakteriseerd, namelijk het aantal aanvragen aanwezig in de server. Dit heeft als gevolg dat het gedrag onafhankelijk is van de manier waarop de toestand werd bereikt en dat het gedrag onafhankelijk is van de huidige toestand. We hebben een geheugenloos of Markov -systeem met een aftelbaar oneindig aantal toestanden k en kunnen dit in een TTD voorstellen: Het operationeel evenwicht stelt nu dat de flow in en uit elke toestand (de pijlen) gelijk is, dit noemen we het global balance principle. Dit geeft ons een evenwichtsvoorwaarde aan de grenzen: λp0 = µp1 (λ + µ)p1 = λp0 + µp2 (λ + µ)p2 = λp1 + µp3 ··· → → → µp1 µp2 µp3 ··· µpk = λp0 = λp1 = λp2 = λpk−1 Dit heeft als gevolg: k λ pk = p0 µ met k = 0, 1, 2, . . . (7) en dus is p0 de fractie van de tijd dat het systeem idle is. Het systeem bevindt zich steeds in een toestand en dus: " ∞ #−1 k ∞ ∞ X λ k X X λ λ = 1 ⇒ p0 = =1− (8) pk = p0 µ µ µ k=0 k=0 k=0 De voorwaarde voor convergentie is nu dat de snelheid van de aankomst van de vragen λ kleinder is dan de verwerkingssnelheid µ en dus: λ<µ De benuttiging U van de server wordt gegeven door: U = 1 − p0 = λ µ ⇒ pk = (1 − U )U k (9) De toestandsdistributie is dus enkel afhankelijk van de benuttiging en niet van de individuele waarden. Het gemiddeld aantal aanvragen in de server is nu dus gelijk aan: N= ∞ X k=0 kpk = (1 − U ) ∞ X kU k = (1 − U ) k=0 U U = 2 (1 − U ) 1−U (10) en de gemiddelde verwerkingssnelheid van de server is dus gelijk aan: X = U µ + (1 − U ) · 0 = λ 13 (11) Internettechnologie Daan Pape De gemiddelde verwerkingssnelheid is dus de gemiddlede aankomstsnelheid. Dit is logisch aangezien er geen aanvragen verloren gaan. We kunnen nu ook de gemiddelde antwoordtijd gaan berekenen: U/λ 1/µ U 1 S N = RX ⇒ R = = = = 1−U λ 1−U 1−U 1−U (12) waarbij S de gemiddelde verwerkingstijd per aanvraag is. Als U laag is (naar 0 gaat) dan is de gemiddelde antwoordtijd de gemiddelde verwerkingstijd per aanvraag en is er geen verlies ten gevolg van wachten. Als U hoog is (naar 1 gaat) dan is de antwoordtijd oneindig lang en is er dus veel tijdsverlies ten gevolg van wachten in de wachtlijn. Het tweede servermodel heeft een oneindige populatie maar een eindige wachtlijn. Net zoals in het eerste model is er dus een zeer groot aantal gebruikers maar de server heeft een beperking op het aantal aanvragen dat kan worden behandeld en qua geheugen en opslag. Niet alle inkomende aanvragen kunnen in de wachtlijn worden gezet: k≤W (k = 0, 1, 2, . . . , W ) We passen het model nu aan om hiermee rekening te houden. De toestand van de server wordt nog atlijd door n parameter beschreven met de bijkomende voorwaarde dat er een eindig aantal toestanden zijn: De evenwichtsvoorwaarde aan de grenzen is dus: k λ pk = p0 k = 0, 1, 2, . . . , W µ Om p0 te berekenen weten we dat het systeem zich in ’een’ toestand bevindt: # " k W W W +1 −1 X X 1 − (λ/µ) 1 − λ/µ λ = 1 ⇒ p = pk = p0 = p0 0 W +1 µ 1 − λ/µ 1 − (λ/µ) k=0 (13) (14) k=0 De benuttiging van de server wordt gegeven door: h i W (λ/µ) 1 − (λ/µ) U = 1 − p0 = 1 − (λ/µ) (15) W +1 en de fractie verloren aanvragen is dan pverlies = pW . Op een gegeven punt heeft het verlengen van de wachtrij geen invloed meer op het aantal verloren aanvragen. Het is een dalend exponentieel verband. We berekenen nu het gemiddeld aantal aanvragen in de server: N= W X kpk = p0 k=0 W X k=0 14 k k (λ/µ) (16) Internettechnologie Daan Pape Met behulp van de hulpformule: W X k=0 bekomen we kak = W aW +2 − (W + 1)aW +1 + a (1 − a)2 (17) h i W +1 W (λ/µ) W (λ/µ) − (W + 1) (λ/µ) + 1 h i N= W +1 1 − (λ/µ) (1 − λ/µ) (18) Op een gegeven moment zal het gemiddeld aantal aanvragen in de server een constante worden en niet langer stijgen indien de wachtrij langer wordt. Links zien we dus de fractie verloren aanvragen in functie van de lengte van de wachtlijn en rechts het gemiddeld aantal aanvragen in de server in functie van de lengte van de wachtlijn. De gemiddelde verwerkingssnelheid van de server wordt nu gegeven door: W X = U · µ + (1 − U ) · 0 = λ 1 − (λ/µ) W +1 1 − (λ/µ) (19) De gemiddelde verwerkingssnelheid is dus kleiner dan de gemiddelde aankomstsnelheid omdat er aanvragen verloren gaan. De gemiddelde antwoordtijd wordt nu gegeven door: W +1 R= W N W (λ/µ) − (W + 1) (λ/µ) h i =S W X 1 − (λ/µ) (1 − λ/µ) +1 (20) Net zoals het gemiddelde aantal aanvragen zich stabiliseerd met een stijgende wachtlijn doet ook de gemiddelde verwerkingssnelheid zich en dit met hetzelfde soort verband tussen de twee, exact hetzelfde met de gemiddelde antwoordttijd, dit is zeer logisch natuurlijk. We hebben dan ook een veralgemeend servermodel met als karakteristieken: • Een oneindige populatie • De aankomstsnelheid van de aanvragen hangt af van de toestand • De behandelingssnelheid van de aanvragen hangt af van de toestand • Er is een eindige wachtlijn 15 Internettechnologie Daan Pape We berekenen nu weer deze formules en bekomen: pk = p0 k−1 Y i=0 W X k=0 p0 k−1 Y i=0 λi =1 µi+1 λi µi+1 (21) " W k−1 #−1 X Y λi p0 = µ i=0 i+1 ⇒ (22) k=0 U = 1 − p0 X= W X µk pk (23) (24) k=0 N= W X kpk (25) k=0 W X kpk N k=0 = W R= X X µk pk (26) k=0 4 Hypermedia De termen het internet en het web worden vaak verkeerdelijk als synoniemen gebruikt: • Het internet: een internationaal computernetwerk • Het web: het WWW of World Wide Web is een informatiesysteem bovenop het internet bestaande uit geconnecteerde documenten en diensten. Vroeger werden meestal adressen van ftp servers gegeven of emails met commando’s. Het internet was toen al goed uitgerold. Op het huidige web heb je echter geen technologische kennis meer nodig en verkrijg je een webpagina met links naar alle nodige documenten. We hebben dus: • Hypertext: een document waarin kan worden gelinkt naar andere documenten. Vanop een startpagina kan men dus naar alle beschikbare data gaan. • Hypermedia: het zelfde zoals hypertext maar dan voor gelijk welke media. De visie en implementatie van hypertext is veel veranderd van de originele visie van Ted Nelson. Hij had een fexibele manier van documenten linken voor ogen die multidirectioneel is en waarbij alle documenten aan elkaar hangen. Met een onderverdeling in: • Chunk-style-hypertext: keuzemogelijkheden via bv. voetnoten. • Collateral hypertext: annotaties over de eigenlijke tekst. • Strechtext: evoluerende teksten met externe fragmenten en ’LOD’. • grand hypertext: alles wat bestaat over een onderwerp. 16 Internettechnologie Daan Pape Het Xanadu platform van Ted Nelson alsook enkele andere platformen braken niet door omdat ze gesloten waren. De gepresenteerde informatie bevatte keuzes beperkt tot een lokale verzameling documenten. Er was n lokale databank en links naar andere systemen of software was niet mogelijk. Het idee van Tim Berners Lee werd niet enthousiast onthaald omdat het enkel tekst bevatte terwijl de andere systemen afbeeldingen, kaarten, . . . hadden. Het World Wide Web was echter heel simpel en had globale schaalbaarheid waardoor dit een van de snelst groeiende toepassingen was op het Internet. Het systeem bestaat uit 3 basiscomponenten: 1. Uniform Resource Locator (URL): dit is een unieke identificatie van resources bestaande uit een protocol, domein en pad. 2. HyperText Transfer Protocol (HTTP): dit werkt met een request/response paradigma en bevat standaardmethoden voor data. De server antwoordt dan met de gevraagde representatie. 3. HyperText Markup Language (HTML): deze taal wordt gebruikt om hypertextdocumenten op te stellen. De browser geeft deze weer en kan de URL’s gebruiken. Bovenstaande 3 zaken die samen het Web vormen zijn toevallig zo groot geworden omdat er in het begin nog geen formele definitie en analyse van de architecturale principes was. Vandaag wordt HTTP voor veel meer dan alleen maar HTML gebruikt volgens de REpresentational State Transfer of REST manier. Dit werd in 2000 voorgesteld door Roy Thomas Fielding en het is een conceptueel framework voor het analyseren van gedistribueerde hypermediasystemen zoals het Web. Het is een manier om data te bekijken en te bewerken en is toekomstbestendig: • De start is een systeem zonder ’grenzen’ • Er worden constraints toegevoegd om gewenste eigenschappen te bekomen. • De client en server zijn volledig ontkoppelt zodat er een onafhankelijke evolutie kan zijn. • Twee bekende constraints zijn: – Client-server constraint: dit leidt tot de gewenste schaalbaarheid. – Cacheability constraint: antwoorden kunnen en mogen gecached worden, ook dit leidt tot schaalbaarheid. HTTP is niet de enige implementatie van REST en niet elke HTTP toepassing houdt zich aan de REST constraints. Het is echter wel belangrijk om zich aan de REST constraints te houden om alle gewenste eigenschappen ervan te bekomen. Twee unieke constraints voor REST (en dus het Web) zijn statelessness en uniforme interface. Het toestandsloos zijn wil zeggen dat de interpretatie van een request niet mag afhangen van de vorige request. Dit leidt tot volgende eigenschappen: • Visibility: elke request bevat alle nodige context om het te begrijpen. De request is op zichzelf dus al voldoende om de interactie te visualiseren. • Reliability: het falen van een request heeft geen impact op het al dan niet falen van een andere request • Scalability: de server hoeft geen toestand bij te houden waardoor meer requests kunnen worden afgehandeld. Deze architectuur wil niet zeggen dat de server helemaal geen toestand bijhoud, we maken onderscheid tussen: • Resource state: deze wordt op de server bijghouden en betreft resources. Deze toestand is de gecombineerde toestand van alle resources binnen een applicatie en wordt wel op de server opgeslagen. Dit maakt dus geen deel uit van de statelessness constraint. 17 Internettechnologie Daan Pape • Application state: deze zit vervat in de body van berichten en deels op de client. Deze toestand beschrijft waar de client zich bevind in de interactie met de resource state en bevat info zoals de ’user agent’, welke links de client naartoe kan, of de client ingelogd is. . . Een resource is elk stukje informatie dat benoemd kan worden, in de web-toepassignen wereld zijn het conceptuele stukken informatie die door de server kunnen worden aangeboden. Een resource identificeert constante concepten en dus geen concrete waarden die een concept aanduiden op een bepaald ogenblik. Een resource is dus nooit gelijk aan zijn waarde. Clients kunnen de resource state bekijken en/of manipuleren en dat is net waarom een client met een server interageert. De resources zijn namelijk niet beschikbaar op de client en daarom wordt het client/server-paradigma gebruikt. Het is niet de taak van de server om de application state bij te houden. Als een antwoord verstuurd is mag de server vergeten dat dit gebeurde en dit komt de schaalbaarheid ten goede. Het maakt niet uit hoeveel clients er verbinden aangezien ze zelf hun application state bijhouden. De REST architecturale stijl benadrukt sterk de uniforme interface: • 4 constraints: identificatie van resources, manipulatie van resources via representaties, zelfbeschrijvende objecten, hypermedia als moter van application state (hypermedia constraint) • Dit leidt tot simplification, visibility en independent evolution Een resource moet uniek identificeerbaar zijn en elk stukje info dat uniek identificeerbaar is, is een resource. Een resource kan meerdere identifiers hebben maar elke identifier mag slechts naar ´e´en resource wijzen. Op het web zijn de URL’s de identifiers. In REST hebben de clients nooit rechtstreekse toegang tot resources en alle interacties gebeuren via representaties. Een representatie representeert een resource in een formaat gekozen door de client of server (in het web bv. HTML, txt, JSON, RDF, . . . ) . Dit formaat wordt ook wel het media type genoemd en eenzelfde resource kan soms in meerdere media types worden voorgesteld. Een representatie omvat de data en de metadate (bv. de HTML headers). Berichten moeten zelfbeschrijvend zijn en dus zonder voorgaande informatie kunnen worden ge¨ınterpreteerd, of dus zonder out-of-band informatie. HTPP heeft hiervoor de bekende GET, POST, PUT, DELETE, . . . methoden. Out-of-band info zou bijvoorbeeld documenten leesbaar voor mensen kunnen zijn, clients kunnen daardoor moeilijker met de toepassing interageren. Hypermedia is de motor van application state. Er wordt vereist dat de interactie gegeven wordt door informatie in hypermedia representaties die door de server uitgestuurd worden. Dit is dus fundamenteel verschillend van: • Out-of-band informatie zoals documentatie • Een lijst met stappen zoals bij RPC interacties Een REST systeem moet de representaties van hypermedia aanbieden die elementen bevatten die een client toelaten naar een volgende stap te gaan. In HTML zijn dit links, knoppen en formulieren. Andere representaties hebben andere elementen. Men verwacht dus dat een webpagina links bevat naar alle mogelijke volgende stappen, dit is echter niet altijd zo. Zo kan een webshop niet altijd een rechstreekse productlink aanbieden en men noemt dit unidirectionele links. Hypermedia is belangrijk omdat machines niet zo gemakkelijk als mensen manieren vinden om wel tot dat product te komen. Voor een machine moet men een Web API maken zodat deze gemakkelijk met de data overweg kan. In de praktijk bevatten representaties voor machines vaak geen hypermedia controls, hierdoor moetzen ze strikt geprogrammeerd worden met vaste adressen. 18 Internettechnologie Daan Pape REST bestaat dus uit 3 componenten: • Resources: zonder constraints en dit zijn adressen. • Acties: met constraints en dit is bv. GET, POST, . . . • Representaties: met constraints en dit si bv. JSON, HTML, . . . Met hypermedia op het web bedoelt men de simultane presentatie van informatie en controls. De representatie moet dit dus ondersteunen, maar het is niet pers´e nodig dat info en controls met elkaar verweven zijn, er moet enkel simultane toegang zijn. De affordance tussen dingen stelt hoe duidelijk het is dat je een actie kan ondernemen met iets. Sommige voorstellingen hebben een slechte affordance waarbij het niet duidelijk is welke acties je kan ondernemen met de data. Er zijn 3 types van machine clients: 1. Web browsers: bestuurd door mensen en toont hypermedia en verbetert de browsing ervaring afhankelijk van de content en representatie. 2. API client: een softwaretoepassing. 3. Autonome agent: kan met meerdere API’s interageren en complexe taken uitvoeren zonder daarvoor expliciet te zijn geprogrammeerd. 5 Metadata en semantiek 5.1 Metadata Er is een overload aan informatie en om informatie te filteren is er nood aan metadata, de vele multimediabestanden vereisen ook metadata. Vroeger was metadata data over data waardoor men makkelijk con categoriseren, zoeken, browsen, . . . en het was een onderdeel van de eigenlijke informatie. Vandaag is metadata gestandaardiseerde en gestructureerde informatie die automatische processen kunnen sturen en er zijn verschillende types metadata: • identificatie • beschrijvend • annotaties • technisch • ... allemaal met als doel de gevonden data te begrijpen meer dan enkel en alleen te lokaliseren. In de toekomst wil men intertwingularity of het kristalliseren van informatie. Men wil kennis over de content uitdrukken en het zoeken naar informatie wordt het bevragen van kennis. Dit heeft semantische interoperabiliteit als doel wat wil zeggen dat er een medium is waarin zowel mensen als software bij het verwerken van data en content tot dezelfde conclusies kunnen komen, men genereert dus kennis. Metadata wordt gebruikt voor het begrijpen, delen, management, zoeken, verwerken, presenteren, . . . van content. Een taxonomie is een classificatie waarvan de structuur op voorhand is bepaald. Het is een hi¨erarchie met gecontroleerde woordenlijsten, thesauri, opgesteld door experts. In het begin was er enkel een classificatie voor diersoorten, maar nu zijn er voor heel veel dingen classificaties. Dit 19 Internettechnologie Daan Pape is een top-down aanpak. Een tag is een annotatie is een vrije tekst en het zijn sleutelwoorde die persoonlijk en informeel zijn. Waar vroeger taxonomie¨en of woordenlijsten werden geruikt om content te beschrijven worden nu tags of folksonomie¨en gebruikt die door de gebruikers worden gevormd. In een folksonomie zit geen voorafgedefinieerde structuur en/of hi¨erarchie en de gebruikers voegen samen metadata toe. Alle termen zijn dus evenwaardig en er wordt bottom-up gewerkt. Je hebt zowel brede en smalle folksonomie¨en. Het probleem met folksonomie¨en is dat er culturele verschillen zijn waarbij mensen data anders interpreteren, er zijn taalproblemen, er is ambiguiteit, spellingsfouten. Er kunnen subjectieve tags zijn, persoonlijke tags, . . . Er is een overvloed aan metadatastandaarden naar analogie met de vele multimediastandaarden. Er zijn ook standaarden die de structuur van metadata vastleggen: MODS of Medadata Object Description Schema. Dit is een XML bestand die volgens een vaste manier gestructureerd is. XML of eXtensible Markup Language is door de W3C gestandaardieseerd en het is een taal die de structuur van een document vastlegt. Een XML schema wordt gebruikt om de structuur van een document te beschrijven en zegt: • Welke elementen er mogen voorkomen. • In welke volgorde de elementen mogen voorkomen. • Welke types/waarden er mogen in staan. MODS is een XML schema waarbij een textuele specificatie de semantiek van de elementen bepaalt. Het voordeel van XML is dat zowel mensen als machines de documenten kunnen lezen ben begrijpen. Men bekomt dus gedeelde informatie voorgesteld in een algemene structuur. De huidige metadatastandaarden bepalen de structuur van de data en er zijn verschillende standaarden in ´e´en systeem waardoor er mappingen nodig zijn. Een standaard lost nog niet alles op omdat er soms nog dezelfde problemen zijn als bij tags. Zo kan men een ’creator’ property op meerdere manieren invullen. Het is moeilijk om de semantiek van metadata te beschrijven aangezien dit uit pure tekst bestaat en niet verstaanbaar is voor machines. Ook is de huidige metadata voor multimedia nog niet goed te begrijpen, twee verschillende standaarden kunnen hetzelfde beschrijven maar op een totaal verschillende manier. We moeten dus onderscheid maken tussen: Semantiek - bepaalt de betekenis van metadata elementen - gesloten beschrijving zorgt voor interoperabiliteit m.b.t. disambigu¨ıteit Syntax - bepaalt de representatie van metadata - XML+XML schema zorgt voor interoperabiliteit m.b.t. correctheid - XML is de facto standaard Het huidige web is bijna uitsluitend syntactisch opgebouwd. 5.2 Semantiek toevoegen aan data XML bevat dus geen semantiek en enkel syntax, de oplossing zijn semantische web technieken: • Gebruik van RDF, RDF Schema, OWL, . . . • Er zijn ontologie¨en in plaats van XML schema’s 20 Internettechnologie Daan Pape Een ontologie is een formele representatie van een verzameling concepten binnen een domein en de relatie tussen deze concepten. Het wordt gebruikt om te redeneren over eigenschappen in dat domein en het kan gebruikt worden om dat domein te defini¨eren. Het bevat de volgende concepten: • Individuals (Instances) • Classes (Concepts) • Attributes • Relations • Functions • Constraints Het bestaat uit triples zoals <note, hasAuthor, Tim> die we in een graaf kunnen voorstellen. Het is essentieel dat er van URI’s gebruik wordt gemaakt. Deze URI’s wijzen naar een object en geven een unieke identificatie. De bedoeling is nu om meerdere bestaande data te linken en zo een enorme kennis te vergaren. Het Open Linked Data princiepe is een standaard procedure om domain ontologie¨en op het web te publiceren via HTTP, URI en RDF. Het is een robuuste en elegante manier om kennis te koppelen. 5.3 Het semantisch web Om een semantisch web te maken moet de beschikbare informatie begrijpbaar zijn voor machines op een ondubbelzinnige manier. Het moet gemakkelijk zijn om de informatie te combineren en uit te wisselen. We willen dus een web van data (semantisch web) in plaats van een web van documenten (syntactisch web). Dit moet in het huidige web kunnen worden ge¨ıntegreerd. Informatie moet conceptueel worden voorgesteld door middel van gerichte grafen, dit wordt in de praktijk door RDF gerealiseerd. De structuur van het semantisch web bestaat dus uit 3 lagen: De abstracte graafrepresentatie is onafhankelijk van de bestaande dataformaten en een verandering aan het schema van een lokale database breekt niets. Nieuwe informatie en connecties kunnen op een triviale manier aangebracht worden. Het semantisch web zorgt er dus voor dat niet alleen mensen het web begrijpen maar ook machines, de bezieler is weer Tim Berners-Lee. Deze metadata kan in de XHTML code worden verweven. Alles gaat dus om betekenisvolle representatie van data en traditionele technieken gaa nuit van een gecentraliseerd database systeem waarin alles staat. Dit is echter niet schaalbaar en staat haaks op het gedecentraliseerde web. 21 Internettechnologie 5.4 Daan Pape Het web van data Het semantisch web is meer dan enkel data op het web plaatsen, het is het linken van data aan elkaar (Open Linked Data). Hierbij zijn er 4 regels om het web te doen groeien: 1. Gebruik URI’s om dingen een naam te geven. 2. Gebruik van HTML URI’s (URL) zodat men namen kan opzoeken. 3. Als een URI wordt opgevraagd, geef dan nuttige data zoals RDF terug. Dit is vaak nog een probleem omdat er geen toegang is tot ruwe data, dit moet veranderen. 4. Leg links naar andere URI’s zodat data kan worden ontdekt, zoals hyperlinks In 2010 was er een poging ter aanmoediging om Open Linked Data te gebruiken en men kon sterren verdienen. Dit was echter vooral voor de overheden en publieke diensten en men kon sterren verdienen die aangaven hoever de dienst erin ging. Internationaal zijn er heel veel initiatieven om Open Linked Data aan te moedigen. Waar er vroeger een ketting van connecties tussen computers was met speciale protocollen is er nu een abstract netwerk met slechts enkele mechanismes om alle mogelijk connecties te abstraheren. Dit grote netwerk werd pas bruikbaar voor de modale mens na de opkomst van het WWW. De documenten zijn belangrijker dan de computers zelf en de WWW protocollen beschrijven hoe die documenten van de server naar de browser moeten worden verstuurd. Gebruikers zien dus enkel een web van geconnecteerde documenten maar soms moet men wel onder de moterkap kijken (404, phishing, . . . ). We zijn dus van het netwerkniveau naar een documentenniveau gegaan en nu willen we naar een data/dingen niveau gaan. Het zijn nu niet meer de documenten die interessant zijn maar wel de dingen waarover de documenten het hebben. Een goede Semantic Web Browser toont dus informatie over iets en dat kan uit verschillende bronnen komen. We hebben dus een evolutie gehad: kabels → netwerk → web → graaf documenten → data/dingen ongestructureerde content → gestructureerde content → slimme content → intelligente content In de praktijk kunnen we veel meer data linken en slimme bezoekingen, beter dan Google nu al kan. Google en Facebook gebruiken ook semantics en zijn de grote spelers. Meer specifiek hebben we volgende toepassingen: • Mashups: het is de integratie en/of visualisatie van verschillende data sets. Het automatisch samenbrengen van data is enkel mogelijk in het semantisch web. • Smart Queries: dingen zoeken met allerlei opties over de content. Zoals ’film met Peter Jackson’ en ’met Orlande Bloom’, . . . Freebase maakt dit mogelijk door een query met verschillende vocabularia te gebruiken en verschillende schema’s en datasets te combineren. DBPedia maakt dit mogelijk met SPARQL • Grote spelers schema.org is zeer belangrijk en door Google, Bing en Yahoo! gemaakt. Dit schema maakt het mogelijk te beschrijven wat er op een webpagina staat en men kan de semantiek uitdrukken door middel van HTML-microdata. Dit verbetert de zoekresultaten en maakt ze relevanter en domein specifiek. Het semantisch web is geen magische artifici¨ele intelligentie maar gewoon een goede manier om data ook voor machines begrijpbaar te maken. Het is geen herhaling van eerdere (mislukte) expirementen rond kennisrepresentatie. Het RDF model is generieker dan traditionele entiteitrelatiemodellen omdat de ene persoon de wielen van de auto kan specifieren en de andere persoon 22 Internettechnologie Daan Pape de kleur gewoon door van het juist vocabularium gebruik te maken. RDF mapt zeer goed op relationele databanken: record ↔ RDF node kolomnaam ↔ RDF propertyType waarde in cel ↔ waarde Relationele databanken hebben geen semantische restrictie bij het uitvoeren van joins en enkel op het datatype wat rare queries mogelijk maakt. Uitdagingen bestaan er in om generieke user interfaces te bedenken voor data-exploratie die elke vorm van data kan weergeven, iets krachtiger dan spreadsheets. Ook moeten er data policies komen om identiteit, privacy, transparantie en modellen voor trust in te bouwen. Het semantische web moet even robuust zijn als het Web dus ook met dingen als ’slashdot-effect’ rekening houden, 404 fouten, phising, . . . Een andere uitdaging is het beschrijven en annoteren van de steeds meer aanwezige multimediale data, de enorme hoeveelheid aan data masteren, . . . 6 Technologie¨ en voor het Semantisch Web 6.1 Basistechnologi¨ en Een URI heeft volgend formaat: scheme:[//authority]path[?query][#fragment] met • Scheme: het type van de URI zoals http, ftp, mailto, . . . • authority: een domeinnaam zoals dbpedia.org • path: een pad zoals /resource/Berlin • query: niet-hi¨erarchische informatie zoals parameters • fragment: om een deel van de resource aan te duiden XML heeft dus enkele tekortkomingen en het komt er op neer dat het enkel om syntax gaat. Het idee achter RDF is om een gerichte graaf als datamodel te gebruiken. RDF of het Resource Description Framework is sinds 2004 een W3C recommendation. RDF is een datamodel dat gestructureerde data bevat en universeel en machine-leesbaar is, er wordt XML syntax voor serialisatie gebruikt. Het bestaat uit: • URI’s: referenties naar bronnen/resources • Literals: dit is een representatie van datawaarden en is gecodeerd als strings en g¨ınterpreteerd als datatypes. Literals zonder datatype worden als strings behandeld. • Empty/Blank nodes: iets wat geen naam heeft of een onbekende waarde heeft Grafen worden behandeld als een verzameling van RDF-tripels die bestaan uit een subject, predicaat en object. Daarin is toegestaan: • subject: URI’s en lege nodes • predicaat: URI’s (meestal properties genaamd) • object: URI’s, lege nodes en literals 23 Internettechnologie Daan Pape De graaf kan nu geconstrueerd worden op basis van een verzameling tripels. Er zijn verschillende mogelijkheden om RDF syntax in uit te drukken: • Turtle: de Terse RDF Triple Language bevat tripels als ’zinnen’ met drie ’woorden’ en een punt. Literals tussen dubbele quotes, URI’s tussen vishaken en er zijn enkele verkorte notaties. Dit is gemakkelijk te lezen maar geen W3C recommendation, normaliter wil men RDF XML-syntax gebruiken. • RDF XML-syntax: Bij deze syntax zit het object in het property welke op zijn beurt in het subject zit. In veel gevallen zijn de relaties tussen objecten complexer dan binaire relaties. RDF impliceert dit met het gebruik van hulpmethodes en de creatie van nieuwe predicaten. RDF heeft ook ondersteuning voor lijsten en er zijn twee types lijsten: • Open lijsten: RDF containers. Deze bevat dingen/leden/members die zowel resources, lege nodes als literals kunnen zijn. En we hebben: – rdf:Bag: volgordie is niet belangrijk, duplicaten toegestaan – rdf:Seq: volgorde belangrijk, dubplicaten toegestaan – rdf:Alt: lijst van alternatieven, typisch voor de waarde van een property De betekenis van de drie containers is niet meer dan een conventie en heeft dus geen formele betekenis. Het RDF-vocabularium dient om containers te beschrijven en niet om ze te defini¨eren. Mis gebruik van conventies wordt niet bestraft omdat het model zelf niet de kracht heeft om dit te controleren. • Gesloten lijsten: RDF collections. Deze laten toe om uit te drukken dat een groep enkel bestaat uit een aantal opgegeven resources (leden). De containers lieten niet toe om uit te drukken ”dit zijn alle leden van de container”. Het vocabularium is: – rdf:List (type) – rdf:first (property) – rdf:rest (property) – rdf:nil (resource: lege collectie) Net zoals bij containers zijn er geen formele voorwaren en correct gebruik wordt verondersteld. Er zijn semantische uitbreidingen zoals OWL nodig om dit af te dwingen. RDF zelf drukt ´e´en of meerdere feiten uit maar veelal willen we meer generieke kennis uitdrukken, dit wordt schema-kennis of terminologische kennis genoemd. Dit kunnen we met RDF-Schema (RDFS) en OWL uitdrukken. RDFS is een W3C recommendation en elk RDFS document is in RDF geschreven met een vaste naamruimte ’rdfs:’. Het vocabularium is generiek en niet gebonden aan specifieke domeinen en kan daardoor generiek ge¨ınterpreteerd worden. Enkele componenten: • Klassen: dit zijn verzamelingen ’dingen’ en in RDF is dit dus een verzameling URI’s. Een URI kan tot meerdere klassen behoren en Klassen kunnen met ’subClassOf’ hi¨erarchisch georganiseerd worden. Elke URI die een klasse voorstelt is een element van rdfs:Class en dit geldt ook voor rdfs:Class zelf. Verder zijn er een heleboel voorgedefinieerde klassen. • Properties: ook properties kunnen met ’rdfs:subPropertyOf’ hi¨erarchisch worden opgebouwd en ook hierop kan ’inferencing’ (zie verder) worden toegepast. Er kunnen beperkingen (restrictions) aan properties worden opgelegd die uitdrukken dat een relatie enkel mogelijk is tussen ’dingen’ van een bepaald ’rdf:type’, dit gaat ’rdfs:domain’ en ’rdfs:range’. 24 Internettechnologie Daan Pape Een RDF schema bevat ook impliciete kennis. Als er bijvoorbeeld een type ’ex:Textbook’ is welke een ’rdfs:subClassOf ex:Book’ is, dan zal er impliciet ook een ’rdfs:type ex:Book’ aanwezig zijn en het is niet nodig dit logisch gevolg expliciet op te nemen. Dit noemt men deductie of inferencing en er is een formele semantiek die bepaalt welke statements een logisch gevolg zijn op basis van een verzameling statements. Een reasoner produceert de impliciete kennis. We moeten in RDFS opletten voor valkuilen, bv: ex:authorOf ex:authorOf rdfs:range rdfs:range ex:Textbook. ex:Storybook. Dit wil zeggen dat alls in de ’rdfs:rangen’ van ’ex:authorOf’ zowel een ’ex:Textbook’ als ’ex:Storybook’ is en niet of. Ook moeten we opletten dat de logische deductie geen extra types toevoegt, dus bij foute dingen moetne we goed opletten. ER is een nieuwe klasse ’rdfs:Container’ als superklasse van de open lijst types samen met een andere klasse ’rdfs:ContainerMembershipProperty’ welke een subklasse is van ’rdf:Property’. Deze klasse bevat properties die in containers gebruikt worden. De property ’rdfs:member’ is een superproperty van alle properties uit ’rdfs:ContainerMembershipProperty’. Reification is concretisering of materialisering. Dit zijn statements die over triples gaan. Stel de zin ’the detective supposes that the butler killed the gardener’: ex:detective ex:detective ex:supposes ex:supposes "The butler killed the gardener". ex:theButlerKilledTheGardener. Bovenstaand statements werken niet omdat we iets willen zeggen over het triple: ex:butler ex:killed ex:gardener . Dit lossen we op met ex:detective ex:theory ex:theory ex:theory ex:supposes rdf:subject rdf:predicate rdf:object ex:theory . ex:butler . ex:hasKilled . ex:gardener . Bovenstaande zijn dus reified triples en typisch zal men een lege node (underscore) gebruiken in plaats van ’ex:theory’. ’rdf:Statement’ kan gebruikt worden om de ”centrale”node aan te duiden van een gematerialiseerd triple. 6.2 SPARQL SPARQL staat voor SPARQL Protocol And RDF Query Language en is een query taal voor RDF net zoals XPath een query-taal is voor XML. Er is een nieuwe query-taal ontwikkelt voor RDF XML omdat er meerdere syntactisch correcte XML-voorstellingen mogelijk zijn voor eenzelfde RDF-statement. Ene bepaalde query zou dan tot verscheidene XPath-queries leiden. De taal is gebaseerd op het matchen van patronen in grafen en het eenvoudigste is een triple patroon. Men schrijft de query net zoals een RDF triple met de mogelijkheid een variabele te gebruiken en een combinatie van patronen leidt tot een basis graafpatroon. Er is een exacte match nodig om te voldoen aan dat patroon. Net zoals bij SQL zijn SPARQL-queries altijd opgebouwd uit: • ’SELECT’: bepaalt de projectie (aantal en volgorde van de data). • ’FROM’ (optioneel): duidt de databron aan 25 Internettechnologie Daan Pape • ’WHERE’: legt beperkingen op aan mogelijke oplossingen bv. in de vorm van graafpatroontemplates. Er worden door de SPARQL server impliciete ’joins’ gemaakt of je kan expliciete joins opgeven met ’FILTER’. Je kan ’FILTER’ ook gebruiken voor andere filtering zoals string matching. 6.3 OWL RDFS is vrij primitief als modeleertaal voor het Web en daarom moet er een ontologie-laag bovenop RDF en RDFS komen. Ontologie-talen laten toe om expliciete en formele conceptualisaties van domeinmodellen neer te schrijven. De belangrijkste vereisen daarvoor zijn: • Een goed gedefinieerde syntax • Effici¨ente ondersteuning voor reasoning (automatisatie) • Formele semantiek (interpretatie is eenduidig bepaald) • Voldoende expressief Er moet steeds een trade-off tussen expressiviteit en effici¨ente reasoning zijn. Het is namelijk zo dat hoe rijker de taal is, hoe ineffici¨enter de reasoning wordt. Soms kan het zelfs onberekenbaar worden. Het redeneren over kennis in ontologie-talen omvat onder andere: • Lidmaatschap van klassen: als ’x’ een instantie is van de klasse ’C’, en ’C’ is een subklasse van ’D’, dan kunnen we afleiden dat ’x’ ook een instantie is van klasse ’D’. • Equivalentie tussen klassen: als klasse ’A’ equivalent is met klasse ’B’, en ’B’ is equivalent met klasse ’C’, dan is klasse ’A’ ook equivalent met klasse ’C’. • Consistentie: als ’x’ een instantie is van de klassen ’A’ en ’B’, en de klassen ’A’ en ’B’ zijn disjunct, dan wijst dit op een fout in de ontologie. • Classificatie: als bepaalde (property,value)-paren een voldoende voorwaarde vormen voor lidmaatschap van klasse ’A’, en een instantie ’x’ voldoet aan deze voorwaarden, an moet ’x’ een instantie zijn van klasse ’A’. Het automatiseren van reasoning is zeer belangrijk omdat het de consistentie van de ontologie of kennis controleert. Zo kan een statement niet tegelijk waar en vals zijn, men kan controleren op niet-bedoelde relaties tussen klassen en men kan automatisch classificeren van instanties in klassen. Bij het ontwerp van grote ontologie¨en met meerdere auteurs en bij het integreren en/of delen van ontologie¨en van verschillende bronnen zoals op het semantisch web zijn deze automatische controles zelfs onontbeerlijk. Een formele semantiek en reasoning worden typisch bekomen door het mappen van een ontologie op een bestaand en gekend logisch formalisme en het gebruik van reeds bestaande automatische reasoners voor deze formalismen. OWL kan (gedeeltelijk) gemapt worden op een Description Logic (DL): • DL is een subset van eerste-orde predicatenlogica (bv. # variabelen) • DL is een superset van propositielogica (bv. kwantoren) • OWL kan gebruik maken van reasoners zoals FaCT en RACER Zoals eerder gezegd is RDF Schema niet zo expressief en het heeft volgende beperkingen: • De locale scope van properties: ’rdfs:range’ bepaalt de range van een property voor alle klassen. In RDFS kunnen we niet uitdrukken dat beperkingen in de range enkel gelden voor bepaalde klassen. Zo eten koeien enkel planten terwijl andere dieren ook vlees eten. 26 Internettechnologie Daan Pape • Het disjunct zijn van klassen: bv. mannelijk en vrouwelijk. • Booleaanse combinatie van klassen: unie, doorsnede, complement • Beperkingen qua cardinaliteit: ”heeft exact twee ouders”, ”heeft ten minste ´e´en begeleider” • Speciale eigenschappen van relaties en proporties: transitiviteit (”groter dan”), unieke proporties (¨ıs moeder van”), inversie (¨eten”vs. ”wordt gegeten door”) In het ideaal geval was OWL een RDFS uitbreiding maar dit was niet mogelijk omdat RDFS een hoge expressiviteit verhindert. De combinatie van RDFS en logica leidt tot oncontroleerbare computationele eigenschappen. Zaken zoals rdfs:Class en rdf:Property zijn veel te expressief en daarop logica bouwen leidt tot beperkte reasoning support. Aangezien men dus steeds de afweging moet maken tussen expressiviteit en reasoning heeft het W3C OWL in drie vormen gereleased: 1. OWL Full: dit laat alle OWL taalprimitieven toe en men laat toe deze te combineren op een arbitraire manier met RDF en RDFS, men kan bv. een cardinaliteitsbeperking op de klasse van alle klassen toepassen. Het is volledig opwaarts compatibel met RDF (syntactisch en semantisch) wat wil zeggen dat elk RDF document een geldig OWL Full document is en elke geldige RDF(S)-conclusie is een geldige OWL Full conclusie. Het is zo krachtig dat het onbeslisbaar is en er geen complete of effici¨ente reasoning mogelijk is. 2. OWL DL: men legt beperkingen op wat betreft het gebruik van RDF- en OWL-vocabularium (’constructors’). Het is verboden dat OWL-constructors op elkaar worden toegepast en het komt dus overeen met Description Logic. Er is effici¨ente reasoning mogelijk maar het is niet compatibel met RDF. Elk OWL DL document is een geldig RDF document maar omgekeert niet vanwege de beperkingen. 3. OWL Lite: dit heeft nog meer beperkingen, is eenvoudiger te begrijpen voor gebruikers en eenvoudiger te implementeren voor ontwikkelaars. Het grote nadeel is de beperkte expressiviteit. De drie vormen zijn opwaarts compatibel met elkaar, dit is logisch want het zijn gewoon meer of minder beperkingen. Alle OWL varianten gebruiken RDF als hun syntax en instanties worden gedeclareerd zoals in RDF. De OWL constructors zijn specialisaties van hun RDF tegenhangers. 6.4 Regels Formele logica vormt nog steeds de basis voor kennisrepresentatie en dit onder de vorm van eerste orde predicatenlogica. Dit omdat: • Het is een hoog-niveautaal voor het uitdrukken van kennis. • Het heeft een hoge expressiviteit. • Het is een goed bestudeerde formele semantiek. • Er is een precies gedefinieerde notie van logische gevolgtrekking. Er bestaan automatische ’proof systems’ die statements kunnen afleiden van een reeks premissen. Er bestaan ook bewijssystemen waarbij de semantische gevolgtrekking equivalent is met de syntactische afleiding binnen het bewijssysteem: • Geldigheid of Soundness: de regels bewaren de waarheid. • Compleetheid of Completeness: elke logische gevolgtrekking op basis van de premissen kan bewezen worden in het systeem. 27 Internettechnologie Daan Pape Predicatenlogica is uniek omdat er bewijssystemen bestaan die zowel geldig als compleet zijn. Dit is niet meer het geval voor hogere-orde logica. RDF en OWL zijn beide specialisaties van predicatenlogica. Ook de Horn-logica, een regelsysteem, is een specialisatie hiervan en regels kunnen op twee manieren ge¨ınterpreteerd worden: • Deductief: als alle Ai waar zijn, dan is ook B waar. • Reactief: als de voorwaarden Ai voldaan zijn, voer dan actie B uit. Regels kunnen beschouwd worden als een alternatief paradigma voor ontologie-modellering. OWL DL en Horn Logic zijn geen subset van elkaar. In OWL DL kan men bv. niet uitdrukken dat een persoon X die broer is van Y de oom is van Z waarbij Z ene kind is van Y . Met regels gaat dit als volgt: brother(X, Y ),childOf(Z, Y ) → uncle(X, Z) Regels kunnen niet uitdrukken dat een persoon ofwel een man, ofwel een vrouw moet zijn. Dit kan eenvoudig in OWL via disjuncte unie. Het integreren van ontologie- en regel-paradigma’s gaat niet omdat dit leidt tot onbeslisbaarheid. De N3 notatie is een systeem om regels te noteren. Predicatenlogcia heeft de beperking dat het enkel met monotone regels overweg kan. Stel volgende regels: R1: R2: R3: indien verjaardag, geef korting indien niet verjaardag, geef geen korting indien verjaardag niet gekend, geef geen korting Enkel regels 1 en 2 zijn monotoon, want: • Een conclusie blijft geldig ook al komt er nieuwe info of kennis in het systeem of is er missing data. • Monotone regels zijn een speciaal geval van predicatenlogica Er zijn drie stappen van abstractie van de gebruikte regels: • Er wordt een specifieke regel gebruikt voor twee resources (instanties). • Er wordt een algemenere regel gebruikt voor de relatie (predikaat). • Er wordt een algemene regel gebruikt voor alle symmetrische predicaten. 6.5 Redeneren op meta-niveau Zowel kennis als schemakennis worden expliciet en formeel gedeclareerd. De intelligentie wordt dus verschoven van de software-laag naar de data/informatielaag. Software engineering wordt gelijk aan knowledge engineering. De regels zijn niet langer het primair medium om een doel te bereiken en ze ondersteunen de predicaten die dit doel uitdrukken. 7 Video in het Web Waar het web vroeger uit documenten bestond is er nu een explosieve groei van de hoeveelheid multimidiale data die door gebruikers online wordt geplaatst. Er is dus nood aan een effici¨ente annotatie en ’retreival’ waarbij persoonlijke voorkeuren centraal moeten staan. HD wordt stilaan ook op het Web de norm en er is nood aan effici¨ ente adaptatie en aflevering van multimedia. Statische afbeeldingen zijn volleidg ge¨ıntegreerd in de webtechnologie stack. Browsers hebben eigen decoders, er kan met css gestyled worden een javascript heeft low level toegang tot eigenschappen. Video is eerder een extentie op het web en er zijn veelal plugins nodig omdat browsers 28 Internettechnologie Daan Pape geen eigen decoders hebben. Er is dan ook vaak geen directe link tussen een URI en de eigenlijke media resource. Er is nog geen integratie in de stack van webtechnologie¨en. HTML 5 bied met het <video> element een oplossing aan dit probleem. Het blijft echter moeilijk om video te annoteren en de dimensie tijd in de annotatie openemen maakt het annoteren nog zinvoller. Men wil mediafragmenten kunnen delen zonder hiervoor een nieuwe URL te maken. Het W3C wil video ook een ’first class citizen’ van het web maken en doet dit met: • De HTML5 specificatie • Media annotations: een API en ontologie voor mediabronnen • Media fragments: adressering van mediafragmenten • Timed Text: tijdsgebaseerde captions en ondertitels • Adoptie van HTTP adaptive streaming binnen HTML5 7.1 Mediafragmenten Er zijn drie soorten mediafragmenten die men wil annoteren: • Temporal media fragment: een stuk video in tijd. • Spatial media fragment: een deel van het beeld van de video. • Track media fragment: een welbepaalde track van de video (bv. beeld, audio, ondertitel, ...) Er zijn nu verschillende manieren om dit te bewerkstelligen: • Gebruikmakend van een metadataformaat zoals MPEG-7, SMIL, SVG, . . . • Gebruikmakend van een URI-mechanisme met specifieke syntax (MPEG-21, TemporalURI, SVG, . . . ) Het probleem met een metadata-gebaseerde aanpak is dat er een indirecte stap vereist is. De spatiale/temporele fragmentidentificatie zit vervat in een apart document wat bookmarken, delen, . . . moeilijk maakt. Clients (gebruikers/software) moeten zich bewust zijn van de metadata en deze vinden en begrijpen. In het geval van RDF zullen de annotaties gaan over een fragment ven een (niet-RDF) document dat verwijst naar de eigenlijke multimediale content. De URI-gebaseerde aanpak is te beperkt en/of te complex en er wordt geen aflevermechnisme ’retrieval’ gespecificeerd. Ook is de URI specificatie afhankelijk van het bestandsformaat. Een goede aanpak moet: • Onafhankelijk zijn van het mediaformaat. • Zowel temporeel, spatiaal als tracks kunnen annoteren. • Een relatie hebben met de context wat wil zeggen dat een mediafragment een secundaire resource is van de ouder resource. • Een lage complexiteit hebben. • Een minimale impact hebben op de bestaande Web-infrastructuur. • Fragmenten moeten door media-extractie in termen van byte ranges uitdrukbaar zijn. 29 Internettechnologie Daan Pape Mediaformaten hebben een impact op server-gebaseerde fragmentextractie. Zo moeten adaptaties uitdrukbaar zijn in ’byte ranges’ en dit heeft gevolgen voor de verschillende assen: • Temporeel: de aanwezigheid van intra-gecodeerde beelden (randam acces points, key frames) moet in het codeerformaat zitten. • Spatiaal: er is nood aan onafhankelijk gecodeerde spatiale regio’s in het codeerformaat. • Track: er moeten ID’s zijn voor de tracks in het containerformaat. We kunnen concluderen dat temporele en track assen realistisch zijn maar spatiale fragmenten zijn zeer moeilijk in byte ranges uit te drukken. Bijkomend zijn er presentatieproblemen aan de client-zijde door een gebrek aan context. De W3C wil media fragmenten addresseren aan de hand van URI’s met behulp van Media Fragments 1.0. Hierbij is de URL in een speciaal formaat gecodeerd met: • Een ’#”(URI fragments): hierbij wordt de fragment identifier genegeerd, het volledige HTML document wordt gedownload en de client interpreteert de identifier lokaal. De client heeft een context en de media is een secundaire resource. Dit is mogelijks cacheable maar adaptaties moeten uitdrukbaar zijn in termen van byte ranges. • Een ’ ?’ (URI queries): er zijn unieke resources en dus server side processing, het werkt met key-value paren die naar de server worden gestuurd. Dit maakt de media een primaire resource en er geen geen adaptatiebeperkingen maar is niet cacheable. Een media fragment URI syntax kan ook voor een URI query worden gebruikt maar we focussen op fragment URI’s. Alles na het ’#’ teken is niet beschikbaar voor de server en er zijn verschillende manieren om fragmenten te verwerken: • Niet-slimme user agent: de user agent zal de volledige video downloaden en dan de gevraagde beelden afspelen. • Een slimme user agent heeft verschillende mogelijkheden en zal alles via de HTTP headers communiceren – De user agent is zelf in staat om tijd om te zetten naar byte ranges. – De user agent stuurt de tijd naar de server en deze maakt de mapping. – De user agent stuurt de tijd naar de server samen met setup-info en de server stuurt het juiste deel terug. – De user agent stuurt de tijd naar de server op een ’proxy-cacheable’ manier. Het opvragen van het mediafragment gebeurt op basis van de ontvangen byteranges. Web servers moeten dus uitgebreid worden met media-extractors, specifieke HTTP communicatie, en enkel in het laatste geval werken bestaande web caches goed. Ook de user agents moeten uitgebreid worden. Een oplossing hiervoor is het werken met Media Fragments Proxies . Dit werkt met bestaande HTTP-Webservers, bestaande webcaches en niet zo slimme user agents die wel een range meegeven. De MF proxy zal dan de extractie uitvoeren nadat de webserver de request redirecte tot die server. 7.2 Adaptieve aflevering van multimedia in het Web Er zijn verschillende mogelijkheden om multimedia af te leveren: • HTTP download-and-play: de media resource wordt volledig gedownload via HTTP en daarna afgespeeld. 30 Internettechnologie Daan Pape • HTTP progressive download: de media resource wordt via HTTP gedownload en vanaf dat er genoeg binnen is wordt dit reeds afgespeeld. • Real-time streaming: dit gaat meestal wel via stateful protocollen in tegenstelling tot HTTP en de data van de media resource wordt ongeveer aan ware snelheid verstuurd. Voorbeelden zijn RTSP (Real Time Streaming Protocl), RTMP (Real-Time Messaging Protocol) en MMS(Microsoft Media Server) De voor en nadelen op een rijtje: HTTP latancy RTS server-side monitoring afh. van buffergrootte verspilling (slechts 20% wordt bekeken) moeilijk (stateless) firewall issues special server nodig? trick modes (bv. FF, Zoeken) cacheability intrinsieke adaptiviteit nee nee nee (in geval ’progressive’) ja nee bandbreedte typisch laag HTTP Adaptive Streaming laag OK (± content) OK (± content) bekeken bekeken eenvoudig (stateful) ja (UDP) ja (protocol) ja moeilijk (stateless) moeilijk nee ja ja nee nee ja HTTP Streaming combineert dus het beste van twee werelden en heeft volgende onderdelen: • Media wordt in segmenten of chunks gesneden. Deze zijn typisch tussen de 2 en 10 seconden. Elk segment start met een random acces point en kan dus los van de andere gedecodeerd worden. De segmenten moeten niet fysisch gescheiden zijn en kunnen in een enkele container gegroepeerd worden. • Manifest: dit is een metadata bestand met info over de beschikbare segmenten en de overeenkomstige tijdsinformatie. Dit ken textueel of binair zijn enk elk segment is adresserbaar via een HTTP aanvraag. De client leest nu het manifest en download de segmenten in min of meer gelijke tred met de video. HTTP streaming is dus een opeenvolding van HTTP downloads en de client stuurt de media delivery. Bij adaptieve streaming kan de client veranderen naar een lagere kwaliteit en de server is zich daar zelfs niet van bewust. Om dit mogelijk te maken moet de content voorbereid zijn. Er moeten chunks gemaakt worden die in een containerformaat zitten en er moet een manifest bestand worden gegenereerd. De server moet deze chunks statisch kunnen afleveren aan de client. De client moet het manifest en containerformaat begrijpen, de chunks kunnen aggregeren en hij moet kunnen schakelen tussen de verschillende versies. Onder andere Netflix, Hulu, Move networks, . . . maken al gebruik van HTTP adaptive streaming. De specificatie is als internet-draft beschikbaar en het manifest heeft een M3U8 formaat welke een uitbreiding is van M3U-playlists. Playlists kunnen op twee niveau’s georganiseerd worden: • Een playlist met verschillende versies. • Voor elke versie een playlist van de chunks. Apple heeft ’HTTP Live Streaming’, microsoft heeft ’Silverlight Smooth Streaming’ en Adobe heeft ’HTTP Dynamic Streaming’. DASH of Dynamic Adaptive Streaming over HTTP is de ’master specificatie’ en is in 2012 een internationale standaard. Momenteel is er een goedkeuringsproces bezig voor MP4 om DASH te ondersteunen. Uitdagingen bij adaptive streaming is 31 Internettechnologie Daan Pape om te beslissen wanneer men naar een andere versie overschakeld en hoe men maximale kwaliteit met minimale kans op rebuffering kan hebben. 8 Contentnetwerken 8.1 Switching De huidige internetarchitectuur is op end-to-end communicatie gebaseerd. De transport en applicatielaag wordt enkel in de client en de server aangesproken en in het netwerk zelf wordt maximum tot laag 3 (routing) gewerkt. Dit zorgt wel voor grote operationele uitdagingen. Layer 4 switching betekent het switchen op laag 4, dit is de transportlaag met TCP of UDP. De switch voert ”content-blind routing¨ ook wel ”immediate binding u ¨it: • Switch doet zich voor als eindserver (end-host) bij aankomst van het eerste TCP SYN pakket. • De switch gebruikt informatie uit de transportlaag om trafiek gericht te switchen/routeren (+ binding table). • Er is effici¨ente routering maar niet voor het dispatchen van content (er is geen kennis van de HTTP content). • In de transportlaag wordt de poort informatie gebruikt om bepaalde applicaties te identificeren. De Web Switch kan dus op basis van de inkomende aanvraag iets redirecten naar de SMTP server, Web Server of FTP server. Er bestaat ook layer 7, de applicatielaag, switching. De switch voert ”content aware switching¨ ok wel ”delayed binding u ¨it: • De switch doet zich ook voor als eindserver maakr zet een complete TCP connectie op met de client. • Client pakketten worden door de switch ontleed tot in de applicatielaag en dan naar de server gestuurd. • De routering is minder snel aangezien deze tot laag 7 loopt. • Er is goede kennis voor dispatchen omdat men weet wat er wordt aangevraagd. De apparatuur die dit doet wordt contentswitching apparatuur genoemd. De meeste switches kunnen zowel layer 4 als layer 7 switching aan en worden daarom ook wel contentswitches of layer 4-7 switches genoemd. 8.2 Contentnetwerken Deze netwerken hebben de mogelijkheid om gebruikers toegang te verlenen tot bepaalde objecten op een locatie-onafhankelijke manier. URL’s zijn daarvoor neit goed geschikt en de oplossing bestaat eruit om objecten op verschillende locaties te publiceren door replicatie van data. De uitdaging bestaat er in om te beslissen wie wanneer naar waar wordt verwezen. Deze technologie wil een oplossing bieden aan opstopping van IP-lijnen, overbelasting van webservers, vertragingen door lange communicatiewegen, flash crowds, . . . Verkeer kan op 4 mogelijk plaatsen opgestopt raken: 1. Internet acceslijn van de gebruiker. 2. Het netwerk van een ISP (backbone). 32 Internettechnologie Daan Pape 3. Peering punten (interconnecties tussen ISP’s). 4. Internet acceslijn en belasting van de webserver. Cruciale parameters voor de kwaliteit van het ISP netwerk zijn: • Vertragingen: delay, latency, round-trip times tussen de verschillende netwerkelementen. • Jitter: de variatie in vertragingen (vooral voor VoIP) belangrijk. • Pakketverlies: uitgedrukt in procent. Een goed ISP netwerk heeft een gelaagde structuur met eigen functionaliteit binnen de lagen en meestal zijn er 3 lagen: 1. Edge laag: alle klanten worden hierop aangesloten en er is dus veel routering van beperkte capaciteit. 2. Metro laag: de eerste laag van de backbone en er zijn minder connecties met lokale (bv. binnen Belgi¨e) traffiek met middelmatige capaciteit. 3. Transit laag: dit is de tweede laag van de backbone en verzorgt de capaciteit naar de rest van het netwerk/internet. ER is bijna geen routering meer en pure switching op zeer hoge capaciteiten. Peering punten zijn punten waarop de ISP met andere communiceert. Dit kan zowel direct gebeuren als via een Internet Exchange zoals bv. BNIX in Belgi¨e. Een server heeft uiteraard ook een toegangslijn die verzadigd kan raken. Er moet vooral rekening gehouden worden met hoeveel dat er wordt verstuurd van de server naar het internet: • Hoeveel simultane connecties naar een webserver men wil toelaten. • Wat is de gemiddelde grootte van de webobjecten, wat is de structuur van de websites, het soort content. • Moetene er nog andere protocollen dan HTTP geprioritiseerd worden. • Wat is de belasting van de webserver. Contentnetwerken kunnen de content zo dicht mogelijk bij de gebruiker plaatsen, content verspreiden over verschillende ISP’s en de belasting van de webserver verminderen door content te spreiden over meerdere servers of acceslijnen. Het doel van contentnetwerken is het beheren van de replicatie van content door middel van 2 taken: 1. Distributie: dit garandeert het kopi¨eren en synchroniseren van objecten van een originele server naar diverse replica servers. 2. Redirection: dit zorgt ervoer dat gebruikers het object downloaden van de dichstbijzijnde server. Dit wil zeggen minimale latency en/of hops. Het netwerk bestaat bestaat uit een ’Master Server’ met meerdere ’Replica Servers’. Er zijn nu verschillende manieren om contentnetwerken te classificeren: • Lokale/Globale distributie applicatieservers. • DNS-gebaseerde/Applicatieserver gebaseerde routeringsmechanismen. • ... • Op basis van wie de eigenaar is van het contentnetwerk en het beheert (ISP’s, Contentleveranciers, operatoren zoals Akamai) 33 Internettechnologie Daan Pape Netwerkoperatoren of dus ISP’s maken gebruik van caching proxies om bandbreedte en dus kosten in de backbone te besparen. Proxies kunnen recursief worden gebruikt, dit wil zeggen dat ze ouderproxies hebben. Op deze manier wordt een boomstructuur van proxies gebruikt. Voor aanvraag van niet populaire objecten zal er dus zeker een vertraging zijn en dit werkt niet ideaal als de originele servers niet dicht zitten bij de proxies uit de boomstructuur. Er zijn drie modellen voor webcaching: 1. Explicit caching: de gebruiker bepaald het gebruik van proxies in de browser en dit moet door de ISP ondersteund worden. 2. Forced explicit caching: sommeige ISP’s forceren proxiegebruik. HTTP trafiek wordt dan niet doorgelaten als het geen ISP proxyserver passeert. 3. Transparent caching: trafiek naar TCP poort 80 kan door de ISP worden afgeleid naar een proxiserver zonder expliciete configuratie in de browser van de gebruiker. Proxies moeten dus door gebruikers worden ingesteld in hun browsers. Het Web Cache Communication Protocol (WCCP) is een protocol ontworpen om problemen met deze configuraties te vermijden door gebruik te maken van interception of redirection proxies. Er wordt gebruik gemaakt van transparent caching en de netwerkelementen die met WCCP geconfigureerd zijn zullen HTTP trafiek afleiden naar proxy servers zonder dat de gebruikers dit merken. Er is volledige transparantie voor de gebruikers en WCCP bevat ook een fail-safe mechanisme wat betekent dat als de web cache niet bereikbaar is, het verkeer er ook niet naartoe zal worden afgeleid. Contentleveranciers zijn organisaties die grote hoeveelheden content publiceren op internet. Voorbeelden zijn CNN, Microsoft, Adobe, . . . en men wil deze content zo wijd mogelijk beschikbaar stellen bij de gebruikers, controle houden over de content en dit zonder grote investeringen in netwerken en bandbreedte. Er zijn nu twee mogelijkheden: • Clustergebaseerd websysteem of webcluster: de contentservers maskeren hun echte IP-adressen (”Real IP¨ of RIP) voor de client (”Client IP¨of ”CIP”). De client ziet 1 ”Virtual IP¨of ”VIP¨ adres dat gerelateerd is aan een toestel voor de contentservers. Dit toestel is een webswitch die dus layer 4 of layer 7 switching doet en er zijn twee client/server dataflow mogelijkheden: – One-way architectuur: de contentserver antwoordt direct naar de client. – Two-way architectuur: de contentserver antwoordt aan de contentswitch, die vervolgens aan de client antwoordt. Bij Layer 7 switching zal men gegarandeerd two-way gebruiken. Zowel routeringsmechanismen (bepalen hoe de request bij de contentserver(s) terecht komt) als dispatching algoritmes (bepalen bij welke content server de request terecht komt) voor load balancing zijn belangrijk: – Packet double-rewriting: dit is gebaseerd op NAT en zowel voor ingaande als uitgaande pakketten moet de TCP en IP header worden herschreven en de checksums worden herberekend. Voor inkomende pakketen herschrijvt de webswitch het VIP naar het RIP van de content server. Voor uitgaande pakketten herschrijft de webswitch het bronadres van RIP naar VIP. Dit is dus bij een two-way architectuur. – Packet single-rewriting de webswitch vervangt het VIP door RIP (contentserver) en herberekent de IP en TCP header checksum. De contentserver antwoordt rechtstreeks aan client maar gebruikt als bron IP-adres het VIP. Dit is bij een one-way architectuur. – Packet tunneling, IP tunneling of IP encapsulation: dit is een techniek om een IP datagram te encapsuleren in een ander IP datagram. De webswitch tunnelt het inkomende pakket naar de contentserver door het te encapsuleren in een nieuw IP datagram met bron IP het VIP en destinatie IP het RIP. De contentserver stript het 34 Internettechnologie Daan Pape IP datagram eraf en zit het origineel pakket dat bestemd was aan het VIP adres. De contentserver antwoordt rechtstreeks aan de client met als brond IP het VIP. Dit is een one-way architectuur. – Packet Forwarding: Alle content servers hebben een RIP x met x het nummer van de content server, ook hebben ze een VIP. Packet forwarding gebeurt nu doordat de webswitch in het inkomende pakket het MAC adres vervangt door dat van de contentserver. Er gebeurt dus op laag 2 een MAC adress translation. Als de contentserver het pakket ontvangt ziet het er uit alsof het voor hemzelf is aangezien hij een gedeeld VIP-adres heeft. De contentserver kan rechstreeks antwoorden aan de client zonder modificatie van het IP datagram. Dit si een one-way architectuur. – TCP gateway: de webswitch bevat een applicatielaag proxyserver die alle inkomende verbindingen accepteert. De proxyserver heeft een persistente TCP connectie met alle contentservers. De proxiserver stuurt de client request door naar de contentserver en deze antwoord met data die de proxy doorstuurt naar de client. Alles loopt dus via die webswitch en dit is een two-way architectuur. – TCP splicing: Stel dat de webswitch twee connecties heeft die het moet splicen, ´e´en naar A en ´e´en naar B. Het concept bestaat er in dat de volgende data(byte) die de Webswitch verwacht van A moet verstuurd worden op de connectie naar B met het juiste sequence nummer (namelijk dat dat het verwacht van de webswitch). We hebben: ∗ splice_irs: splice initial receive sequence number: dit is het sequence number van de volgende byte die de webswitch verwacht te ontvangen van A. ∗ splice_iss: splice initial send sequence number: sequence number dat B als volgende verwacht te ontvangen van de webswitch. ∗ <splice_irs, splice_iss>: dit is een mapping tussen de sequence numbers spaces van de spliced connecties van A naar B. Om ervoor te zorgen dat het volgende segment er voor B uitziet als een segment uit zijn originele connectie met de webswitch moeten we in de IP header het bron/doel ip aanpassen naar dat van de uitgaande connectie en de checksum updaten. In de TCP header moeten we de bron/doel poort aanpassen naar die van de uitgaande connectie. We moeten het sequence number van de inkomende space op de uitgaande space mappen: seq num = (seq num - in->splice irs) + out->splice iss We moeten het ACK number van de inkomende space op de uitgaande space mappen ack num = (ack num - in->splice iss) + out->splice irs 35 Internettechnologie Daan Pape We updaten de TCP Header checksum na deze operaties. Dispatchingalgoritmes voor load balancing kunnen statisch of dynamisch zijn. De statische houden geen rekening met de actuele status van de webservers waardoor de dynamische beter presteren. Wel zorgen ze voor extra overhead omdat de status van de servers moet worden gecapteerd. • Gedistribueerde websystemen: de contentservers tonen hun RIP aan de clients en de sturing gebeurt niet vanuit een contentswitch. Men gebruikt deze systemen vooral bij een geografisch verspreid gebruik van de data. Ook hier hebben we verschillende soorten: – DNS gebaseerde routeringsmechanismen: dit is origineel ontworpen voor gedistribueerde websystemen, maar wordt heel veel gebruikt in geografisch gedistribueerde system en zoals Akamai. – Webserver gebaseerde routeringsmechanismen: routering en eventuele verwijzingen gebeuren op de contentserver. Men kan hier gebruik maken van: ∗ Triangulation: dit gebeurt in volgende stappen: · De client stuurt pakketten naar de eerste gecontacteerde content server die ze doorstuurt naar de tweede content server. · De routering is op IP tunneling gebaseerd wat wil zeggen dat het origineel datagram wordt ge¨encapsuleert in een nieuw IP datagram. · De tweede content server herkent dat het IP-datagram werd geherrouteerd en antwoordt rechtstreeks naar de client na aanpassing van het pakket waarbij zijn IP-adres vervangen wordt door dat van de eerste content server. · Alle volgende pakketten blijven het traject ”client, eerste content server, tweede content server”volgen. ∗ HTTP redirection: er kan een 301 ’Moved permanently’ of 302 ’Moved temporarily’ worden verstuurd. Dit laat controle toe op een heel fijn niveau maar introduceert extra latency. ∗ URL rewriting: In dit geval zal de eerste gecontacteerde contentserver dynamisch de linken van de ingebedde objecten herschrijven. Dit kan vaak in combinatie met intelligente DNS-gebaseerde routering en dit wordt veel door CDN’s gebruikt. Er is wel een grote load en latency door dit mechanisme. 8.3 Akamai Akamai is de grootste CDN provider op het internet en wordt algemeen beschouwd als de marktleider. Het is in 1995 in MIT ontstaan omdat Tim Berners-Lee het probleem van network congestion voorzag en zijn collega’s uitdaagde een goede techniek te bedenken. 85% van de globale internet gebruikers bevinden zich binnen 1 hop van een Akamai server. Het is voor veel contentleveranciers niet mogelijk om een wereldwijd servernetwerk uit te bouwen. CDN’s bouwen wel dit netwerk en vragen dan een vergoeding om hiervan gebruik te maken. Zij kunnen de kosten aan door een gedeelde infrastructuur die door meerdere gebruikers wordt betaald. Oorpsronkelijk was het de missie van CDN operatoren om content voor hun klanten (content providers) op een geografisch verspreide manier te leveren. Tegenwoordig bieden CDN operatoren ook andere diensten aan: • Ze beschikken over zeer hoog technologische algoritmes en protocollen (bv. DNS tools) • Ze proberen meer taken op zich te nemen zoals scripting taken Meestal gebruiken CDN’s DNS om hun URL’s te transformeren in locatie-onafhankelijke verwijzingen. 36 Internettechnologie Daan Pape Akamai’s mapping proces gaat in volgende stappen. Stel dat een url www.mysite.net in een webpagina verwijst naar a7.g.akamai.net: 1. De client DNS resolver krijgt als DNS de Akamai Top Level DNS server terug. 2. De client DNS vraagt aan deze server de DNS server voor g.akamai.net terug [TTL typisch 1 uur]. 3. De client DNS vraagt aan akamai waar a7.g.akamai.net zit en krijgt een IP adres van een edge server terug [TTL typisch enkele seconden tot een minuut]. 4. De client maakt verbinding met de edge server. 5. De client haalt eventueel een deel van de content bij een andere Akamai server. Een pagina bestaat de dag van vandaag uit veel dynamische content wat proxy server caches typisch niet kunnen. Daarom zal er een Edge Side Include of ESI zijn welke een eenvoudige markup taal is, XML gebaseerd. Daarin staat beschreven welke delen van de site cacheable zijn en welke niet. De componenten worden beheerd als onafhankelijke objecte nin de cache van de edge server. Akamai zal dan enkel de statische fragmenten serveren en de dynamische ophalen bij de originele webserver ophalen. ESI wil zeggen dat de processing op de edge server gebeurt. Andere diensten zijn bijvoorbeelde EdgeComputing for Java waarbij J2EE applicaties op de Akamai servers kunnen worden uitgevoerd, een Virtual Waiting Room om shopping carts en zo op te slaan, geografische landherkenning, . . . 9 Gastlessen Bekijk de powerpoints 37
© Copyright 2024 ExpyDoc