JIGSAW Webserver Marc Fenselau Michael Imiolczyk Inhalt 1. Filter 1.1 Was sind Filter? 1.2 Übersicht 1.3 Beispiel „RessourcFilter und Filtered Ressource“ 1.4 Weitere Filter 2. Performance 2.1 Gründe 2.2 Gerüchte 2.3 Vier Benchmark Tests 2.4 Fazit 3. Cache Management beim Jigsaw 3.1 Was ist das? 3.2 Genau 3.3 Belegt und verbessert 4. Jigsaw Proxy 4.2 Jigsaw Proxy 4.3 Proxy Client& Server+ Smart Cache 5. Security 5.1 Jigsaw Sicherheit 5.2 Features 5.3 Fazit 6. Vor und Nachteile 5.1 Vorteile 5.2 Nachteile 5.3 Letzter Überblick 7. Ein kleines Java- Webserver- Programm Jigsaw Webserver Filter Was sind Filter? Priorität bei einem Server (Webserver): Implementierte AuthentifizierungsSicherheitsmechanismen Filter sind stellen ein Mechanismus dar, der sich allgemein für die verschiedenen Absicherungen für den Jigsaw nutzen lassen Jigsaw Filter sind „ladbare“ Module, außerhalb des „Haupt Code Stroms“ Können in der Serverlaufzeit geladen/ Entladen werden Jigsaw Filter laufen innerhalb eines „Thread“ Können so den „Thread flow“ des Jigsaw kontrollieren können Kontrolle über den Zugang auf verschiedene interne Ressourcen des Jigsaw ausüben Jigsaw Webserver Filter Was sind Filter? Sehr umfangreiches Thema Es gibt sehr viele verschiedene Filter beim Jigsaw Das Konzept der Filter erlaubt beim Jigsaw mehr als nur Absicherung Es können auch eigene Filter hinzugefügt/ programmiert werden Alle Ressourcen lassen sich mit einem Filter versehen Ein Filter ist auch eine Ressource = Objekt = Klasse Ab der Version 2, werden Filter mit den Protokoll- Frames der angefragten Ressource assoziiert Filter sichern zuerst mal den Zugang und den Zugriff auf Ressourcen Filter können diese, den Zugriff, manipulieren/ Verändern Jigsaw Webserver Filter 1. Beispiel: Die Klasse RessourceFilter und die Klasse FilteredRessource Die RessourceFilter Klasse definiert seine eigenen Attribute und ist die Oberklasse aller Filter Abhängigkeiten/ Wo liegt die Oberklasse der Filter ? Jigsaw Webserver Filter 1. Übersicht Jigsaw Webserver Filter 1. Übersicht Jigsaw Webserver Filter 1. Übersicht Jigsaw Webserver Filter Jigsaw Webserver Filter Jigsaw Webserver Filter Noch ein paar wichtige Filter: Die Klasse BasicAuthentifikationFilter aus Httpd = Benutzerkennung und Passwort GenericAuthFilter Klasse = Die Requests nach ip – adressen authentiziert (Standard), oder mit einem (bzw. Beides) MD5 Hash - Algorithmus Der AccessLimit Filter CacheFilter LoggerFilter Jigsaw Webserver Filter Zusammengefasst: Filter sollen Authentifizierung, Sicherheit, Information, Schutzbereiche, Bandbreite, bzw. den abgesicherten Webserververkehr ermöglichen Neuheit: Nicht nur Bereiche, sondern jedes Objekt lässt sich mit Filter versehen. Weil Filter ausserhalb des Stroms von Hauptcode laufen, können diese dem Jigsaw nicht schaden Aber können den „Thread flow“ vom jigsaw kontrollieren Jigsaw Webserver Performance Gründe (The Need for Speed) Anstieg der Internet – Benutzer bis heute Leitungen immer schneller http Anfragen verursachen Internet Traffic Neue, starke Webserver – Architekturen sind gefragt Verfügbarkeit Schnelligkeit und Intelligenz der Webserver Jigsaw Webserver Performance Und Java – Webserver, bzw. der Jigsaw? Die Gerüchte: Bytecode + Interpretation Ausführung = Langsam Java Virtuell Maschine JIT – Compiler Das gilt für alle Java - Webserver Aber was, wenn alles läuft? Jigsaw Webserver Performance Und der Jigsaw genau? Hier ist es sehr schwer aktuelle Ergebnisse zu finden (Wird getestet) Der Jigsaw ist der Nachfolger des CERN – Server (W3C) Ein „Experiment für neue Technologien“ Also kein „echter Webserver“ für den „echten“ Einsatz? Jigsaw Webserver Performance 4 ausführliche Benchmark - Tests Jigsaw Webserver Performance Jigsaw vs. Apache vs. CERN Test Nr. 1 von der W3.org: Eine ältere Jigsaw Version, 1.0 alpha 1 und 3 vs. Apache 1.1.1 und den Vorläufer CERN 3.0 Jigsaw Webserver Performance Jigsaw vs. Tomcat Test Nr. 2 : Open Source Web Servers: Performance on a Carrier-Class Linux Platform vom Ericson Research Institut, Kanada, von Ibrahim Haddad Jigsaw 2.0.1 vs. Tomcat 3.0.1 vs. Apache 1.3.14 und 2.08a auf einem Linux Cluster (Red Hat) von 1 CPU (Server) – 16 CPU‘s (Intel P3- 500Mhz., 512MB RAM pro Server) Tomcat 3.1 wird hier ohne Apache als „Standalone“ benutzt Jigsaw Webserver Performance Test Nr. 2 : Open Source Web Servers: Performance on a Carrier-Class Linux Platform vom Ericson Research Institut, Kanada, von Ibrahim Haddad Der Apache ist im Moment die Nr. 1, was Benchmarks angeht Jigsaw Webserver Performance Jigsaw vs. Javaserver Test Nr.3: Aktuellerer Test von der Zeitschrift iX, wie sieht der Jigsaw im Vergleich mit den anderen Java- Webservern aus? Test der Servlet- Engines von 3 Java Plugins und 3 reinen Java Servern Jigsaw 2.0.3 vs. Suns Java Webserver 2.0 vs. jetty von Mortbay vs. Plugins: jrun, Allaires, jserv auf Apache 1.3.6 und 1.3.9 Benchmarks: Requests in der Sekunde für 3 Servlets Bekanntes Servlet: „Hello World“ Der Jigsaw Server im “Hello World” Test auf Platz 1 Handelte hier 262 Requests in der Sekunde 181 R/s- 184 R/s für „File Test“ = Platz 2 Erstes Fazit: Der Jigsaw wird immer besser und schneller Jigsaw Webserver Performance Jigsaw vs. Apache Test Nr.4: Analyse der Jigsaw 2.0.1 vs. Apache 1.3.4 Architektur, Universität Waterloo Tesattribute: Performance und technische Flexibilität Performance Technology Flexibility SAAM Siemens Scale Scale Apache + - Jigsaw + - Apache +/- M Jigsaw + M Jigsaw Webserver Performance Jigsaw vs. Apache Fazit Neue Versionen haben den Älteren immer etwas voraus Der Jigsaw ist heute fast genauso schnell wie der Apache C vs. Java? Jigsaw besitzt angeblich auch um die 10 C- Module Vorteil Jigsaw: Flexibilität durch Java, automatische Plattformunabhängigkeit Der Jigsaw ist eine neue Technologie und mittlerweile, wie der Apache auch, als Webserver absolut tauglich Warum ist das so? Jigsaw Webserver Cache Management Jigsaw Webserver Cache Management Was ist das? Studie: 90%- 95% der Zugriffe auf einem Webserver erfolgen auf nur 10% der verschiedenen Dokumente Was passiert, wenn diese 10% ermittelt würden, und dem Client direkt zur Verfügung stehen würden? Der 1. Grund der guten Performance = Der Jigsaw cached die Ressourcen = Objekte Jigsaw Webserver Cache Management Genau: Jigsaw lädt eine Jigsaw- Resource = Objekt erst dann, wenn auf sie zugegriffen wird Nach dem Zugriff bleibt die Ressource im Cache Bei erneutem Zugriff auf die Ressource = Kein Festplattenzugriff nötig Der Jigsaw legt eine Tabelle an über den Cache Zusätzlich legt der Jigsaw einen Cache über die Requests an So wird kein neuer Prozess gestartet Nach einer Zeitspanne ohne Request auf das Dokument wird es aus dem Cache entfernt und auf die Festplatten geschrieben Jigsaw Webserver Cache Management Belegt und verbessert durch Experimente: P- Jigsaw Cluster und Cooperatives Caching Proxy Smart Cache Versuch Ergebnis: Der Jigsaw gewinnt nochmals 30% - 50% an Performance Jigsaw Webserver Jigsaw Proxy Proxy und Java: Jigsaw Webserver Jigsaw Proxy Proxy und Java: Methode: PUT Wird aber von den meisten Browsern NICHT unterstützt! Jigsaw Webserver Jigsaw Proxy Proxy und Java: Jigsaw Webserver Jigsaw Proxy Jigsaw Proxy Jigsaw Webserver Jigsaw Proxy Proxy Client und Server+ Smart Cache Jigsaw Webserver Jigsaw Security Proxy Client und Server+ Smart Cache beim Jigsaw Leistungssteigerung beim Jigsaw ~ 50% Sicherheit durch sehr gute Client, wie auch Server – Proxy Funktion des Jigsaw Jigsaw Webserver Jigsaw Security Sicherheit des Jigsaw Webserver Eigentlich gut durchdachtes Sicherheitskonzept mit Filtern Sicherheit durch sehr gute Client, wie auch Server – Proxy Funktion des Jigsaw Aber … Jigsaw Webserver Jigsaw Security Sicherheit des Jigsaw Webserver Jede Software hat Ihre „Bugs“, auch wenn Sie in Java geschrieben ist Auch der Jigsaw, gerade als experimenteller, ist verwundbar, trotzt des sehr gut durchdachten Sicherheitskonzeptes Schwachstellen: DOS device DoS execute arbitrary code on the system Jigsaw Httpd Proxy server Cross Site Scripting Jigsaw Webserver Jigsaw Security Sicherheit - Features des Jigsaw Webserver Filter Unterstützung von: SSH, SSL, MD5 Jigsaw Webserver Jigsaw Security Fazit Filterkonzept = + Authentifizierung = + Datensicherheit = Verwundbarkeit gegen Attacken = Mittelmaß Datensicherung = - Absicherung fehlerhafte Administration = - Weitere kritische Punkte: Offener Quellcode, der Vorteil eigene Klassen hinzuzufügen Aber: Hier ist fast jede Software irgendwann betroffen gewesen, oder ist es heute noch. Deshalb kann die Sicherheit als gut bewertet werden (IIS Heute noch Bugs) + Jigsaw Webserver Jigsaw Vor und Nachteile zusammengefasst Vorteile Automatische Plattformunabhängigkeit durch Java Das Konzept „neue Technologie“ läßt sich in der Zukunft gut auf kommende Hardware und Software Technologien übertragen Umsonst, Open Source + Updates Httpd 1.1 Unterstützung, + Multiprotokollfähig Caching Portabel und erweiterbar Metadaten Einfachste Installation Objektorientiert Beispiel P - Jigsaw Offener Quellcode, Skalierung Sicherheit Dynamische Kommunikation in der Zukunft möglich (error 404) Sehr ausführliche Dokumentation Sehr gute Unterstützung von IPV6 durch Java Jigsaw Webserver Jigsaw Vor und Nachteile zusammengefasst Nachteile Schwere, ungewohnte Administration Konfigartionsschwierigkeiten Absturz Caching In der Zukunft bei Erweiterung ellenlange Klassennamen Zuständigkeiten sind nicht eindeutig Sehr schwer andere Informationen über den Jigsaw zu bekommen, als vom W3C Viele kleine Module Unübersichtlichkeit in der Zukunft möglich Jigsaw Webserver Jigsaw Vor und Nachteile zusammengefasst Aber Supermöglichkeit zum experimentieren für Forschung und Studenten Jigsaw Webserver Jigsaw letztes Bild Der Jigsaw entspricht fast der Architektur eines Referenzservers, letzte Eckdaten 105,725 Zeilen Java code ( etwas C code ) 606 Module: 600 .java files und 10 .c &.h files 174.5 Zeilen code pro Modul im Durchschnitt Jigsaw Webserver Jigsaw Ende Auf Wiedersehen und vielen Dank fürs Zuhören!