05.03.2014 Aufrufe

Linux-Magazin Netze neu ordnen (Vorschau)

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

04/14<br />

DIE ZEITSCHRIFT FÜR LINUX-PROFESSIONALS<br />

Im Test: Tools für<br />

Online-Umfragen<br />

Meinungen erforschen mit Polldaddy,<br />

Lime Survey und Opina S. 58<br />

Knoppix 7.3<br />

Klaus Knopper über Ausstat<br />

tung, Security und Usability<br />

seines Babys S. 50<br />

Frameworks 5<br />

KDEs großes Aufräumen<br />

des historisch gewucherten<br />

Library-Wirrwarrs S. 66<br />

<strong>Netze</strong> <strong>neu</strong> <strong>ordnen</strong><br />

Software Defined Networking<br />

beendet das administrative<br />

Klein-Klein<br />

■ SDN-Grundlagen: Begriffe, Protokolle,<br />

Effekte, Open Source S. 28<br />

■ Frei und einsatzfähig: Open Flow S. 32<br />

■ Open Daylight bei der <strong>Linux</strong> Foundation S. 38<br />

■ Die aktuellen SDN-Produkte von VMware,<br />

Cisco, Midokura und IBM CS S. 40<br />

■ Mininet: Super Experimentier-Kasten<br />

für Netz- oder SDN-Admins S. 46<br />

■ Anleitung: Verteiltes Storage-Setup<br />

mit simplem ATA over Ethernet S. 76<br />

■ Sehen aus wie Lisp und laufen wie Java:<br />

Webprogramme in Clojure S. 96<br />

Perl-gesteuerte Suchmaschine für Strings sowie Fotos mit Umkreissuche S. 108<br />

www.linux-magazin.de<br />

Deutschland Österreich Schweiz Benelux Spanien Italien<br />

4 6,40 4 7,05 sfr 12,80 4 7,50 4 8,30 4 8,30<br />

4 192587 306401 04


Kompostiertes<br />

Login 04/2014<br />

Editorial<br />

Das <strong>Linux</strong>-<strong>Magazin</strong> begeht dieses Jahr seinen 20. Geburtstag. Neben der<br />

Freude darüber, das dienstälteste gedruckte Nur-<strong>Linux</strong>-Medium auf der Welt<br />

zu sein, mischen sich zugleich Gedanken an übrig Gebliebenes und Vergänglichkeit.<br />

Ich meine nicht nur die rund 1000 unerledigten E-Mails in meinem<br />

Posteingang, die sich über reichlich ein Jahrzehnt angesammelt haben. Vorgestern<br />

legte mir eine Kollegin einen Stapel Zip-Disketten mit <strong>Linux</strong>-<strong>Magazin</strong>-<br />

Druckdaten aus den späten 90ern auf den Schreibtisch.<br />

www.linux-magazin.de<br />

3<br />

Der journalistischen <strong>Linux</strong>-Chronistenpflicht folgend, würde ich die Daten<br />

gerne ins Heute überführen. Gerade im Zuge der 20-Jahres Ausgabe könnten<br />

wir die auch gut brauchen. Nur wie rankommen? Gestern habe ich aus einem<br />

(im Wortsinne) Haufen zum Verschrotten freigegebener Hardware ein Zip-<br />

Laufwerk gezogen. Als Nächstes brauche ich ein seltsames Scsi-Kabel und<br />

einen PC, wo ich das reingesteckt bekomme …<br />

Jan Kleinert, Chefredakteur<br />

Was dem <strong>Linux</strong>-<strong>Magazin</strong> in zehn Jahren in Sachen Leichen-im-Keller bevorsteht, kann es sich schon heute bei<br />

Apple anschauen. Der Macintosh des Computerpioniers ist dieser Tage 30 Jahre alt geworden. Damals galt<br />

der Mac als das Sinnbild für digitale Unabhängigkeit, wozu sicher Ridley Scotts Anti-Big-Brother-Werbevideo<br />

genauso viel beigetragen hat wie die Einstellung: Damals wären Apples Allgemeine Geschäftsbedingungen<br />

von heute undenkbar gewesen.<br />

Ein TV-Team des National Geographic Channel ist dieser Tage bei den Dreharbeiten für die Dokureihe<br />

„Diggers – die Schatzsucher“ überraschend auf eine bislang verschollen geglaubte Zeitkapsel gestoßen. Die<br />

hatten die Veranstalter der International Design Conference in Aspen vor 30 Jahren verbuddelt. Sie sollte<br />

eigentlich nach 20 Jahre wieder geborgen werden. Aufgrund von Arbeiten auf dem betreffenden Gelände<br />

ging das Ding aber sprichwörtlich wie wörtlich verschüttet.<br />

In der ausgegrabenen Zeitkapsel, vielleicht sollte man sie Zeit-Urne nennen, fand sich unter anderem Steve<br />

Jobs’ erste Computermaus. Die hatte der Apple-Gründer den Veranstaltern 1983 als persönlichen Gegenstand<br />

überlassen, nachdem er auf der Konferenz den mittlerweile legendären Vortrag „The Future is not<br />

what it used to be“ gehalten hatte. Dabei benutzte er einen Apple-Computer, in das er genau das heutige<br />

Artefakt gestöpselt hatte.<br />

Vielleicht sollte auch ich irgendwo ein Loch ausheben und die Zip-Disks für die interessierte Nachwelt versenken?<br />

Ich hätte ein Problem weniger, und ein archäologisch vernarrtes TV-Team der Zukunft ein Thema<br />

mehr. Wahrscheinlicher ist, dass mir die Aktion den Ruf einer Umweltsau einbrächte, der Schwermetalle und<br />

mit Weichermachern durchsetzten Kunststoff sorglos im Boden versenkt. Allein den laxen Umweltgesetzen<br />

des Jahres 1983 hat Steve Jobs es zu verdanken, dass seine damalige Müllentsorgungspraxis die heutige<br />

Öffentlichkeit mit Milde aufnimmt. Mäuse von heute, so viel muss klar sein, gehören nicht in Erdlöcher!<br />

Die Zip-Disks lasse ich vorerst auf meinem Schreibtisch liegen. Meine 1000 historischen E-Mails könnte ich<br />

ja einem computergeschichtliches Museum übergeben. Das würde meine digitale Seele sehr entlasten, und<br />

die 20-Jahres-Feierlichkeiten dürfen beginnen.


Inhalt<br />

www.linux-magazin.de 04/2014 04/2014<br />

4<br />

Mit der Anzahl der Geräte und vir tuellen Maschinen wächst die Komplexität der lokalen<br />

Netzwerke ins nicht Beherrschbare. Software Defined Networking (SDN) beendet das administrative<br />

Klein-Klein, indem es untere <strong>Netze</strong>benen zu virtuellen Services abstrahiert. Der<br />

<strong>Magazin</strong>-Schwerpunkt taucht in diese <strong>neu</strong>e und teilweise schon praxistaugliche Technik ein.<br />

Aktuell<br />

Titelthema: <strong>Netze</strong> <strong>neu</strong> <strong>ordnen</strong><br />

6 N ew s<br />

n Libre Office 4.2 ist fertig<br />

n Open SSH 6.5: Schneller und effizienter<br />

n Britische Behörde: Ubuntu ist sicher<br />

n CfP: Chemnitzer <strong>Linux</strong>tage 2014<br />

28 Grundlagen<br />

Titel<br />

Warum und wie Admins mit Software<br />

Defined Networking an Flexibilität und<br />

zentraler Steuerung gewinnen.<br />

38 Open Daylight<br />

Namhafte Unternehmen kooperieren und<br />

erarbeiten einen gemeinsamen Standard.<br />

Im Februar erblickte Open Daylight Tageslicht.<br />

Neben OOXML hält die Europäische Kommission<br />

auch den Einsatz von ODF für okay.<br />

12 Zahlen & Trends<br />

n Centos und Red Hat kooperieren<br />

n Erste <strong>Vorschau</strong> der KDE Frameworks 5<br />

n Cumulus-<strong>Linux</strong> auf Dell-Switches<br />

20 Zacks Kernel-News<br />

n Ein bisschen getrollt: <strong>Linux</strong> und BSD<br />

n Probleme mit »sscanf()«<br />

Software ersetzt die echten Netzwerkgeräte,<br />

die in Tabellen Informationen vorhalten.<br />

32 Open Flow<br />

Dümmere Netzwerkhardware schafft<br />

klügere <strong>Netze</strong>: Bei Open Flow geht diese<br />

Gleichung auf.<br />

40 Enterprise-Produkte<br />

Software Defined Networking gewinnbringend<br />

umzusetzen ist das Ziel von VMware,<br />

Cisco, IBM und Midokura.<br />

46 Mininet<br />

Als Testbett für SDN emuliert Mininet ein<br />

komplettes Netzwerk.<br />

OF-Controller<br />

TCP<br />

Mininet<br />

22 Fosdem 2014<br />

Zwischen 5000 und 12 000 OSS-Freaks<br />

trafen sich in mehr als 500 Vorträgen an<br />

der Freien Universität Brüssel.<br />

Open Flow steuert den Datenfluss zentral und<br />

senkt die Hardwarekosten.<br />

»eth0«<br />

Root Namespace<br />

Socket<br />

»s1-eth0«<br />

Softwareswitch<br />

Socket<br />

»s1-eth1«<br />

Mininet nutzt die Network Namespaces, Veth Pair Veth um Pair<br />

»h1-eth0«<br />

separierte virtuelle Switches anzulegen.<br />

»h2-eth0«<br />

Prozess 1<br />

Prozess 2<br />

Typisch Fosdem: Lennart Poetterings Kdbus-<br />

Vortrag war hoffnungslos überfüllt.<br />

26 Cebit 2014 <strong>Vorschau</strong><br />

Offen und mobil ist das Motto der Cebit,<br />

zumindest was Open Source angeht.<br />

TOOL<br />

DELUG-DVD<br />

Knoppix 7.3 32/64 Bit<br />

TOOL<br />

TOOL<br />

Exklusiv nur hier: Klaus Knoppers<br />

installierbare Live-Distribution.<br />

Neu: Knoppix auf einem USB-Stick<br />

ist jetzt updatebar!<br />

Fosdem-Vorträge<br />

Zum Nachschauen und Hinhören:<br />

4 Stunden Highlights aus Brüssel<br />

H1-Namespace<br />

Details zu DVD-<br />

TOOL<br />

Inhalten auf S. 49<br />

E-Book komplett<br />

„Praxishandbuch VMware Vsphere 5“<br />

Das E-Book kostet regulär 40 Euro!<br />

Magnolia CMS<br />

TOOL<br />

Exklusiv angefertigte Virtual<br />

Appliance mit sonst nicht erhältlichen<br />

Zusatzmodulen<br />

TOOL<br />

SDN: Mininet-VM<br />

H2-Namespace


04/2014 04/2014<br />

Inhalt<br />

58 Meinung zählt<br />

Universitäre Studien, Kundenzufriedenheit<br />

oder die politische Meinung:<br />

Lime Survey, Opina und Polldaddy gestalten<br />

Online-Umfragen.<br />

80 Winterrätsel-Auflösung<br />

„A Plea for lean Software“ lautete die<br />

korrekte Lö sung. 14 Leser lagen richtig,<br />

einer von ihnen gewinnt einen Videorecorder<br />

für den Raspberry Pi.<br />

96 Web funktional<br />

Sieht aus wie Lisp und läuft überall,<br />

wo Java installiert ist: Clojure ist<br />

handlich und bringt jede Menge Bibliotheken<br />

und Tools mit.<br />

www.linux-magazin.de<br />

5<br />

Software<br />

Sysadmin<br />

Know-how<br />

49<br />

Einführung<br />

Auf der DELUG-DVD: Knoppix exklusiv,<br />

eine VM mit Magnolia CMS, Fosdem-<br />

Videos und ein <strong>Linux</strong>-E-Book.<br />

50 Knoppix 7.3<br />

Titel<br />

Klaus Knoppers Live-Betriebssystem in<br />

der <strong>neu</strong>esten Exklusiv-Version.<br />

75 Einführung<br />

Aus dem Alltag eines Sysadmin: Charly<br />

reguliert seine Downloadserver.<br />

76 ATA over Ethernet<br />

Titel<br />

Mit AOE virtuelle Netzwerk-Raids bauen.<br />

92 Kerntechnik – Folge 73<br />

Das Tracing-Werkzeug Ktap hilft bei<br />

Entwicklung, Tuning und Fehlersuche.<br />

Applikation<br />

Bytecode<br />

Ktap<br />

Output<br />

Ktap-Skript (Lua)<br />

Userland<br />

Kernel<br />

56 Magnolia<br />

Das DELUG-Magnolia bietet attraktive<br />

Zugaben des CMS-Herstellers.<br />

Tools wie Guymager erkennen AOE-Laufwerke.<br />

Ktap besteht<br />

Lua-Interpreter<br />

aus einem Kernelmodul<br />

VM Kernelmodul<br />

und einer Applikation. »ktapvm.ko«<br />

Ktap-Runtime-Library<br />

Auch ein Shop-Modul hat Magnolia integriert.<br />

58 Bitparade<br />

Titel<br />

Drei Dienste helfen beim Einrichten und<br />

Auswertung von Online-Umfragen.<br />

66 KDE Frameworks 5<br />

Titel<br />

Die nächsten Frameworks sollen Ordnung<br />

in KDEs Bibliotheken-Wust bringen. Der<br />

An wen der muss weniger installieren.<br />

Forum<br />

80 Winterrätsel-Lösung<br />

Alle Fragen und alle Antworten.<br />

84 Recht<br />

Warum und wann eine Firma für<br />

Vergehen der OSS-Community haftet.<br />

88 Tux liest<br />

Deterministische Auto maten<br />

und weniger<br />

schlechter Code.<br />

90 Leserbriefe<br />

Auf den Punkt gebracht.<br />

Service<br />

»uprobe« »kprobe« »ftrace« »perf«<br />

Programmieren<br />

96 Clojure<br />

Titel<br />

Modernere Webanwendungen schreiben.<br />

102 C++ – Folge 15<br />

Drei Jahre nach C++11 erhält der Sprachstandard<br />

mit C++14 den letzten Schliff.<br />

Ein Beispiel berechnet den Zeitaufwand für einen<br />

Schultag in verschiedenen Auflösungen.<br />

108 Perl-Snapshot<br />

Eine Big-Data-Suchmaschine für Strings<br />

und Fotos mit Elasticsearch.<br />

Die Seite Inqlude führt bereits jetzt zahlreiche<br />

interessante Qt-und KDE-Bibliotheken.<br />

72 Tooltipps<br />

Ajenti 1.2.17, Uncsv 0.9.1, Haveged 1.8,<br />

EBD 0.9.20, Prun, Tcpreplay 4.0.0.<br />

3 Editorial<br />

114 IT-Profimarkt<br />

115 Seminare<br />

117 Stellenanzeiigen<br />

120 Veranstaltungen<br />

120 Inserenten<br />

121 Impressum<br />

122 <strong>Vorschau</strong><br />

Perlmeister Schilli steigt in die vollautomatische<br />

Big-Data-gestützte Bildauswertung ein.


Aktuell<br />

www.linux-magazin.de News 04/2014<br />

6<br />

News<br />

EU empfiehlt „auch ODF“ als Standardformat<br />

Die Europäische Kommission hält den Einsatz von ODF für okay.<br />

Ein Mitglied der schwedischen<br />

Piratenpartei, Amelia Andersdotter,<br />

hatte im November<br />

eine Anfrage an die EU-Kommission<br />

gestellt, in der die<br />

Abgeordnete in zwei Punkten<br />

nachhakte, wie es denn um<br />

die von der EU empfohlenen<br />

Dateiformate stehe.<br />

2011 hatte das Interinstitutionelle<br />

Komitee für Informatik<br />

(IIIS) alle Stellen angewiesen,<br />

den von Microsoft entwickelten<br />

und kontrollierten Standard<br />

OOXML zu unterstützen.<br />

Andersdotter fragte nach, welchen<br />

Sinn das mache, wenn<br />

nur ein Hersteller diesen Standard<br />

implementiere, und wie<br />

man mit öffentlichen Einrichtungen<br />

zu kommunizieren gedenke,<br />

die andere Standards<br />

einsetzen.<br />

Laut Open Source Observatory<br />

auf [https://joinup.ec.europa.<br />

© Europäische Union<br />

eu] hat der Vizepräsident der<br />

Europäischen Kommission –<br />

Maroš Šefčovič höchstselbst<br />

– geantwortet und dabei<br />

OOXML und ODF als Minimalanforderungen<br />

für den<br />

Dokumentenaustausch benannt.<br />

Dies, so Šefčovič, stelle<br />

sicher, dass kein Vendor-Lockin<br />

bestehe oder aufkommen<br />

könne. Zudem sollen Behörden<br />

andere Dateiformate nach<br />

dem Best-Effort-Prinzip, also<br />

soweit es eben praktisch möglich<br />

sei, unterstützen.<br />

Open-Source-Aktivisten vom<br />

Open Forum Europe zeigten<br />

sich von dieser Antwort wenig<br />

beeindruckt und bezeichneten<br />

die Entscheidung als überfällig.<br />

Sie kritisierten, dass es<br />

die Europäische Union nicht<br />

wage, Farbe zu bekennen und<br />

sich auf den einen offenen<br />

Standard ODF festzulegen. n<br />

Google-Mitarbeiter debuggen Ffmpeg und Libav<br />

Mateusz Jurczyk und Gynvael<br />

Coldwind arbeiten beide für<br />

Google und tragen dort den<br />

Titel Information Security Engineers.<br />

Zu ihrem Job gehört<br />

es unter anderem, für das Internet<br />

wichtige Komponenten<br />

auf ihre Sicherheit hin abzuklopfen<br />

und die Hersteller<br />

über Sicherheitslücken zu<br />

informieren.<br />

Dank ihres Arbeitgebers<br />

Google stehen den Sicherheitsforschern<br />

für ihre Aufgabe die<br />

Kapazitäten von Googles Rechenzentren<br />

zur Verfügung,<br />

um im großen Stil automatisierte<br />

Tests umzusetzen, beispielsweise<br />

per Fuzzing.<br />

In den letzten beiden Jahren<br />

sei so auch das in C verfasste<br />

Multimedia-Framework Ffmpeg<br />

[http://​www.​ffmpeg.​org] in<br />

ihren Fokus geraten, schreiben<br />

die Forscher in Googles<br />

Security-Blog [http://googleonlinesecurity.blogspot.de].<br />

Die<br />

Software streamt, konvertiert<br />

und zeichnet Video- und Audio-Datenströme<br />

auf und<br />

dient als Basis für zahlreiche<br />

Anwendungen, zu denen neben<br />

Googles Chrome auch der<br />

beliebte Videolan Client (VLC)<br />

und Mplayer gehören.<br />

Man habe Ffmpeg beim Fuzzing<br />

zunächst unter Zuhilfenahme<br />

von 500 Cores mit simplen<br />

Mutationsalgorithmen<br />

beworfen sowie mit Dateien<br />

aus Mplayers Sample-Video-<br />

Sammlung und aus FATE (Ffmpeg<br />

Automatic Testing Environment).<br />

Im nächsten Schritt<br />

seien die Forscher dann zu<br />

2000 Kernen und zum Einsatz<br />

„komplexerer und effektiverer<br />

Mutationsmethoden“ übergegangen<br />

und hätten mit den<br />

Beispieldateien mehr Code<br />

abgedeckt.<br />

Der Erfolg: In den zwei Jahren<br />

ihrer Arbeit habe das Ffmpeg-Projekt<br />

mehr als 1000<br />

Bugfixes von den Forschern<br />

erhalten, einige von ihnen<br />

Security-bezogen. Das habe<br />

die Robustheit und Sicherheit<br />

von Ffmpeg deutlich gestärkt.<br />

Zugleich haben sie mit den<br />

Maintainern von Libav [https://​<br />

​libav.​org], einem Ffmpeg-Fork,<br />

kooperiert, sodass nun beide<br />

Projekte eine ähnliche Stabilität<br />

aufweisen. Die Libav zähle<br />

zwar erst 413 Patches, hole<br />

aber kontinuierlich auf.<br />

Die Ingenieure wollen auch<br />

künftig mit Ffmpeg und Libav<br />

zusammenarbeiten, bezeichnen<br />

die Projekte als „Fuzz<br />

clean“, raten aber dazu, nur<br />

vertrauenswürdige Inhalte<br />

abzuspielen und andernfalls<br />

Sicherheitsvorkehrungen zu<br />

ergreifen.<br />

n


Open SSH 6.5 sicherer und effizienter<br />

Dass Daniel Bernstein in der<br />

Kryptoszene einen guten Ruf<br />

genießt, ist kein Wunder: Der<br />

Mann hatte 1995 in den USA<br />

einen Prozess gewonnen, der<br />

dazu führte, dass Source code<br />

heute den Schutz des First<br />

Amendments (Meinungsfreiheit)<br />

genießt. Seit dem Urteil<br />

unterliegen Verschlüsselungsalgorithmen<br />

zudem nicht<br />

mehr dem Exportverbot. Dabei<br />

verteidigte sich Bernstein<br />

im späteren Verlauf des Prozesses<br />

sogar selbst, ohne eine<br />

formale Anwaltsausbildung<br />

zu haben.<br />

Das Open-SSH-Projekt [http://​<br />

​www.​openssh.​com] vertraut dem<br />

Mathematiker offenbar, was<br />

sich in einigen Änderungen<br />

der Version 6.5 niederschlägt.<br />

SSH-Client und ‐Server setzen<br />

bereits seit einiger Zeit<br />

auf Bernsteins Curve25519-<br />

Algorithmus. Beim asymmetrischen<br />

Schlüsselaustausch<br />

kommt nun das auf elliptischen<br />

Kurven beruhende<br />

Austauschprotokoll Elliptic<br />

Curve Diffie Hellman (ECDH)<br />

zum Einsatz. Es erzeugt die<br />

symmetrischen Schlüssel zum<br />

Chiffrieren der eigentlichen<br />

Kommunikation.<br />

Ebenfalls von Daniel Bernstein<br />

stammt Ed25519, eine<br />

Implementierung des digitalen<br />

Signaturschemas EdDSA,<br />

die zugleich effizienter und sicherer<br />

sein soll als andere Implementierungen<br />

von EdDSA.<br />

Eine <strong>neu</strong>e Transpositions-Variante<br />

kombiniert Bernsteins<br />

Chacha20 mit Poly1305 und<br />

soll kryptographisch schwache<br />

und schlecht implementierte<br />

Chiffrensammlungen<br />

für Transport Layer Security<br />

(R4, CBC) ersetzen.<br />

Zugleich lehnt Open SSH<br />

RSA-Schlüssel von alten proprietären<br />

Clients und Servern<br />

ab, die das obsolete RSA/​<br />

MD5-Schema verwenden.<br />

Es akzeptiert lediglich noch<br />

DSA-Keys und auch die nur<br />

zeitlich begrenzt. Schwächere<br />

Hash-Kalkulationen für den<br />

Schlüsselaustausch in unfreien<br />

Clients und Servern lehnt<br />

Open SSH 6.5 nun ab. n<br />

Open SSH gehört zu den Standardtools der meisten <strong>Linux</strong>-Distributionen.<br />

News 04/2014<br />

Aktuell<br />

www.linux-magazin.de<br />

7<br />

Kernel 3.13: NFtables, schnellere SSD-IOPS und NFC mit Secure Element<br />

Mit reisebedingter Verspätung<br />

entließ Linus Torvalds im Januar<br />

2014 die Version 3.13 des<br />

Kernels in die freie Wildbahn,<br />

sie hat wieder interessante<br />

Features im Gepäck. Die Aufnahme<br />

von NFtables in den<br />

Kernel hatte sich ja bereits bei<br />

der Veröffentlichung des Vorgängers<br />

abgezeichnet, nun ist<br />

der Code im Kernel.<br />

Auf der Mailingliste hat NFtables-Entwickler<br />

Patrick McHardy<br />

die aktuelle Version mit der<br />

Nummer 0.099 versehen und<br />

den Code für testfähig und<br />

geeignet für den privaten Einsatz<br />

erklärt. Zugleich kündigte<br />

er für die nächste Version eine<br />

vollständige Kommandoreferenz<br />

sowie eine ausführliche<br />

Dokumentation an.<br />

Mit fast einer Million I/​O-Operationen<br />

pro Sekunde (IOPS)<br />

übertreffen aktuelle SSDs den<br />

entsprechenden Wert traditioneller<br />

Festplatten deutlich.<br />

Bei Letzteren setzen physikalische<br />

Eigenschaften von Kopfmechanik<br />

und rotierenden<br />

Scheiben den IOPS Grenzen.<br />

Sequenzielle Zugriffe sind<br />

aus diesem Grund die beste<br />

Wahl.<br />

Das ist bei SSDs anders: Sie<br />

erlauben es, I/​O-Operationen<br />

zu parallelisieren, was Kernel<br />

3.13 seit Neuestem unterstützt.<br />

Ein veränderter Block<br />

Layer beherrscht ein Multiqueue-Verfahren<br />

[http://​kernel.​<br />

​dk/​blk‐mq.​pdf] und erreicht so<br />

viele Millionen IOPS. Allerdings<br />

wurde bislang erst der<br />

»virtioblk«-Treiber portiert,<br />

weitere sollen in den nächsten<br />

Releases folgen.<br />

Bei AMD-Radeon-Karten unterstützt<br />

der <strong>neu</strong>e Kernel<br />

standardmäßig Powermanagement<br />

für verschiedene Asics<br />

(BTC, SI, Evergreen, R7XX)<br />

sowie APUs (Sumo und Palm).<br />

Für mobile AMD-Radeon-<br />

Hardware mit zwei GPUs beherrscht<br />

er zudem automatisches<br />

GPU-Switching.<br />

Auch beim Intel-Support gibt<br />

es Verbesserungen. Kernel<br />

3.13 kommt mit Intels MIC-<br />

Architektur (Many Integrated<br />

Core) zurecht, auf die unter<br />

anderem Xeon-Phi-Prozessoren<br />

setzen. Sie stecken beispielsweise<br />

im Tianhe-2, dem<br />

zurzeit schnellsten Supercomputer<br />

der Welt.<br />

Für ARMs Big-Little-Architektur<br />

gibt es einen Switch, um<br />

bei laufendem Betrieb Aufgaben<br />

an zwei SMP-Systeme zu<br />

delegieren, wobei ein kleiner<br />

Hypervisor die Virtualisierungsfunktionen<br />

der Cortex-<br />

CPUs verwendet.<br />

TCP Fast Open erspart TCP-<br />

Verbindungen einen Roundtrip<br />

und beschleunigt so die<br />

Kommunikation über TCP<br />

– Kernel 3.13 aktiviert es<br />

standardmäßig. Im Ethernet-<br />

Bereich bringt <strong>Linux</strong> Support<br />

für HSR (High-availability<br />

Seamless Redundancy) mit:<br />

In Netzwerken mit Ringtopologie<br />

ermöglicht das Protokoll<br />

Failover-Redundanz.<br />

Auch in der Near Field Communication<br />

(NFC) tut sich<br />

etwas: Der »pn544«-Treiber<br />

unterstützt nun das Secure<br />

Element, um NFC-Anwendungen<br />

sicher auszuführen.<br />

Das soll Bezahlen über NFC<br />

ermöglichen.<br />

Das ist aber wie so oft nur die<br />

Spitze des Eisbergs. Weitere<br />

Neuerungen liefern wie immer<br />

die Kernelversteher von<br />

den Kernelnewbies [http://​<br />

​kernelnewbies.​org/​<strong>Linux</strong>_3.​13]. Wer<br />

den Kern selbst übersetzen<br />

möchte, findet den Quellcode<br />

auf [ftp://​kernel.​org]. n


Aktuell<br />

www.linux-magazin.de News 04/2014<br />

8<br />

Sprachsteuerungs-App mit Simon Listens<br />

Eine Android-App macht<br />

das Smartphone zum Drahtlos-Mikrofon<br />

für die Open-<br />

Source- Sprachsteuerung Simon<br />

Listens. Simon Micro ist<br />

nicht kostenlos, sondern für<br />

rund 3 Euro bei Google Play<br />

zu haben. Nach Eingabe von<br />

IP-Adresse, Username und<br />

Passwort verbindet sich das<br />

Mobilgerät mit der Simon-<br />

Listens-Installation.<br />

Was die Sprachsteuerung ermöglicht,<br />

zeigt das Projekt in<br />

zwei Videos: Alte oder körperbehinderte<br />

Menschen können<br />

eine Medienanwendung<br />

inklusive Fernsehen, Musik,<br />

Video und Bildergalerie mit<br />

kurzen Sprachbefehlen steuern.<br />

Weitere Informationen<br />

über die Software und das<br />

Projekt gibt es unter [http://​<br />

​simon‐listens.​org].<br />

n<br />

Die App Simon Micro ist mit wenigen<br />

Angaben als Drahtlos-Mikrofon<br />

konfiguriert.<br />

Britische Behörde: Ubuntu am sichersten<br />

Aus einer Untersuchung verschiedener<br />

Client-Betriebssysteme<br />

durch die britische IT-<br />

Sicherheitsbehörde CESG ist<br />

Ubuntu 12.04 LTS als sicherstes<br />

Produkt hervorgegangen.<br />

Das Testfeld bestand aus elf<br />

Desktop- und Mobil-Betriebssystemen,<br />

dazu gehörten<br />

Windows 7 und 8, Windows<br />

RT, Android 4.2, Apples I-OS<br />

6 und Mac OS X 10.8 sowie<br />

Google Chrome OS 26.<br />

Die Briten untersuchten die<br />

Sicherheit der Systeme in<br />

mehreren Kategorien, beispielsweise<br />

VPN, Festplattenverschlüsselung,<br />

Secure Boot,<br />

Sandboxing sowie die Durchsetzung<br />

von Security Policy<br />

und Update Policy.<br />

Kein System konnte alle Ansprüche<br />

für den Einsatz in britischen<br />

Behörden vollständig<br />

erfüllen, doch Ubuntu 12.04<br />

LTS zeigte sich insgesamt als<br />

das sicherste System im Testfeld.<br />

Die meisten kritischen<br />

Schwächen wies Windows<br />

Phone 8 auf.<br />

Ubuntu-Hersteller Canonical<br />

hofft darauf, mit der Ubuntu-<br />

Version 14.04 LTS aufgrund<br />

der Unterstützung von Secure<br />

Boot noch besser abzuschneiden.<br />

Ausführlichere Informationen<br />

aus erster Hand gibt es<br />

auf der CESG-Website [http://<br />

www.cesg.gov.uk], ein eigenes<br />

PDF auf [http://​ubuntu.​com] bewertet<br />

die Untersuchung aus<br />

Canonicals Sicht.<br />

n<br />

Libre Office 4.2 ist fertig<br />

Die Document Foundation hat<br />

Version 4.2 von Libre Office<br />

veröffentlicht. Die freie Bürosuite<br />

erfuhr unter anderem<br />

Verbesserungen der Performance<br />

und kann noch mehr<br />

Fremdformate importieren.<br />

Für die Release haben Entwickler<br />

die Tabellenkalkulation<br />

Calc gründlich überholt.<br />

Besonders das Verarbeiten<br />

großer Datenmengen und<br />

der Import umfangreicher<br />

und komplexer Xlsx-Tabellen<br />

klappt nun schneller, weil die<br />

Software ihre Berechnungen<br />

über Open CL auf dem Grafikprozessor<br />

vornimmt.<br />

In Sachen Interoperabilität<br />

kann das freie Office besser<br />

mit Docx-Dateien (Microsoft<br />

OOXML) und RTF-Dokumenten<br />

umgehen. Neue Importfilter<br />

gibt es für Abiword und<br />

Apple Keynote. Die Textverarbeitung<br />

Writer speichert jetzt<br />

Vorlagen auch im Microsoft-<br />

Word-Format DOT.<br />

Daneben haben die Entwickler<br />

70 Prozent der Dialogboxen<br />

der Benutzeroberfläche überarbeitet,<br />

für Poweruser gibt<br />

Libre Office 4.2 beschleunigt Berechnungen in Calc durch den Einsatz der GPU.<br />

es zudem eine Oberfläche zur<br />

Expertenkonfiguration. Die<br />

Windows-Ausgabe der Open-<br />

Source-Suite unterstützt das<br />

IAccessible2-Feature für die<br />

Barrierefreiheit, in der derzeitigen<br />

Release gilt es allerdings<br />

noch als experimentell.<br />

Aus Entwicklersicht beschreibt<br />

Michael Meeks in seinem<br />

Blog die Fortschritte der<br />

<strong>neu</strong>en Version. Dazu gehören<br />

eine bessere Testabdeckung,<br />

das Entfernen von deutschsprachigen<br />

Kommentaren und<br />

totem Code sowie die Umstellung<br />

der technischen Dokumentation<br />

auf Doxygen.<br />

Libre Office ist unter LGPL lizenziert,<br />

Version 4.2 steht für<br />

<strong>Linux</strong>, Windows und Mac OS<br />

X zum Download unter [http://​<br />

​de.​libreoffice.​org/​download/] bereit.<br />

Der Klick auf den Menü-<br />

Eintrag »Neuerungen 4.2«<br />

führt auf eine deutschsprachige<br />

Seite, welche die Features<br />

von Libre Office 4.2 samt<br />

Screenshots vorstellt. Die<br />

deutsche Lokalisierung des<br />

GUI sowie die Hilfe gibt es als<br />

separate Dateien.<br />

n


Valve verschenkt Spiele an Entwickler<br />

Nicht uneigennützig, aber<br />

großzügiger als viele andere<br />

Firmen bietet Valve Debianund<br />

Ubuntu-Entwicklern die<br />

Spiele aus eigener Herstellung<br />

an. Die frohe Botschaft eröffnete<br />

Neil McGovern, dessen<br />

Firma Collabora mit Valve kooperiert,<br />

seinen Mitentwicklern<br />

zunächst auf der Debian-<br />

Mailingliste.<br />

Demnach erhalten Debian-<br />

Entwickler Zugang zu allen<br />

vergangenen und zukünftigen<br />

Spielen, die Valve produziert<br />

– und das sind nicht die<br />

schlechtesten. Zur Auswahl<br />

zählen etwa Half Live, Left 4<br />

Dead, Dota und Portal. Gute<br />

zwei Wochen später erhielten<br />

auch Ubuntu-Entwickler dieses<br />

Angebot.<br />

Valve dürfte dabei Hintergedanken<br />

hegen, denn das<br />

Wohlwollen der Entwickler<br />

schadet sicher nicht, wenn die<br />

eigene Spielekonsole Steam<br />

auf Debian-Basis läuft. Doch<br />

zeigen sich andere Firmen,<br />

die Debian und Ubuntu im<br />

großen Stil einsetzen, meist<br />

nicht so großzügig.<br />

Die Gruppe der Beschenkten<br />

ist indes überschaubar: Nicht<br />

jeder, der mal ein Patch geliefert<br />

hat, ist automatisch ein<br />

Debian- oder Ubuntu-Entwickler.<br />

Dieser Status setzt<br />

einiges an Vorarbeit voraus<br />

und folgt festen Regeln. n<br />

Coverity bindet Github und Travis CI an<br />

Der Anbieter Coverity hat seinen<br />

kostenlosen Code-Scanservice<br />

für Open-Source-Projekte<br />

nun auch an die Dienste<br />

Github und Travis CI angebunden.<br />

Mit der <strong>neu</strong>en Integration<br />

sollen auch Projekte,<br />

die keine eigene Infrastruktur<br />

betreiben, in den Genuss der<br />

statischen Code-Analyse kommen.<br />

Sie können ihren Code<br />

über den Repository-Hoster<br />

Github oder den Continuous-<br />

Integration-Anbieter Travis<br />

CI zur Untersuchung einreichen.<br />

Zu den ersten Projekten, die<br />

von der <strong>neu</strong>en Schnittstelle<br />

Gebrauch machen, zählt die<br />

Git-Bibliothek Libgit2, die das<br />

publikumswirksam mit einem<br />

Coverity-Badge auf ihrer Github-Seite<br />

signalisiert.<br />

Coveritys statische Code-<br />

Analyse für C/C++ und Java<br />

nutzen inzwischen rund<br />

1200 Open-Source-Projekte,<br />

darunter der <strong>Linux</strong>-Kernel,<br />

der Apache-Webserver und<br />

der Python-Interpreter. Jedes<br />

Jahr veröffentlicht das Unternehmen<br />

zudem den Open<br />

Source Integrity Report, der<br />

Auskunft über den Zustand<br />

der gescannten Open-Source-<br />

Projekte gibt.<br />

Weitere Informationen sowie<br />

kostenlose Anmeldemöglichkeiten<br />

für Projekte gibt es unter<br />

[https://scan.coverity.com]. n<br />

News 04/2014<br />

Aktuell<br />

www.linux-magazin.de<br />

9<br />

Anzeige


Aktuell<br />

www.linux-magazin.de News 04/2014<br />

10<br />

Kurznachrichten<br />

SEO-Panel 3.4.0: Die plattformübergreifende Software will Admins beim<br />

Optimieren von Webseiten helfen. Neu: An Bord sind nun ein fortgeschrittener<br />

Proxymanager, ein Proxy-Import-Feature und die Möglichkeit,<br />

automatisch den Proxy zu wechseln, falls der aktuelle versagt. Die Software<br />

integriert Jquery, und es gibt eine Wiederherstellungsroutine für<br />

Passwörter. Lizenz: GPLv2 [http://​www.​seopanel.​in]<br />

SFL-Phone-KDE 1.3.0: Freier Telefonclient für den KDE-Desktop. Neu:<br />

Die Release verbessert die NAT-Unterstützung, bietet eine optimierte<br />

Rauschunterdrückung und automatische Aussteuerung an und unterstützt<br />

Klingeltöne im Ogg- und Flac-Format. Noch experimentell ist die<br />

Möglichkeit, Videokonferenzen mit mehreren Teilnehmern abzuhalten.<br />

Die Entwickler haben SFL-Phone-KDE unter Einsatz von Qt 5 und QML<br />

umgeschrieben. Da die Software aber nicht auf den KDE-Frameworks in<br />

Version 5 basiert, handelt es sich um eine KDE-4-Anwendung. Lizenz: GPL<br />

[http://​sflphone.​org]<br />

Epoch 1.0: Minimalistisches, alternatives Initsystem. Neu: Das System ist<br />

in einer einzigen Binärdatei enthalten und benutzt »/etc/epoch.config« als<br />

einzige Konfigurationsdatei. Das Kommando »epoch« dient zum Starten<br />

und Stoppen, Aktivieren und Deaktivieren von Diensten, zeigt deren Status<br />

an und kann den Runlevel wechseln. Das Initsystem verfolgt die PIDs<br />

aller Dienste und unterstützt auch PID-Dateien. Daneben hört es auf die<br />

Tastenkombination [Strg] + [Alt] + [Entf], die beim Booten oder Shutdown<br />

hängende Tasks abbricht. Drückt der Admin die Kombination zweimal<br />

binnen 5 Sekunden, startet Epoch das System <strong>neu</strong>. Lizenz: Public Domain<br />

[http://​universe2.​us/​epoch.​html]<br />

Lernstick 2014-01-24: Mobile Lernumgebung in Form eines Live-<strong>Linux</strong>, das<br />

sich auf externen Medien (USB-Sticks) installieren und ausführen lässt.<br />

Neu: Zu den Neuerungen der Software zählt das Programm Arandr, mit<br />

dem der Anwender Monitore und Beamer per GUI einrichtet. Ebenfalls <strong>neu</strong><br />

sind Stopmotion und Synfig Studio für Animationen sowie Raw Therapee<br />

zum Verarbeiten von Raw-Dateien. Viele Anwendungen wie Libre Office,<br />

Krita, Blender, Dia und Fritzing wurden aktualisiert, das betrifft auch die<br />

Treiber für Nvidia- und ATI/​AMD-Grafikkarten sowie HP-Drucker. Lizenz:<br />

freie Software [http://​www.​imedias.​ch/​projekte/​lernstick/]<br />

Luminance HDR 2.4.0: Plattformübergreifende Software, die beim Erstellen<br />

von HDR-Fotos hilft. Neu: Version 2.4.0 setzt automatisches Anti-<br />

Ghosting ein und unterstützt FITS (Flexible Image Transport System), ein<br />

Standarddatenformat in der Astronomie. Zudem bringt Luminance HDR<br />

einen verbesserten Merge-Algorithmus für 32-Bit-TIFFs mit. Lizenz: GPLv2<br />

[http://​sourceforge.​net/​projects/​qtpfsgui/]<br />

Endian Firewall Community 3.0 erhältlich<br />

Das Unternehmen Endian hat<br />

seine Firewall-Distribution in<br />

Version 3.0 als Community-<br />

Edition veröffentlicht. Die<br />

kostenlose und GPLv2-lizenzierte<br />

Ausgabe bringt einen<br />

HTTPS-Filter sowie einen<br />

SMTP-Proxy mit. Bei IPsec<br />

gibt es zusätzliche Verschlüsselungs-<br />

und Hashing-Algorithmen<br />

sowie Ike in Version<br />

2. Open VPN unterstützt nun<br />

den TUN-Modus und hat eine<br />

Benutzerverwaltung sowie<br />

integrierte CA im Gepäck. Für<br />

Echtzeit-Logging sorgt das<br />

Tool Ntop-ng.<br />

Das ISO-Image für die Community-Ausgabe<br />

steht auf der<br />

Webseite [http://www.endian.<br />

com] zum Download bereit,<br />

zugleich ist auch Endians<br />

Enterprise-Produkt für das<br />

Unified Threat Management<br />

(UTM) in Version 3.0 verfügbar.<br />

Für dieses bietet die Firma<br />

auf Anfrage eine Online-<br />

Demo an.<br />

n<br />

X11-Nachfolger: Wayland und Weston in Version 1.4<br />

Eine aktuelle Statistik zeigt,<br />

dass etwa 90 Prozent der Änderungen<br />

für die Version 1.4<br />

der Grafikprotokolle Wayland<br />

und Weston den Referenz-<br />

Compositor Weston betreffen.<br />

Die 40 Entwickler haben während<br />

des Release-Prozesses<br />

425 Commits für Weston abgeliefert<br />

und nur 46 für Wayland.<br />

Das verdeutlicht die Präferenz<br />

der Entwicklungsarbeit<br />

und unterstreicht die Aussage<br />

von Kristian Høgsberg, nach<br />

der Wayland mittlerweile<br />

recht stabil laufe.<br />

Die Änderungen an Wayland<br />

bestehen im Wesentlichen aus<br />

Bugfixes. Das Subsurfaces-<br />

Protokoll ist im Wayland-Repo<br />

gelandet und empfiehlt sich<br />

so dem offiziellen Wayland-<br />

Protokoll. Hilfsfunktionen<br />

sollen den SHM-Puffer gegen<br />

kaputte oder bösartige Clients<br />

schützen.<br />

Die Änderungen an Weston<br />

entsprechen laut Høgsberg<br />

ziemlich genau den ursprünglichen<br />

Plänen. So gibt es nun<br />

zum Beispiel Fensterknöpfchen<br />

für Xwayland-Windows<br />

und saubere Dekorationen für<br />

den eingebetteten Compositor.<br />

Der GL-Renderer ist ein ladbares<br />

Modul, was es Weston<br />

ermöglicht, zur Laufzeit von<br />

Pixman zum GL-Renderer zu<br />

wechseln. Das führe zu einem<br />

fixeren Start des Compositors,<br />

weil Weston EGL und GLES2<br />

nachladen könne.<br />

Der Touchscreen-Support<br />

wurde ebenso optimiert wie<br />

die Keyboard-Fokus-Animation<br />

und Exposay, eine Exposé-artige<br />

Animation zur<br />

Fensterauswahl. Das Weston-<br />

Terminal verfügt jetzt über eine<br />

Scrollback-Historie und ein<br />

Kontextmenü, unter anderem<br />

für Copy & Paste-Aktionen.<br />

Weston unterstützt neben<br />

XRGB 8888 weitere Framebuffer-Formate<br />

und verwendet<br />

Logind für privilegierte<br />

Zugänge. Letzteres übernimmt<br />

auf diesem Wege die Aufgabe,<br />

die zuvor das Programm<br />

»weston‐launch« erledigt hat,<br />

weshalb Weston nun ohne<br />

Support des Setuid Helper<br />

mit Kernel-Modesetting läuft.<br />

Nicht zuletzt gibt es auch ein<br />

paar kleinere Änderungen an<br />

Mesa.<br />

Der Quellcode der <strong>neu</strong>en<br />

Versionen von Wayland und<br />

Weston lässt sich wie immer<br />

über die Release-Seiten [http://​<br />

​wayland.​freedesktop.​org] herunterladen.<br />

(kki/mfe/mhu) n


Aktuell<br />

www.linux-magazin.de Zahlen & Trends 04/2014<br />

12<br />

Zahlen & Trends<br />

VoIP: Gemeinschaft ändert die Lizenz<br />

Das Telefonanlagen-Projekt Gemeinschaft wechselt zur MIT-Lizenz.<br />

Für das Telefonanlagen-Projekt<br />

„Gemeinschaft“ beginnt<br />

das <strong>neu</strong>e Jahr mit ein paar<br />

Veränderungen. Für die Anwender<br />

am wichtigsten ist<br />

sicherlich, dass die Macher<br />

die Lizenz für die Version 5<br />

von GPL auf MIT umstellen.<br />

Zusätzlich verabschiedet sich<br />

nach knapp zehn Jahren der<br />

Projektgründer und Coreteam-<br />

Leiter Stefan Wintermeyer –<br />

wenn auch auf Raten.<br />

Laut Wintermeyer erweise<br />

sich die GPL für viele Firmen,<br />

die Gemeinschaft verändert<br />

verkaufen wollen, als problematisch.<br />

Darum erfolge nun<br />

der Wechsel hin zur MIT-Lizenz.<br />

Die immer noch populären<br />

Versionen 3 und 4 unterliegen<br />

indes weiterhin der<br />

GPL, weil eine Umstellung auf<br />

die MIT-Lizenz faktisch unmöglich<br />

sei. Zeitgleich wächst<br />

das Coreteam personell, und<br />

Sascha Daniels wird <strong>neu</strong>er<br />

Chef. Nach Aussage seines<br />

Vorgängers hat er in den letzten<br />

Jahren als Gemeinschaft-<br />

3-Maintainer gezeigt, dass er<br />

die beste Besetzung für diese<br />

Position sei.<br />

Projektgründer Wintermeyer<br />

will und kann sich nur langsam<br />

aus dem Coreteam zurückziehen<br />

und wird weiterhin<br />

in der Gemeinschaft-<br />

5-Community aktiv bleiben,<br />

zumal seine Firma Amooma<br />

die Anlagen-Bestandskunden<br />

weiterhin betreut. Technisch<br />

stehen für 2014 keine Umbrüche<br />

an, was für eine Telefonanlagensoftware<br />

kein Nachteil<br />

sein muss. Zusätzliche Telefonmodelle<br />

fürs Provisioning<br />

seien aber zu erwarten. n<br />

Centos und Red Hat kooperieren<br />

Erste <strong>Vorschau</strong> auf KDE Frameworks 5<br />

Das amerikanische Open-<br />

Source-Unternehmen Red<br />

Hat und die Macher der Red-<br />

Hat-basierten Community-<br />

Distribution Centos haben<br />

angekündigt künftig enger<br />

zusammenzuarbeiten. Red<br />

Hat möchte die Centos-Community<br />

besser integrieren,<br />

während Red Hat Enterprise<br />

<strong>Linux</strong> (RHEL) als Enterprise-<br />

Angebot bestehen bleibt. Das<br />

Fedora-Projekt soll auch in<br />

Zukunft für das Ausprobieren<br />

innovativer Technologien zuständig<br />

sein.<br />

Wie Karanbir Singh vom<br />

Centos-Projekt Anfang Januar<br />

2014 auf der Projektseite<br />

[http://​www.​centos.​org] schrieb,<br />

geht es den Partnern auch um<br />

eine Zusammenarbeit jenseits<br />

der Betriebssystem-Plattform,<br />

zum Beispiel beim Cloud<br />

Computing mit Open Stack.<br />

Red Hat will dem Centos-<br />

Projekt beim Ausbau seines<br />

Buildsystems helfen und es<br />

mit weiteren Ressourcen unterstützen.<br />

Auch soll ein Git-<br />

Repository die Zusammenarbeit<br />

erleichtern.<br />

Centos begleitet die noch<br />

junge Initiative mit einem<br />

<strong>neu</strong>en Governing Board, das<br />

sich aus dem bestehenden<br />

Centos-Coreteam sowie weiteren<br />

Mitgliedern aus der<br />

Centos-Community und von<br />

Red Hat zusammensetzt. n<br />

Seit fast drei Jahren bereitet<br />

das KDE-Projekt seine Bibliotheken<br />

für Version 5 der<br />

Desktopumgebung vor. Nun<br />

ist eine erste Preview-Variante<br />

von KDE Frameworks 5<br />

verfügbar. Die insgesamt 57<br />

Module erweitern das C++-<br />

Toolkit Qt 5 und stellen zum<br />

Beispiel Funktionen für Menüs,<br />

Dateizugriffe sowie eine<br />

Rechtschreibprüfung für KDE-<br />

Anwendungen bereit.<br />

Die einzelnen Komponenten<br />

sind unterschiedlich ausgereift,<br />

als am weitesten fortgeschritten<br />

betrachten die<br />

Entwickler Karchive zur Dateikomprimierung<br />

und Thread<br />

Weaver. Letzteres kümmert<br />

sich, unterstützt von Jobs<br />

oder Queues, um die Thread-<br />

Verwaltung. Eine Liste der<br />

vorhandenen Module liefert<br />

KDEs Community-Wiki [http://​<br />

​community.​kde.​org].<br />

Die aktuelle Preview 4.95.0<br />

steht im Quelltext (unter der<br />

LGPLv2.1) und in Form von<br />

Binärpaketen für Kubuntu,<br />

Open Suse und Arch <strong>Linux</strong><br />

zum Download bereit. Anfang<br />

April 2014 soll es nach den<br />

aktuellen Plänen eine Beta<br />

geben, im Juni erwarten die<br />

Macher schließlich die endgültige<br />

Release. Hinweise für<br />

interessierte Tester und Entwickler<br />

finden sich auf Dot<br />

KDE [http://​dot.​kde.​org]. n


Ubucon 2014 sucht Themen und Beiträge<br />

Vom 17. bis 19. Oktober 2014<br />

feiert die Benutzerkonferenz<br />

Ubucon das 10-jährige Bestehen<br />

von Canonicals Distribution.<br />

Bis zum 31. Juli<br />

nehmen die Organisatoren<br />

nun Vorschläge für Vorträge<br />

entgegen.<br />

Aus den Wünschen der<br />

Community entsteht eine Liste<br />

mit gefragten Vortragsthemen.<br />

Dabei schreiben die Veranstalter,<br />

die Besucher sollten nicht<br />

schüchtern sein: „Kaum eine<br />

Idee kann zu abstrus sein, als<br />

dass sie nicht in das Konzept<br />

passt. Natürlich sollte das gewünschte<br />

Thema am besten<br />

mit Ubuntu, aber zumindest<br />

mit <strong>Linux</strong> und/​oder Open<br />

Source zu tun haben.“<br />

Anschließend können sich bis<br />

15. August Referenten und<br />

Gesprächsleiter für Vorträge,<br />

Workshops und Diskussionsrunden<br />

melden. Dabei dient<br />

die Themenwunschliste lediglich<br />

als Anregung, es besteht<br />

kein Zwang, sich an diese<br />

Liste zu halten, auch eigene<br />

Vorschläge sind willkommen.<br />

Weitere Details und eine Kontaktmöglichkeit<br />

finden sich<br />

im Call-for-Papers-Bereich auf<br />

der Webseite.<br />

Die Ubucon 2014 wird in der<br />

niedersächsischen Gemeinde<br />

Katlenburg-Lindau stattfinden.<br />

Alle Infos zur Veranstaltung<br />

und über die Möglichkeit,<br />

mitzuhelfen, gibt es<br />

unter [http://​ubucon.​de/​2014/].n<br />

Cumulus’ <strong>Linux</strong> auf Dell-Switches<br />

Durch ein Vertriebsabkommen<br />

mit Cumulus Networks<br />

bietet Dell auf seiner Netzwerkhardware<br />

nun optional<br />

deren <strong>Linux</strong>-basierte Software<br />

an. Laut Dell soll die Trennung<br />

zwischen Hardware und<br />

Software den Unternehmen<br />

mehr Auswahl und Flexibilität<br />

bringen, beispielsweise<br />

sollen sie künftig die geeignetste<br />

Software-Ausstattung<br />

für ihr Einsatzszenario wählen<br />

können.<br />

Darüber hinaus ermögliche<br />

der Austausch der Software<br />

auf Netzwerkgeräten schnellere<br />

Innovationszyklen. In<br />

einem ersten Schritt sollen<br />

die Top-of-Rack-Switches Dell<br />

Networking S6000 und S4810<br />

wahlweise mit dem <strong>Linux</strong>-<br />

Netzwerkbetriebssystem von<br />

Cumulus Networks erhältlich<br />

sein, und zwar noch im ersten<br />

Quartal 2014.<br />

Das 2010 gegründete kalifornische<br />

Unternehmen Cumulus<br />

ist auf <strong>Linux</strong>-Systeme für<br />

Netzwerk-Switches spezialisiert.<br />

Sein <strong>Linux</strong> beruht auf<br />

der freien Distribution Debian<br />

und läuft auf 1G/​10G/​40G-<br />

Hardware. Es bietet Layer-3-<br />

Features wie Open Shortest<br />

Path First (OSPF), Border-<br />

Gateway-Protokoll (BGP) und<br />

Layer-2-Features wie VLAN-<br />

Trunks oder IPv6 Router Advertisement.<br />

Es unterstützt VxLAN und integriert<br />

sich mit VMware NSX<br />

oder Open Stack. Hinzu kommen<br />

Funktionen für Management,<br />

QoS, Monitoring (mit<br />

Collectd, Ganglia, Net-SNMP,<br />

Nagios/​Icinga, Graphite) und<br />

Sicherheit sowie zur Automation<br />

(mit Puppet, Chef, Cfengine).<br />

Details und eine Evaluationsversion<br />

auf Anfrage gibt<br />

es auf der Produktseite. n


Aktuell<br />

www.linux-magazin.de Zahlen & Trends 04/2014<br />

14<br />

Docker erhält Finanzspritze von 15 Millionen US-Dollar<br />

Die Container-Virtualisierer<br />

von Docker haben für die<br />

Weiterentwicklung des gleichnamigen<br />

Produkts in einer<br />

zweiten Finanzierungsrunde<br />

15 Millionen US-Dollar von<br />

verschiedenen Venture-Kapital-Firmen<br />

eingestrichen. Das<br />

Geld feiern die Gründer der<br />

Firma in ihrem Blog als Anerkennung<br />

ihrer Arbeit: Mittlerweile<br />

gebe es 5000 Anwendungen<br />

in Form von Docker-<br />

Containern, das Konzept sei<br />

auf dem Schirm großer Firmen<br />

wie Ebay und Yandex. Zudem<br />

habe man Docker in Tools wie<br />

Chef und Puppet und Plattformen<br />

wie Open Stack und<br />

Google Compute Engine und<br />

Rackspace integriert.<br />

Mit der Finanzierung im Rücken<br />

wollen die Entwickler<br />

das Docker-Projekt auf die<br />

„nächste Ebene“ heben. Geld<br />

soll in verschiedene Bereiche<br />

fließen, wobei an erster<br />

Stelle die Entwicklung der<br />

Open-Source-Plattform steht.<br />

Die Version 1.0 von Docker<br />

ist das nächste Ziel der Entwickler.<br />

Sie wollen zusätzliche<br />

Plattformen erschließen<br />

und die Fähigkeiten von Docker<br />

nach den Wünschen der<br />

Community erweitern. Auf<br />

der To-do-Liste steht auch der<br />

Ausbau in Sachen Dokumentation<br />

und Training, Konferenzen<br />

und Treffen sollen einen<br />

einfachen Zugang für <strong>neu</strong>e<br />

Entwickler ermöglichen.<br />

Die Docker-Macher möchten<br />

zudem die Community-<br />

Plattform weiterentwickeln,<br />

die Infrastruktur rund um<br />

Docker verbessern und die<br />

Herkunft öffentlicher Container<br />

transparenter gestalten.<br />

Nicht zuletzt soll das Geld in<br />

den kommerziellen Support<br />

und die Hosting-Plattform für<br />

zahlende Kunden fließen. So<br />

hofft das Projekt, seine Open-<br />

Source-Bereiche nachhaltig<br />

finanzieren zu können. n<br />

<strong>Linux</strong>con und Plumbers Conference in Düsseldorf<br />

Die <strong>Linux</strong>con Europe 2014 findet<br />

vom 13. bis 15. Oktober<br />

in Düsseldorf statt, erstmals<br />

zusammen mit der <strong>Linux</strong><br />

Plumbers Conference. Ebenfalls<br />

vor Ort sind die Embedded<br />

<strong>Linux</strong> Conference sowie<br />

das KVM-Forum.<br />

Der Call for Papers für das<br />

von der <strong>Linux</strong> Foundation organisierte<br />

Event läuft bis zum<br />

11. Juli. Themen sind Kernelentwicklung,<br />

Virtualisierung,<br />

Cloud Computing, Dateisysteme,<br />

Big Data sowie Software<br />

Defined Networking.<br />

Im selben Abwasch hat die<br />

Foundation den Plan für ihre<br />

weiteren Veranstaltungen im<br />

Jahr 2014 veröffentlicht. Ein<br />

Novum war der Open Daylight<br />

Summit am 4. und 5. Februar<br />

2014 im kalifornischen Santa<br />

Clara, der sich dem hauseigenen<br />

Projekt zum Software<br />

Defined Networking widmete.<br />

Die amerikanische <strong>Linux</strong>con<br />

findet vom 20. bis 22 August<br />

2014 in Chicago statt, zusammen<br />

mit dem Kernel Summit,<br />

der geschlossenen Arbeitssitzung<br />

der <strong>Linux</strong>-Entwickler. n<br />

Shotwell als Pantheon Photos geforkt<br />

Ein komfortabler Bildbetrachter<br />

für <strong>Linux</strong> heißt Shotwell,<br />

entwickelt hat ihn seit 2009<br />

die Open-Source-Firma Yorba.<br />

Doch diese kümmert sich inzwischen<br />

vornehmlich um<br />

ein anderes Projekt, den E-<br />

Mail-Client Geary, und hat<br />

daher einem Fork durch die<br />

Entwickler des Elementary-<br />

Projekts zugestimmt.<br />

Jim Nelson, der Chef von<br />

Yorba, sei mit der Übernahme<br />

einverstanden, erklärt Elementary-OS-Entwickler<br />

Daniel<br />

Foré auf der Elementary-<br />

Mailingliste, denn Yorba sei<br />

derzeit komplett mit der Arbeit<br />

an Geary ausgelastet.<br />

Da die Shotwell-Macher allerdings<br />

der Gnome Developer<br />

Community beigetreten seien,<br />

Shotwell wurde geforkt und heißt nun Pantheon Photos.<br />

müsste die weitere Entwicklung<br />

von Shotwell über Gnomes<br />

Git und den Bugtracker<br />

des Projekts laufen, was für<br />

die Elementary-OS-Entwickler<br />

offenbar wenig attraktiv ist.<br />

Man habe sich daher mit Nelson<br />

geeinigt, Shotwell unter<br />

dem Namen Pantheon Photos<br />

zu forken und die Entwicklung<br />

auf die Launchpad-Plattform<br />

zu verlagern.<br />

Yorba will Shotwell zwar später<br />

selbst weiterentwickeln,<br />

aber Jim Nelson verspricht,<br />

den Pantheon-Entwicklern<br />

mit Rat und Tat zur Seite zu<br />

stehen. Die erhoffen sich von<br />

Pantheon Photos einen erstklassigen<br />

Bildbetrachter für<br />

den in Elementary OS eingesetzten<br />

Pantheon-Desktop. n


Aktuell<br />

www.linux-magazin.de Zahlen & Trends 04/2014<br />

16<br />

Grafische Oberfläche für Lizenzcheck mit SPDX<br />

Triplecheck ist eine freie Software<br />

mit grafischer Oberfläche,<br />

die künftig der Analyse<br />

von Software Compliances<br />

dienen soll. Sie liest und erstellt<br />

SPDX-Dokumente, ihr<br />

Entwickler hat sie auf der Fosdem<br />

im Februar vorgestellt.<br />

Sie soll großen Softwareprojekten<br />

beim Verwalten freier<br />

Lizenzen helfen.<br />

Mit ihren Lizenzen möchten<br />

Open-Source-Projekte meist<br />

sicherstellen, dass ihr Code<br />

möglichst vielen Menschen<br />

und der Gemeinschaft nützt<br />

und – falls das Copyleft-Prinzip<br />

greift – Änderungen am<br />

Code wieder allen zur Verfügung<br />

stehen.<br />

Nun existieren jedoch etliche<br />

freie Lizenzen, die sich auf<br />

Tausende von Projekten verteilen.<br />

In Großprojekten, die<br />

schnell mal Hunderte von<br />

Der Prototyp von Triplecheck: Ein GUI verwaltet SPDX-Dokumente.<br />

freien Bibliotheken verwenden,<br />

geht so mitunter der<br />

Überblick verloren, welche<br />

Lizenzen im Einsatz sind. Das<br />

dürfte der Rechtsabteilung<br />

Magenbeschwerden verursachen,<br />

denn Copyleft-Lizenzen<br />

sind nicht in jedem Einsatzbereich<br />

erwünscht.<br />

Hier soll künftig Triplecheck<br />

[http://​triplecheck.​de] gepaart<br />

mit der SPDX-Spezifikation<br />

(Software Package Data Exchange)<br />

in die Bresche springen.<br />

Erdacht auf dem <strong>Linux</strong><br />

Collaboration Summit 2010<br />

und unterstützt von der <strong>Linux</strong><br />

Foundation soll die SPDX-Spezifikation<br />

(aktuell ist Version<br />

1.2) das Verwalten der Lizenzen<br />

in Großprojekten vereinfachen.<br />

Indem Entwickler die freien<br />

Lizenzen, die auf einer vordefinierten<br />

Liste stehen, maschinenlesbar<br />

in Quellcode einbetten<br />

und durch bestimmte<br />

Tags und Formate erweitern,<br />

bringen sie Ordnung in den<br />

Lizenzdschungel. Triplecheck,<br />

das unter der European Public<br />

License (EUPL) steht, implementiert<br />

die Spezifikation<br />

nun in einer Software mit grafischer<br />

Oberfläche.<br />

Triplecheck ist in Java geschrieben,<br />

läuft plattformübergreifend<br />

und benötigt<br />

keine Installation. Der Quellcode<br />

von Version 0.2 steht seit<br />

der Fosdem online.<br />

Das Tool zeigt, für welche<br />

Quellcodedateien überhaupt<br />

Lizenzinformationen vorliegen<br />

und welche Komponenten<br />

von Drittanbietern zum<br />

Einsatz kommen, auf die die<br />

Software zugreift, etwa Icons<br />

und Bibliotheken. Daneben<br />

lässt Triplecheck seine Anwender<br />

SPDX-Dokumente mit<br />

Hilfe eines grafischen Editors<br />

bearbeiten.<br />

n<br />

Konkrete Pläne für Fedora Server<br />

Kein Ubuntu Phone vor 2015<br />

Nach Version 20 wollen die<br />

Fedora-Entwickler ihre Distribution<br />

in mehreren Varianten<br />

anbieten. Die Anforderungen<br />

für eine Server-Ausgabe nehmen<br />

nun Gestalt an, denn die<br />

im Oktober 2013 gegründete<br />

Arbeitsgruppe hat den letzten<br />

Entwurf des Product Requirements<br />

Document (PRD) online<br />

gestellt.<br />

Der Server soll demnach als<br />

Community-Plattform für<br />

Administratoren dienen, die<br />

Dienste mit der <strong>neu</strong>sten Technologie<br />

installieren möchten.<br />

Er soll sowohl einzelne<br />

Dienste abdecken, sich aber<br />

auch für den Betrieb eines<br />

ganzen Rechenzentrums und<br />

den Aufbau einer privaten<br />

Cloud eignen.<br />

Daneben unterscheidet die Arbeitsgruppe<br />

fünf Zielgruppen<br />

für den Server: Der MacGyver-Admin<br />

muss mit geringen<br />

Ressourcen auskommen, der<br />

Devops-Techie möchte rasch<br />

Anwendungen ausliefern, der<br />

traditionelle Entwickler erwartet<br />

stabile APIs und ABIs, der<br />

Junior-Admin braucht einen<br />

einfachen Mechanismen zur<br />

Serververwaltung. Nicht zuletzt<br />

soll die Server-Variante<br />

auch Entscheidungsträger<br />

mit Open-Source-Interesse<br />

ansprechen.<br />

Die Arbeitsgruppe bittet nun<br />

auf der Mailingliste um Feedback,<br />

das Fedora-Wiki liefert<br />

unter dem Stichwort „Fedora.<br />

next“ weitere Informationen<br />

für Interessierte.<br />

n<br />

In einer „Ask Me Anything“-<br />

Session (IAMA) dürfen Reddit-Leser<br />

willige Prominente<br />

mit Fragen löchern. Auch<br />

Ubuntus Community-Manager<br />

Jono Bacon gab dort bereitwillig<br />

Auskunft. Seine Session<br />

lief Mitte Januar 2014,<br />

und er ließ auch das Thema<br />

Ubuntu Phone nicht aus. Es<br />

würde ihn wundern, so Bacon,<br />

wenn sich vor 2015 ein<br />

großer Anbieter finden würde,<br />

der das Ubuntu Phone auf den<br />

Markt bringe.<br />

Das kollidiert zwar nicht mit<br />

der Aussage seines Chefs<br />

Mark Shuttleworth, relativiert<br />

sie aber ein wenig. Ubuntus<br />

Gründer sprach einen Monat<br />

zuvor noch davon, einen Vertrag<br />

mit einem Hersteller für<br />

das Ubuntu-Smartphone abgeschlossen<br />

zu haben, ohne aber<br />

Details preiszugeben. Seine<br />

rechte Hand – Bacon – gab<br />

nun zu Protokoll, dass kleinere<br />

OEMs womöglich schon<br />

vor 2015 Ubuntu-Touch-Geräte<br />

ausliefern könnten, allerdings<br />

beschränkt auf einzelne Regionen<br />

der Welt. Das könnte<br />

darauf hinweisen, dass die<br />

Suche nach einem größeren<br />

Verkäufer fürs Ubuntu Phone<br />

noch andauert.<br />

Zumindest verschafft der <strong>neu</strong>erliche<br />

Aufschub Canonicals<br />

Entwicklern eine Atempause.<br />

Diese können sie nutzen, um<br />

den Displaymanager Mir zu<br />

stabilisieren und das relativ<br />

überschaubare Angebot an<br />

Apps auszubauen. n


Aktuell<br />

www.linux-magazin.de Zahlen & Trends 04/2014<br />

18<br />

Schweizer Open Source Directory nimmt noch Ausländer auf<br />

Das Open Source Directory<br />

[http://www.ossdirectory.ch] der<br />

Swiss Open User Group (kurz<br />

CH/​Open) verzeichnet seit<br />

Kurzem auch mehr als 100<br />

deutsche Firmen. 257 Firmen,<br />

347 Open-Source-Produkte<br />

und 260 OSS-Referenzen<br />

umfasste das OSS Directory<br />

von CH/​Open zu Redaktionsschluss.<br />

Darin enthalten sind<br />

nun die Firmenprofile aller<br />

Mitglieder der Open Source<br />

Business Alliance (OSBA). Sie<br />

sind speziell gekennzeichnet<br />

und können bis zu zehn eigene<br />

Produkte eintragen.<br />

Auch funktional habe man<br />

das OSS Directory verbessert,<br />

schreibt die User Group CH/​<br />

Open in einer Pressemitteilung.<br />

Neu seien beispielsweise<br />

Anwendungsbeispiele,<br />

mit deren Hilfe die Nutzer der<br />

Webseite alle OSS-Referenzen<br />

einer Behörde sehen. Die Firmen<br />

lassen sich nach Land<br />

und Ort filtern, wobei die<br />

Datenbank nun mehrere Niederlassungen<br />

erfasst. Auch<br />

Stelleninserate für Jobs rund<br />

um das Thema Freie Software<br />

sind in der Rubrik „OSS Jobs“<br />

möglich.<br />

Als nächstes Projekt stehen<br />

die Verbesserung der Mehrsprachigkeit<br />

und die Ausweitung<br />

des Verzeichnisses in die<br />

französischsprachige Schweiz<br />

(Romandie) ins Haus. n<br />

Das Schweizer OSS Directory expandiert und zeigt in der Suche nun auch deutsche<br />

Firmen an. Geholfen dabei hat die OSBA.<br />

Britischer Minister will mehr Open Source<br />

VMware kauft Airwatch für 1,13 Milliarden<br />

Francis Maude, der britische<br />

Minister für Kabinettsangelegenheiten,<br />

möchte kleinere<br />

und mittlere Unternehmen<br />

(KMU) stärken, indem er<br />

dafür plädiert, proprietären<br />

Lösungen wie MS Office den<br />

Rücken zu kehren. Beachtliche<br />

200 Millionen Pfund an<br />

Steuergeldern seien seit 2010<br />

allein für Microsofts Office-<br />

Suite in die Kassen des Redmonder<br />

Konzerns geflossen,<br />

kritisiert der Minister.<br />

Seine Lösung laut einem<br />

„Guardian“-Bericht: Wechsel<br />

auf Open-Source-Software.<br />

Dazu zählt er neben Open<br />

Office allerdings auch den<br />

Onlinedienst Google Docs,<br />

der im klassischen Sinne weder<br />

frei noch offen ist, sondern<br />

lediglich kostenlos. Mit<br />

diesem Schritt ließe sich das<br />

Oligopol der IT-Ausrüster, das<br />

aus „wenigen großen Firmen“<br />

bestehe, brechen, gab der Minister<br />

auf einer Veranstaltung<br />

zur Präsentation <strong>neu</strong>er Onlinedienste<br />

zu Protokoll.<br />

Der Einsatz offener Standards<br />

werde nicht nur die Ministerien<br />

aus ihrem proprietären<br />

Lock-in befreien, sondern<br />

auch die Tür für alternative<br />

Software-Anbieter aufstoßen,<br />

so offenbar das Kalkül<br />

des Politikers. Im Endeffekt<br />

möchte Maude mit seiner<br />

Open-Source-Strategie wahrscheinlich<br />

auch die Anzahl<br />

jener KMU erhöhen, die Aufträge<br />

im öffentlichen Sektor<br />

übernehmen.<br />

Ein Beispiel, das seine<br />

Wunsch vorstellung deutlich<br />

machen soll, gab der Minister<br />

auch gleich. So habe ihm ein<br />

<strong>neu</strong>er Hostingvertrag gezeigt,<br />

dass die Regierung auf diesem<br />

Weg enorm viel Geld sparen<br />

könne. Eine kleinere Firma<br />

habe den <strong>neu</strong> ausgeschriebenen<br />

Auftrag für 60 000 Pfund<br />

erledigt, während der große<br />

Anbieter für die Leistung etwa<br />

4 Millionen verlangte. Das sei<br />

natürlich ein Extrembeispiel,<br />

er hoffe aber, dem Steuerzahler<br />

Geld zu sparen. n<br />

Umgerechnet 1,13 Milliarden<br />

Euro (1,54 Milliarden<br />

US-Dollar) legt VMware auf<br />

den Tisch, um sich Airwatch<br />

einzuverleiben. Der Virtualisierer<br />

hofft darauf, mit Hilfe<br />

seines Neuerwerbs besser im<br />

Cloud- und Mobilbereich Fuß<br />

zu fassen.<br />

Airwatch kümmert sich im<br />

Wesentlichen um die Verwaltung<br />

mobiler Geräte, vor allem<br />

unter Sicherheitsgesichtspunkten.<br />

Das ist zunehmend<br />

ein Thema, denn im Rahmen<br />

von Bring Your Own Device<br />

(BYOD) melden sich immer<br />

mehr Mitarbeiter mit ihren<br />

mobilen Geräten im Firmennetz<br />

an. Admins treibt diese<br />

Entwicklung insbesondere<br />

vor dem Hintergrund der Sicherheit<br />

allerdings den Angstschweiß<br />

auf die Stirn.<br />

„Mit diesem Erwerb wird<br />

VMware seine Computing-<br />

Angebote für Enduser um ein<br />

grundlegendes Element erweitern,<br />

was es unseren Kunden<br />

ermöglichen wird, mit ihren<br />

mobilen Arbeitskräften durchzustarten,<br />

ohne die Sicherheit<br />

zu gefährden“, schreibt<br />

Patrick Gelsinger, CEO von<br />

VMware, in der offiziellen<br />

Ankündigung.<br />

Wenig überraschend gibt auch<br />

Alan Dabbiere, Chairman von<br />

Airwatch, seiner Freude Ausdruck:<br />

„Indem wir uns einem<br />

bewährten Innovator wie<br />

VMware anschließen, erhalten<br />

wir die Gelegenheit, unsere<br />

marktführenden Lösungen<br />

einem breiteren Spektrum<br />

von Kunden und Partnern anzubieten<br />

und ihnen zu helfen,<br />

sich optimal auf die Mobile-<br />

Cloud-Welt einzustellen.“<br />

Bei der Gelegenheit nannte<br />

VMware auch gleich den Umsatz<br />

für das vierte Quartal<br />

2013: Demnach machte das<br />

Unternehmen einen Umsatz<br />

von 1,48 Milliarden US-Dollar<br />

(etwa 1,1 Milliarden Euro)<br />

und steigerte ihn damit um<br />

20 Prozent im Vergleich zum<br />

vierten Quartal des Vorjahres.<br />

(jk/kki/mhu/mfe)<br />

n


Aktuell<br />

www.linux-magazin.de Kernel-News 04/2014<br />

20<br />

Zacks Kernel-News<br />

Mehr Sicherheit fürs Sandboxing<br />

Die SE-<strong>Linux</strong>-Sandbox des Red-Hat-Entwicklers Dan Walsh (hier auf dem <strong>Linux</strong>tag<br />

2011) finden manche Entwickler nicht sicher genug.<br />

Der russische Entwickler<br />

Viktor Porton kritisiert das<br />

Sandbox-Kommando von SE<br />

<strong>Linux</strong>. Er schreibt, Programme<br />

in der Sandbox könnten<br />

immer noch <strong>neu</strong>e Prozesse<br />

außerhalb erzeugen oder den<br />

Systemcall »setsid()« aufrufen,<br />

um auszubrechen. Er<br />

schlägt vor, jedem Prozess in<br />

der Sandbox ein <strong>neu</strong>es Feld<br />

als Sandbox-ID hinzuzufügen.<br />

Kindprozesse erben diese ID<br />

und unterliegen dann den<br />

gleichen Beschränkungen wie<br />

ihr Erzeuger.<br />

Den Vorschlag, dafür Cgroups<br />

zu verwenden, nahm er gerne<br />

an. Doch da schaltete sich Andy<br />

Lutomirski ein, er schrieb:<br />

„Meiner Meinung nach sind<br />

Cgroups ein völlig gescheiterter<br />

Versuch, eine Schnittstelle<br />

für normale Programme zu<br />

schaffen. Es wird sogar immer<br />

schlimmer.“ In einer weiteren<br />

Mail geht Andy aber auf Viktors<br />

ursprünglichen Vorschlag<br />

ein. Er empfiehlt, statt einer<br />

weiteren ID das Kernelfeature<br />

Subreaper zu verwenden, das<br />

es seit <strong>Linux</strong> 3.4 gibt. Es verfolgt<br />

die Abstammung von<br />

Prozessen und teilt entfernten<br />

Vorfahren mit, wenn deren<br />

Nachkommen sich beenden.<br />

Andy möchte Subreaper mit<br />

einem weiteren Modus ausstatten,<br />

der ganze Prozessbäume<br />

kontrolliert und ein<br />

API bereitstellt, über das man<br />

allen Prozessen ein Signal<br />

schicken kann, etwa um sie<br />

zu beenden. So soll kein Prozess<br />

mehr aus der Sandbox<br />

ausbüchsen.<br />

Viktor wendet ein, dass dann<br />

die Anwendungen den <strong>neu</strong>en<br />

Subreaper-Modus unterstützen<br />

müssten. Dabei seien es<br />

gerade diese Programme, denen<br />

er nicht traue und die er<br />

deshalb in eine Sandbox sperre.<br />

Andy präzisiert, nicht die<br />

fremde Software, sondern der<br />

Sandbox-Mechanismus müsse<br />

das Feature unterstützen,<br />

denn die fraglichen Prozesse<br />

sollten als Kinder der Sandbox<br />

laufen.<br />

Ein anderer Ansatz stammt<br />

von Joshua Brindle. Er schlägt<br />

vor, die Sandbox durch einen<br />

Seccomp-Filter sicherer zu<br />

machen, der die verfügbaren<br />

Systemcalls einschränkt. Auf<br />

diese Weise ließe sich beispielsweise<br />

»setsid()« in den<br />

Griff bekommen.<br />

Viktor hält das für keine passende<br />

Lösung für sein Szenario.<br />

Er möchte bestimmte<br />

Subnetze für die Sandbox<br />

sperren, und das könne Seccomp<br />

nicht. In seinem Weblog<br />

[http://​portonsoft.​wordpress.​<br />

​com] veröffentlicht er weitere<br />

Überlegungen zum Thema,<br />

die interessanterweise doch<br />

auf Cgroups setzen. n<br />

Ein bisschen getrollt: <strong>Linux</strong>, BKL und BSD<br />

Auch die Nachricht eines so<br />

genannten Trolls kann zu interessanten<br />

Diskussionen auf<br />

der Kernel-Mailingliste führen.<br />

Im Januar schlug ein Störenfried<br />

mit dem Pseudonym<br />

Antti Heikkinen vor, <strong>Linux</strong> in<br />

der Sprache Perl <strong>neu</strong> zu schreiben,<br />

denn das Betriebssystem<br />

sei aufgebläht und schlecht<br />

entworfen. Ein anderer Troll<br />

fügte hinzu: „<strong>Linux</strong> hatte länger<br />

als die Konkurrenz ein Big<br />

Kernel Lock (BKL). Es wurde<br />

nie ordentlich entworfen, Free<br />

BSD dagegen ist organisierter<br />

und einheitlicher.“<br />

Theodore Ts’o parierte gekonnt:<br />

„<strong>Linux</strong> hat länger am<br />

BKL festgehalten, weil es SMP<br />

schon länger als die Konkurrenz<br />

unterstützt. BKL sind wir<br />

endgültig Mitte 2012 losgeworden.<br />

Dagegen hatten Free<br />

BSD, Net BSD und Open BSD<br />

noch im Jahr 2013 ein äquivalentes<br />

Giant Lock in einigen<br />

Subsystemen.“<br />

Er fuhr fort: „Natürlich skaliert<br />

<strong>Linux</strong> schon lange besser<br />

als die BSD-Familie, SGI etwa<br />

verwendet es auf Systemen<br />

mit Hunderten Prozessoren,<br />

und <strong>Linux</strong>-Anwender betreiben<br />

schon ein Jahrzehnt lang<br />

Rechner mit 32 oder 64 CPUs.<br />

Free BSD dagegen rühmte<br />

sich erst 2013 seiner verbesserten<br />

Skalierbarkeit auf 16<br />

Prozessoren.“<br />

Zum Thema Trolle bemerkte<br />

Ted: „Mein Lieblingsvorschlag<br />

dieser Art stammt aus den<br />

frühen Neunzigern und lautet,<br />

BSD 4.3 nach Emacs Lisp<br />

zu portieren, damit man das<br />

komplette System unter GNU<br />

Emacs betreiben kann.“ n


Vorsichtig am ABI kratzen<br />

Der Keyring-Maintainer David<br />

Howells hat <strong>neu</strong>lich ein<br />

heikles Thema auf die Tagesordnung<br />

gebracht. Einige<br />

Kerberos-Entwickler hatten<br />

ihn gebeten, die Systemcalls<br />

»add_key(«) und »request_<br />

key()« zu ändern, dazu einige<br />

Kernelfunktionen.<br />

Insbesondere wünschten sie<br />

sich, dass die Bibliothek Libkrb5<br />

bei einem Fehler den<br />

Session-Keyring als Fallback<br />

benutzen kann. Existiert der<br />

Keyring aber nicht, legen Kinit<br />

und der Kernel derzeit automatisch<br />

einen an, der jedoch<br />

wieder verschwindet, wenn<br />

Kinit sich beendet.<br />

David erwog ein paar Lösungen,<br />

von denen einige den<br />

Kernel berührten, andere ihn<br />

unangetastet lassen. Die Kerbe<br />

ros-Entwickler könnten beispielsweise<br />

aus dem Userspace<br />

einen Session-Keyring<br />

anlegen. So käme es nicht dazu,<br />

dass Kinit einen erzeugt<br />

– und man müsste nichts im<br />

Kernel ändern.<br />

Daneben fand er aber auch<br />

gute Argumente für Anpassungen<br />

im Kernel, denn der brauche<br />

ja nicht stillschweigend<br />

einen <strong>neu</strong>en Session-Keyring<br />

anzulegen. Stattdessen könne<br />

er den User-Session-Keyring<br />

als Fallback verwenden. Nach<br />

Davids Ansicht würde diese<br />

Änderung die meisten Prozesse<br />

nicht stören.<br />

Da dies aber eine Änderung<br />

des Kernel-ABI bedeuteten<br />

würde, fragte David vorsichtig<br />

auf der Mailingliste an. Linus<br />

Torvalds antwortete, indem<br />

er die eiserne ABI-Regel des<br />

Kernels zitierte: „Sollte jemand<br />

die Änderung zu spüren<br />

bekommen, machen wir sie<br />

wieder rückgängig. In anderen<br />

Worten: Änderungen sind<br />

nicht vollkommen tabu, aber<br />

sie dürfen keine anderen Programme<br />

stören.“<br />

Daneben schrieb Linus: „Ehrlich<br />

gesagt kann ich das nicht<br />

beurteilen. Deine Änderung<br />

hört sich vernünftig an, aber<br />

wer weiß, was in den Distributionen<br />

vor sich geht. Wir<br />

müssen sehr vorsichtig sein<br />

und den Kerberos-Leuten<br />

klarmachen, dass wir die Änderung<br />

gnadenlos zurücknehmen<br />

werden, wenn sie bestehenden<br />

Benutzern Probleme<br />

macht.“<br />

n<br />

Probleme mit »sscanf()«<br />

Der Intel-Entwickler Bruce<br />

W. Allen hat der Mailingliste<br />

einen möglichen Bug in der<br />

»sscanf()«-Implementierung<br />

des Kernels gemeldet. Die<br />

Funktion liest eine Zeichenkette<br />

aus mehreren Teilen<br />

und teilt sie in mehrere Stücke,<br />

deren Länge vorgegeben<br />

ist. Bruce schrieb, während<br />

»sscanf()« aus der C-Bibliothek<br />

korrekt funktioniere, setze<br />

die Version im Kernel eines<br />

der Ergebnisse auf 0.<br />

Al Viro konnte das Problem<br />

bis zu einem Patch des Suse-<br />

Entwicklers Jan Beulich vom<br />

Dezember 2012 zurückverfolgen.<br />

Der wollte das Verhalten<br />

der Funktion eigentlich besser<br />

Anzeige<br />

an den Standard anpassen:<br />

Der Anwender sollte für jeden<br />

Teilstring die gewünschte<br />

Byte-Länge angeben dürfen.<br />

Um das zu erreichen, verwirft<br />

Jans Code die überzähligen<br />

Zeichen der Eingabe. Doch<br />

wirft er zu viel weg.<br />

In seiner gründlichen Art vergrub<br />

sich Al weiter im Code<br />

von »sscanf()« und förderte<br />

weitere Probleme zutage. Linus<br />

Torvalds fand die ganze<br />

Sache viel zu kompliziert. Er<br />

schlug vor, dem Problem auszuweichen<br />

und Feldgrößen in<br />

»sscanf()« gar nicht zu unterstützen<br />

– allerdings nur dann,<br />

wenn niemand sie benutzt.<br />

(Zack Brown/​mhu) n<br />

Kernel-News 04/2014<br />

Aktuell<br />

www.linux-magazin.de<br />

21<br />

2.6.34.x am Ende<br />

Der finnische Entwickler Aaro<br />

Koskinen hat sich besorgt<br />

erkundigt, ob es denn für den<br />

Kernelzweig 2.6.34.x keine<br />

Updates mehr gebe. Dessen<br />

Maintainer, Paul Gortmaker<br />

von Wind River, hatte bereits<br />

im Juli 2013 angekündigt, den<br />

Zweig in den Ruhestand zu<br />

versetzen. Paul antwortete, er<br />

plane noch eine weitere Ausgabe.<br />

Wenn das End of Life<br />

(EOL) erreicht sei, werde er<br />

es auf der Kernel-Homepage<br />

bekanntgeben.<br />

H. Peter Anvin merkte an, es<br />

sei schon mehr als ein Jahr<br />

seit der letzten 2.6.34-Release<br />

vergangen. Damit habe dieser<br />

Zweig fünf Monate Rückstand<br />

gegenüber 2.6.32, und es fehlten<br />

einige Securitypatches.<br />

Daraufhin brachte Paul noch<br />

eine Version heraus, mittlerweile<br />

ist 2.6.34.15 aber als<br />

EOL markiert. <br />

n


Aktuell<br />

www.linux-magazin.de Fosdem 2014 04/2013<br />

22<br />

Zu Besuch bei einem der wichtigsten OSS-Events Europas<br />

Brüsseler Spitzen<br />

Um 1700 war Brüssel ein wichtiges Zentrum der Spitzenklöppelei, am 1. und 2. Februar 2014 dagegen die Pilgerstätte<br />

für Open-Source-Entwickler. Ein (zu) dicht gedrängtes Programm der Fosdem lockte eine ungezählt<br />

große Besucherschar an, darunter einen Reporter des <strong>Linux</strong>-<strong>Magazin</strong>s. Text und Fotos: Markus Feilner, Holger Gantikow<br />

Die Fosdem ist Spitze. Zumindest<br />

in der Open-Source-<br />

Szene hat sich das 2001<br />

erstmals veranstaltete Event<br />

etabliert, hier trifft sich alles,<br />

was in der freien Software<br />

Rang und Namen hat – vom<br />

Kernelentwickler bis zum<br />

BSD-Mastermind und dem<br />

Desktop- oder Groupware-<br />

Evangelisten.<br />

Frei wie die Uni<br />

Die vielleicht größte Open-<br />

Source-Konferenz Europas [1],<br />

traditionell an der Libre Université<br />

de Bruxelles [2] ausgetragen<br />

und wie immer mit<br />

dem legendären Beer Event<br />

im Café Delirium (Abbildung<br />

1) eingeleitet ([3], [4]), stellt<br />

den Besucher schon bei der<br />

Planung vor einige Probleme:<br />

512 Vorträge [5], Lightning<br />

Talks, Workshops, LPI-Zertifizierungen,<br />

Devrooms, BOFs<br />

(Birds of a Feather) verteilen<br />

sich auf über 20 Tracks und in<br />

mehr als zehn verschiedene<br />

Räume in vier Gebäuden des<br />

ausgedehnten Solbusch Campus<br />

im Osten der belgischen<br />

Hauptstadt.<br />

Wären da nicht die Videos<br />

[6], die das Team dieses Jahr<br />

kurzerhand von allen Vorträgen<br />

aufzeichnete und im Web<br />

veröffentlichte, dann hätte<br />

niemand die Chance, einen<br />

auch nur annähernd signifikanten<br />

Anteil der Veranstaltungen<br />

zu verfolgen. Die Idee<br />

für die Videos und die Organisation<br />

der Technik entstand<br />

spontan innerhalb von zwei<br />

Wochen, die Keynotes finden<br />

sich auf der DELUG-DVD dieses<br />

<strong>Magazin</strong>s.<br />

Der Besuch der vollständig<br />

von freiwilligen Helfern organisierten<br />

und von OSS-Firmen<br />

gesponsorten Veranstaltung<br />

(Abbildung 2) ist kostenlos,<br />

was allerdings auch jedwede<br />

Messung des Besucherstroms<br />

unmöglich macht – es gibt<br />

keine Eintrittskarten, Listen<br />

oder Ähnliches. Doch weil<br />

die Fosdem-Netzwerker wieder<br />

einmal ein fast perfekt<br />

funktionierendes WLAN (Abbildung<br />

3, 2014 erstmals auch<br />

mit IPv6) auf die Beine stellten,<br />

bestand die Möglichkeit<br />

einer Schätzung.<br />

Gesichert ist nur die Mindestanzahl:<br />

„Wir hatten wenigstens<br />

450 Besucher – so viele<br />

Referenten waren nachvollziehbar<br />

anwesend. Genauso<br />

sicher ist, dass mehr als 8000<br />

unterschiedliche MAC-Adressen<br />

im Netz waren. Also waren<br />

ungefähr 5000 bis 12 000<br />

Leute hier, je nachdem, wie<br />

viele Geräte pro Person man<br />

als Durchschnitt annimmt“,<br />

erklärten die Veranstalter<br />

am Sonntagabend in der Abschluss-Keynote.<br />

Teilweise überfüllt<br />

Bei so vielen Besuchern, Räumen<br />

und prominenten Rednern<br />

wird schnell klar, dass<br />

es für den Besucher nicht realistisch<br />

ist, alle interessanten<br />

Vorträge zu besuchen. Gerade<br />

Themen, die die OSS-Community<br />

aktuell hitzig diskutiert,<br />

sorgen regelmäßig für lange<br />

Schlagen vor den Hörsälen.<br />

Unter anderem bei Lennart<br />

Poettering trat dieser Effekt<br />

auf. Der Kernelentwickler, der<br />

mit Systemd für erbitterte Diskussionen<br />

gesorgt hatte, stellte<br />

in einem vollbesetzten Raum,<br />

in dem schätzungsweise 100<br />

Sitzplätze waren, Kdbus vor<br />

[7]. Vor der Tür drängelten<br />

sich mindestens ebenso viele<br />

Interessierte, die aber der Moderator<br />

abwies (Abbildungen<br />

4 und 5).<br />

Kdbus<br />

Poettering (auf Google Plus unter<br />

dem Pseudonym „Lennart-<br />

PoetteringTheOneAndOnly“<br />

unterwegs), der wie sein Entwicklerkollege<br />

Kay Sievers<br />

wieder im roten „Open Source<br />

Tea Party“-T-Shirt auftrat (ein<br />

Seitenhieb auf eine Diskussion<br />

mit Canonicals Mark Shuttleworth),<br />

darf sich freuen, beim<br />

Thema Kdbus mit dem ebenfalls<br />

anwesenden Greg Kroah-<br />

Hartman einen der wichtigsten<br />

Kernelentwickler auf seiner<br />

Seite zu haben.<br />

Doch auch die vorgetragenen<br />

technischen Argumente vermochten<br />

die Zuhörer wohl zu<br />

überzeugen – die kritischen<br />

Stimmen hielten sich bei den<br />

Nachfragen in Grenzen. Kdbus<br />

sei deutlich performanter<br />

als der D-Bus-Daemon (es<br />

brauche bisweilen nur ein<br />

Fünftel der Context Switches),<br />

stehe bereits beim Booten zur<br />

DELUG-DVD<br />

Auf der DELUG-<br />

DELUG-DVD<br />

DVD warten knapp vier Stunden<br />

Videomaterial aus Janson, dem<br />

Keynote-Auditorium und größten<br />

Hörsaal der Libre Université<br />

de Bruxelles, auf Zuschauer.


Abbildung 1: 10 000 Bier gingen über den Tresen – glaubt man den Informationen,<br />

die am Ende des feucht-fröhlichen Beer Events im Café Delirium kursierten.<br />

Abbildung 2: Sponsoren – ja, aber organisiert wird die Fosdem traditionell von<br />

vielen Freiwilligen. Die organisieren das Netz, filmen die Videos und moderieren.<br />

Abbildung 3: Ein WLAN für 8000 Geräte mit wahlweise IPv6, Dual Stack oder<br />

IPv4 parallel? Was auf kommerziellen Messen oft zum Ärgernis wird, scheint<br />

kein Problem, wenn sich die richtigen Open-Source-Leute drum kümmern.<br />

Verfügung und habe auch<br />

sonst einige Vorteile. Über ein<br />

Unix-Standardinterface samt<br />

API (ein Device unter »/​dev«)<br />

können Anwendungen über<br />

das Kdbus-System Informationen<br />

und Daten austauschen<br />

(Interprozesskommunikation),<br />

wo bei sich sowohl effizienter<br />

Datentransfer im Gigabyte-<br />

Bereich wie auch Credentials<br />

und Meta-Informationen,<br />

Timestamps und viele andere<br />

Features umsetzen lassen.<br />

PostgreSQL- und<br />

Libre-Office-Days<br />

Am Freitag vor der Fosdem<br />

trafen sich die PostgreSQL-<br />

Entwickler im Radisson-Hotel.<br />

Der „Fosdem PG Day“ (Abbildung<br />

6, [8]) ist geprägt von<br />

technischen Vorträgen, Talks<br />

und Keynotes. Abends setzen<br />

sich die Datenbank-Developer<br />

gemütlich zusammen, in einem<br />

eigenen Event in Konkurrenz<br />

zum gerne überfüllten<br />

Fosdem Beer Event.<br />

Eine andere Entwicklergruppe<br />

blieb dagegen länger in Brüssel:<br />

An den Tagen nach der<br />

Konferenz traf sich die Libre-<br />

Ofice-Community, um auf<br />

dem „Libre Office UX Hackfest“<br />

([9], Abbildung 7) weiter<br />

an der freien Officesuite zu<br />

arbeiten. Kurz vor der Fosdem<br />

hatte das Team erst die Version<br />

4.2 herausgegeben [10],<br />

die die Konferenzbesucher am<br />

Libre-Office-Stand unter die<br />

Lupe nehmen konnten. Auch<br />

der Termin für die diesjährige<br />

Libre Office Conference steht<br />

mittlerweile fest: Sie findet<br />

vom 2. bis 5. September in<br />

Bern statt.<br />

Automotive<br />

Großen Raum auf der Fosdem<br />

nahmen die Vorträge aus dem<br />

Embedded-Bereich ein, allen<br />

voran die Themen „Connected<br />

Car und FOSS“, etwa im<br />

Vortrag von Mikael Söderberg.<br />

Der schilderte, wie viel freie<br />

Software in Autos eingezogen<br />

ist und wie aus dem Infotainment-Bereich<br />

mehr und mehr<br />

Open-Source-Produkte in andere<br />

Bereiche der Fahrzeuge<br />

„springen“. Marktforschern<br />

zufolge werden bereits in wenigen<br />

Jahren „die meisten Infotainment-Systeme<br />

mit <strong>Linux</strong><br />

statt QNX oder Windows laufen“<br />

(Söderberg).<br />

Vollvirtualisierte<br />

ARM-Architektur<br />

Auch Xen on ARM war ein<br />

Thema. Nicht nur ein weiterer<br />

Port sei das, erklärt<br />

Stefa no Stabellini, vielmehr<br />

habe man auch die Architektur<br />

aufgeräumt und „viel<br />

Kram rausgeworfen, der aus<br />

der x86-Historie kommt, etwa<br />

Qemu – jetzt ist keine Emulation<br />

mehr notwendig und die<br />

Codebase ist deutlich kleiner“.<br />

Nur noch ein Zehntel soll die<br />

Fosdem 2014 04/2013<br />

Aktuell<br />

www.linux-magazin.de<br />

23<br />

Abbildung 4: Vielleicht die Hälfte der Interessierten schaffte es, einen Sitzplatz<br />

bei Lennart Poetterings Vortrag über Kdbus zu ergattern. Der Rest drängte sich<br />

vor der Tür, während …<br />

Abbildung 5: … drinnen Lennart – unterstützt von Greg Kroah-Hartman und Kay<br />

Sievers – die Vorteile des <strong>neu</strong>en Interprozess-Kommunikation-Mechanismus<br />

Kdbus vorstellte.


Aktuell<br />

www.linux-magazin.de Fosdem 2014 04/2013<br />

24<br />

umfassen – bei fast gleichem<br />

Feature-Umfang.<br />

Auf ARM gäbe es keine Unterscheidung<br />

mehr zwischen<br />

Para- und Vollvirtualisierung,<br />

sondern nur noch Hardware-<br />

Virtualisierung mit so genannten<br />

Paravirtualized Interfaces.<br />

Und für Android wollen die<br />

Entwickler bald Xen auf ARM<br />

in der Version Kitkat (Android<br />

4.4) bringen, basierend auf<br />

Kernel 3.8.<br />

Archäologie<br />

Während sich in den Technik-Tracks<br />

die Urgesteine wie<br />

Howard Chu („Was ist <strong>neu</strong> in<br />

Open LDAP“?, Abbildung 8,<br />

[11]) tummelten, drehten sich<br />

die Keynotes beispielsweise<br />

um Wikipedia-Autokorrektur:<br />

Da niel Naber schilderte die<br />

Probleme der Wikipedia mit<br />

Grammatik- und Stilfehlern<br />

und wie sie das mit Hilfe des<br />

Java-Language-Tools lösen<br />

konnte.<br />

In der zweiten Keynote gab<br />

John Turnbull Anregungen,<br />

wie sich ein <strong>neu</strong>er Entwickler<br />

am besten in ein altes<br />

Softwareprojekte einarbeitet.<br />

Unter dem Titel der „Software-Archäologie“<br />

schilderte<br />

er sowohl soziale Regeln mit<br />

Verhaltensweisen wie auch<br />

das technische Vorgehen für<br />

den, der <strong>neu</strong> zu einem etablierten,<br />

alten Projekt stoße.<br />

Reden, höfliches Nachfragen,<br />

Lesen, Dokumentation updaten<br />

und Tests einbringen und<br />

beschreiben seien da hilfreich,<br />

meint Turnbull.<br />

OSS und die NSA<br />

Und zu guter Letzt blieb auch<br />

die sonst beabsichtigt unpolitische<br />

Fosdem nicht vor<br />

einer Keynote über den NSA-<br />

Skandal verschont. In einem<br />

anschließend viel diskutierten<br />

Vortrag zeigte der Varnish- und<br />

BSD-Entwickler Poul-Henning<br />

Kamp auf unterhaltsame<br />

Weise Spekulationen, wie<br />

denn die NSA-Einflussnahme<br />

auf Open-Source-Projekte und<br />

die gängigen Sicherheitstechnologien<br />

aussehen könnte –<br />

Deckname: Orchestra (Abbildung<br />

9).<br />

Hätte er „die finanziellen und<br />

technischen Möglichkeiten<br />

der US-Geheimdienste, dann<br />

würde ich die Open-Source-<br />

Community unterwandern“<br />

und „sicherheitsrelevante<br />

Projekte unnötig komplex und<br />

APIs so kompliziert und undurchschaubar<br />

gestalten wie<br />

etwa das Open-Source-Kronjuwel<br />

Open SSL“. Außerdem<br />

würde er dafür sorgen, dass<br />

niemand selbst signierte Zertifikate<br />

verwendet, sondern nur<br />

die von der NSA beglaubigten<br />

Root-CAs. n<br />

Infos<br />

[1] Fosdem 2014: [http:// www.​<br />

fosdem. org/ 2014]<br />

[2] LUB: [http:// www. ulb. ac. be]<br />

[3] Beer Event:<br />

[https:// fosdem. org/ 2014/​<br />

practical/ beerevent/]<br />

[4] Café Delirium:<br />

[http:// deliriumcafe. be]<br />

[5] Fosdem-Events:<br />

[https:// fosdem. org/ 2014/​<br />

schedule/ events/]<br />

[6] Fosdem-Videos:<br />

[http:// video. fosdem. org]<br />

[7] Kdbus: [https:// plus. google.​<br />

com/ +Lennart​Poettering​<br />

TheOne AndOnly/ posts/​<br />

13JZ7GpyVDb]<br />

[8] Fosdem, PG Day: [http://​<br />

fosdem2014. pgconf. eu]<br />

[9] Libre Office UX, Hackfest:<br />

[https:// wiki. document​<br />

fo un dation. org/ Hackfest/​<br />

FOSDEM2014]<br />

[10] Mathias Huber, „Libre Office<br />

4.2 ist fertig“: [http:// www.​<br />

linux- magazin. de/ NEWS/​<br />

Libre‐Office‐4. 2‐ist‐fertig/]<br />

[11] Interview mit Howard Chu:<br />

[https:// fosdem. org/ 2014/ interviews/<br />

2014‐howard‐chu/]<br />

Abbildung 6: Die PostgreSQL-Community traf sich vor der Fosdem, …<br />

Abbildung 7: … die Libre-Office-Entwickler in den Tagen danach.<br />

Abbildung 8: Auch wenn das Grumpy-Cat-Bild am Ende seiner Präsentation<br />

nichts Gutes vermuten ließ, blieb der Open-LDAP-Entwickler Howard Chu für<br />

Fragen nach seinem Vortrag doch aufgeschlossen.<br />

Abbildung 9: „Open SSL ist ein Kronjuwel der OSS-Welt, aber das API und die<br />

Dokumentation sind so schlecht, dass es ein Leichtes wäre, darin bösartigen<br />

Code unterzubringen“ – Poul-Henning Kamp über die Möglichkeiten der NSA.


Aktuell<br />

www.linux-magazin.de Cebit 04/2014<br />

26<br />

<strong>Linux</strong> und Open Source auf der Cebit 2014<br />

Offen und mobil<br />

Auf der Cebit vom 10. bis 14. März 2014 kommen die Liebhaber von freier Software und <strong>Linux</strong> auf ihre Kosten.<br />

Der zentrale Anlaufpunkt dafür ist Halle 6 mit der Special Conference Open Source. Mathias Huber<br />

Abbildung 1: Die Special Conference Open Source in Halle 6 bietet nonstop Vorträge zu <strong>Linux</strong> und freier Software.<br />

Wer auf dem weitläufigen<br />

Gelände der Cebit 2014 nach<br />

<strong>Linux</strong> und Open Source sucht,<br />

sollte einen Abstecher in Halle<br />

6 machen. Dort findet er die<br />

„Special Conference Open<br />

Source“ samt Vortragsbühne<br />

(Abbildung 1), den „Open<br />

Source Park“ mit seinen Ausstellern<br />

sowie den „Mobile<br />

Enterprise Park“.<br />

Vorträge nonstop<br />

Auf der Open-Source-Bühne<br />

(Block H01) präsentiert täglich<br />

um 12.15 Uhr Klaus<br />

Knopper seine <strong>neu</strong>este Knoppix-Edition<br />

7.3, die er für das<br />

<strong>Linux</strong>-<strong>Magazin</strong> maßgeschneidert<br />

hat. Neben Hilfe für<br />

Einsteiger hat Knopper auch<br />

Tipps und Tricks für Fortgeschrittene<br />

parat.<br />

Themen für IT-Professionals<br />

behandelt am selben Ort die<br />

Firma Heinlein Support. Die<br />

<strong>Linux</strong>-Spezialisten sind täglich<br />

um 13.45 Uhr mit Vorträgen<br />

über IT-Mana gement,<br />

Open Stack und Cloud stack<br />

sowie sicheres Filesharing<br />

und Mailhosting vertreten<br />

und fördern das Programm<br />

als Hauptsponsor.<br />

Dem aktuellen Thema UEFI<br />

und Secure Boot widmet sich<br />

der <strong>Linux</strong>-<strong>Magazin</strong>-Autor Udo<br />

Seidel, daneben gibt es Empfehlungen<br />

für die Migration<br />

zu Libre Office sowie zu Softwareverteilung<br />

und Clientmanagement.<br />

Holger Gantikow<br />

von der Science+Computing<br />

AG macht Smartphones und<br />

Tablets zum Schweizer Taschenmesser<br />

für Admins.<br />

In pointierter Rede trägt das<br />

amerikanische <strong>Linux</strong>-Urgestein<br />

Jon „Maddog“ Hall<br />

seine Ansichten zu freier<br />

Software vor, etwa über Open<br />

Source in der Bildung, die<br />

NSA-Spitzelaffäre und zum<br />

Infrastrukturprokekt Caua in<br />

Brasilien. Dazwischen ist Hall<br />

am Stand der Medialinx AG<br />

(Block H08) zu finden, wo er<br />

Anwendungen des preiswerten<br />

ARM-Boards Raspberry Pi<br />

demonstriert. Das Vortragsprogramm<br />

ist unter [http://​<br />

​www.​linux‐magazin.​de/​Cebit<br />

‐2014] zu finden.<br />

Preisverleihung<br />

Am Donnerstag (13. März)<br />

wird die Vortragsbühne zum<br />

Schauplatz einer besonderen<br />

Veranstaltung. Die Medialinx<br />

AG, Herausgeberin des <strong>Linux</strong>-<br />

<strong>Magazin</strong>s, verleiht ihre „<strong>Linux</strong><br />

New Media Awards 2014“ und<br />

zeichnet damit besondere<br />

Leistungen im Bereich <strong>Linux</strong><br />

und Open Source aus. Ab 17<br />

Uhr übergeben prominente<br />

Laudatoren die Trophäen an<br />

die Gewinner, die bis zum<br />

letzten Augenblick geheim<br />

bleiben. Prämien gibt es in sieben<br />

Kategorien. Dazu gehören<br />

die beste Open-Source-Lösung<br />

zum Konfigurationsmanagement,<br />

das beste Privacy-Tool,<br />

das innovativste Projekt, die<br />

beste freie Android-App, das<br />

beste Addon für den Raspberry<br />

Pi sowie den bedeutendsten<br />

Beitrag zu <strong>Linux</strong> und<br />

Open Source.<br />

Die Gewinner hat eine internationale<br />

Jury mit über 300<br />

Mitgliedern ausgewählt. Daneben<br />

vergeben die Leser des<br />

<strong>Linux</strong>-<strong>Magazin</strong>s und seiner<br />

Schwesterzeitschriften den<br />

Publikumspreis für die beste<br />

<strong>Linux</strong>-Desktopumgebung. Im<br />

Anschluss gibt es Gelegenheit,<br />

mit den Preisträgern bei<br />

einem kleinen Umtrunk ins<br />

Gespräch zu kommen.<br />

Rund um das Vortragsforum in<br />

Halle 6 sind die Anbieter professioneller<br />

Open-Source-Produkte<br />

und ‐Dienstleistungen<br />

vertreten. Das Unternehmen<br />

Würth Phoenix beispielsweise<br />

präsentiert auf der Cebit die<br />

jüngste Release seiner Monitoringlösung<br />

Neteye sowie<br />

das <strong>neu</strong>e ITMS-Angebot Erizone.<br />

Die Netways GmbH hat<br />

die Puppet Labs zu Gast am<br />

Stand und demonstriert neben<br />

dem Systemmanagement mit<br />

Puppet auch Monitoring mit<br />

Icinga sowie Log-Management<br />

mit Logstash.<br />

Die Bremer Firma Univention<br />

zeigt einen Assistenten<br />

für die Mi gration von Active-<br />

Directory-Domänen. Das Tool


© Ben van ’t Ende<br />

Abbildung 2: Im CMS Garden in Halle 5 stellen sich freie Contentmanagement-<br />

Systeme vor, wie hier Drupal in Person des CMS-Gärtners Daniel Andrisek.<br />

mit dem Namen AD-Takeover<br />

stellt Kundensysteme von einer<br />

Microsoft-Umgebung auf<br />

<strong>Linux</strong>-Server um.<br />

Ebenfalls in Halle 6 angesiedelt<br />

ist das Expert Panel Mobile<br />

Enterprise. Am Montag<br />

(10. März) um 15 Uhr findet<br />

dort die Podiumsdiskussion<br />

„Durchbruch des Mobile Payment<br />

in Deutschland – was<br />

muss passieren?“ statt. Auf<br />

dem Podium sitzen Vertreter<br />

von Firmen und Verbänden<br />

wie dem Bundesverband der<br />

Deutschen Volksbanken und<br />

Raiffeisenbanken (BVR),<br />

Lendstar, NTT Data, Payleven<br />

und Valuephone sowie<br />

der Blogger Maik Klotz von<br />

Mobile-zeitgeist.de.<br />

Forschung und CMS<br />

Auch andere Cebit-Hallen bieten<br />

Interessantes. In Halle 5<br />

am Stand E06 liegt der 120<br />

Quadratmeter großer CMS<br />

Garden (Abbildung 2). Hier<br />

können die Besucher die<br />

Vielfalt freier Contentmanager<br />

von Drupal über Plone<br />

bis Typo3 erkunden. Weitere<br />

Informationen liefert der CMS<br />

Garden e.V. unter [http://​<br />

​www.​cms‐garden.​org].<br />

In Halle 9 stellen zahlreiche<br />

Universitäten, Fachhochschulen<br />

und Forschungseinrichtungen<br />

aus. Sie zeigen ihre<br />

Forschungsprojekte, in denen<br />

immer wieder <strong>Linux</strong> und<br />

Open Source stecken. So beispielsweise<br />

die FU Berlin mit<br />

ihrem LGPL-lizenzierten Betriebssystem<br />

Riot für das Internet<br />

der Dinge. Hinter dem<br />

Namen Docear verbirgt sich<br />

dagegen eine freie Lösung<br />

zum Verwalten akademischer<br />

Publikationen, an dem die<br />

Otto-von-Guericke-Universität<br />

Magdeburg mitarbeitet.<br />

Aber die Cebit hat auch<br />

Highlights jenseits der Open-<br />

Source-Spezialisierung zu bieten.<br />

Dazu gehören auf jeden<br />

Fall die Auftritte von Apples<br />

Technik-Mastermind Steve<br />

Wozniak am Donnerstag<br />

und des Wikipedia-Gründers<br />

Jimmy Wales am Freitag,<br />

beide in Halle 8 auf der Center<br />

Stage. Zum Besuch ist allerdings<br />

ein Ticket „Exhibition &<br />

Conferences“ erforderlich. n<br />

Cebit 04/2014<br />

Aktuell<br />

www.linux-magazin.de<br />

27<br />

Anzeige


Titelthema<br />

www.linux-magazin.de Grundlagen 04/2014<br />

28<br />

Software Defined Networking beendet das administrative Klein-Klein<br />

<strong>Netze</strong> <strong>neu</strong> <strong>ordnen</strong><br />

Die Globalisierung der Firmen, die rasant ansteigende Menge von Geräten, Virtualisierung, Cloud und „Bring<br />

your own device“ machen klassisch organisierte IP-<strong>Netze</strong> schwer plan- und administrierbar. Statt zu hadern,<br />

sollten sich Admins mit einem radikal <strong>neu</strong>en Ansatz befassen: Software Defined Networking. Udo Seidel<br />

Inhalt<br />

28 Grundlagen<br />

Software Defined Networking macht<br />

<strong>Netze</strong> flexibel und zentral steuerbar<br />

32 Open Flow<br />

Das Protokoll steuert den Datenfluss<br />

zentral und senkt die Hardwarekosten.<br />

38 Open Daylight<br />

Das Gemeinschaftsprojekt dient als<br />

Dach für einzelne SDN-Komponenten.<br />

40 Kommerzielle Produkte<br />

Software Defined Networking gewinnbringend<br />

umzusetzen ist das Ziel von VMware,<br />

Cisco, IBM und Midokura.<br />

46 Mininet<br />

Als Testbett für SDN emuliert Mininet ein<br />

komplettes Netzwerk.<br />

Nicht nur einmal revolutionierten Virtualisierungstechniken<br />

in den vergangenen<br />

zehn Jahren die IT-Welt. Vor allem<br />

die x86-Architekturen zogen mit vielen<br />

Features, aber auch in Sachen Leistungsfähigkeit<br />

mit Mainframes und Großrechnern<br />

gleich, die derlei Ressourcenaufteilung<br />

bereits seit Jahrzehnten beherrschen.<br />

IBMs Z-Serie und ihre Vorläufer,<br />

die System/​360-Maschinen, feiern just<br />

zur Cebit 2014 ihren 40. Geburtstag [1].<br />

Server, Storage und Network<br />

Virtualisierung als Konzept ist gleichermaßen<br />

einfach wie erfolgreich: Die Serverhardware<br />

existiert nicht real, sondern<br />

nur mehr als pure Software. Dabei treten<br />

die ursprünglich notwendigen Hardwaretreiber<br />

hinter die Virtualisierung zurück.<br />

Server-Umzüge sind so viel einfacher,<br />

herstellerspezifische Hardware-Limitierungen<br />

fast irrelevant.<br />

Admins stampfen <strong>neu</strong>e Server jetzt binnen<br />

Minuten aus dem Boden – das Konzept<br />

ist so erfolgreich, dass es auch andere<br />

Bereiche erfasst hat: Wie die vorige<br />

Ausgabe des <strong>Linux</strong>-<strong>Magazin</strong>s am Beispiel<br />

von Open Stack zeigte [2], geht auch<br />

der Storage-Bereich seit ein paar Jahren<br />

einen ähnlichen, virtuellen Weg. Analog<br />

zur Virtualisierung ganzer Rechner<br />

ziehen Admins auch hier eine Abstraktionsschicht<br />

zwischen Datenträgern und<br />

dem Anwender oder der Applikation ein<br />

und gewinnen ähnliche Vorzüge wie im<br />

Server-Bereich.<br />

Wenig überraschend macht der Trend<br />

auch vor dem Netzwerk nicht halt. Ganze<br />

Firmennetze existieren mittlerweile nur<br />

mehr virtuell, aus Software aufgebaut<br />

und per Mausklick konfigurierbar [3].<br />

Quo vadis?<br />

IP-Netzwerke bestehen in der Regel aus<br />

eine Reihe von autonomen Systemen:<br />

Switches, Routern und Firewalls. Die<br />

Netzwerkgeräte werten ankommende Datenpakete<br />

aus, schlagen eventuell in Tabellen<br />

nach und senden sie entsprechend<br />

weiter. Damit das funktioniert, müssen<br />

diese Systeme die Netzwerktopologie zumindest<br />

teilweise kennen (Abbildung 1).<br />

Die Position eines bestimmten Geräts im<br />

Netzwerk definiert dessen Funktion, ein<br />

Stellungswechsel hat unter Umständen<br />

fatale Folgen.<br />

Im Laufe der Zeit stellte die Internet Engineering<br />

Task Force (IETF, [4]) Admins<br />

eine Reihe von Protokollen zur Seite, um<br />

die einfache Steuerlogik aufzupeppen.<br />

Diese Erweiterungen adressierten jedoch<br />

oft nur eine bestimmte Aufgabe und wirken<br />

aus heutiger Sicht vergleichsweise<br />

isoliert. Hinzu kam, dass die wachsende<br />

Anzahl dieser Standards im Verbund mit<br />

herstellerspezifischen Optimierungen und<br />

Software-Abhängigkeiten die Komplexität<br />

heutiger Netzwerk anwachsen ließ.<br />

Never touch a running<br />

network ...<br />

Ganz nebenbei blieb dabei nahezu jegliche<br />

Flexibilität auf der Strecke. Strukturelle<br />

Änderungen sind in vielen <strong>Netze</strong>n<br />

heute mindestens ein mittelgroßes


Abbildung 1: Ein traditionelles IP-Netzwerk besteht aus echten Geräten, die in Tabellen Informationen vorhalten<br />

und nach definierten Regeln kommunizieren.<br />

Projekt, über dem das Damoklesschwert<br />

eines teuren und gefährlichen Betriebsausfalls<br />

hängt.<br />

Mehr Peers und viele <strong>neu</strong>e<br />

Datentypen<br />

Auch die Welt außerhalb des Netzwerks<br />

stand nicht still. An die Stelle klassischen<br />

Client-Server-Verkehrs tritt eher Peer-artiger<br />

Datenfluss. Immer mehr Rechner<br />

und Anwendungen sind an der Kommunikation<br />

beteiligt. Die Servervirtualisierung<br />

schiebt Rechner hin und her und<br />

verändert so dynamisch ganze Bereiche<br />

der Netzwerktopologie. Smartphones<br />

und Tablet-PCs lassen die Anzahl der<br />

Teilnehmer explodieren.<br />

Mit Software Defined Storage kommen<br />

ganz <strong>neu</strong>e Datentypen hinzu, und Big-<br />

Data-Herausforderungen manifestieren<br />

sich in steigenden Datenvolumina, die<br />

schnell durchs Netzwerk müssen. Die<br />

Veränderung einer Richtlinie für das gesamte<br />

Netzwerk erfordert Konfigurationsanpassungen<br />

von Hunderten, vielleicht<br />

Tausenden von Systemen.<br />

Und damit nicht genug: Die Cloud bringt<br />

noch weitere <strong>neu</strong>e Herausforderung an<br />

das Netzwerk mit sich. Da wären beispielsweise<br />

hochgradige Flexibilität, Sicherheit,<br />

Konformität und Revisionsfähigkeit.<br />

All das ließ sich zwar auch in<br />

klassischen Netzwerken bewerkstelligen,<br />

aber nur durch eine Vielzahl von Mitarbeitern<br />

oder durch teure Managementlösungen<br />

– oder eben durch Virtualisierung<br />

auf der Netzwerkebene.<br />

Divide et conquer<br />

Die grundlegenden Ideen hinter dem<br />

Software Defined Networking (SDN) sind<br />

über sieben Jahre alt und stammen aus<br />

der Stanford University. Primäres Anliegen<br />

von SDN ist die Trennung von Konfiguration<br />

und Infrastruktur (Abbildung<br />

2). In seiner Doktorarbeit [5] beschrieb<br />

Martin Casando 2008 die Idee der logischen<br />

Trennung der Kontroll-Logik vom<br />

Datenfluss. Casando und seine Betreuer<br />

– Nick McKeown und Scott Shenker – gelten<br />

daher als die Väter von SDN.<br />

Im selben Jahr gründeten sie die Firma<br />

Nicira Networks, die sich auf das <strong>neu</strong>e<br />

Themengebiet konzentrierte. Um 2012<br />

übernahm VMware diese Firma für sagenhafte<br />

1,2 Milliarden Dollar [6]. Niciras<br />

Network Virtualisation Platform ist<br />

die Basis von VMwares NSX [7].<br />

In der einschlägigen Literatur finden sich<br />

oft die Begriffe Control Plane und Data<br />

Plane. Letztere sind die Switches, Router<br />

und Firewalls. Die Control Plane befindet<br />

sich dagegen außerhalb der Netzwerkgeräte.<br />

Ihre Geräte brauchen daher nicht<br />

so viel eigene Intelligenz mitzubringen,<br />

wie dies im traditionellen IP-Netzwerk<br />

der Fall ist – die verbaute Firmware darf<br />

deutlich schlanker ausfallen.<br />

Die physikalische Trennung von Kontrollund<br />

Infrastruktur-Schicht (also Control


Titelthema<br />

www.linux-magazin.de Grundlagen 04/2014<br />

30<br />

Anwendung<br />

Kontrolle/Konfiguration<br />

SDN-<br />

Kontroll-<br />

Software<br />

Infrastruktur<br />

Plane und Data Plane) erlaubt es darüber<br />

hinaus, auch die darunter liegende<br />

Hardware unabhängig zu tunen, weil der<br />

leistungsfähige Rechner mit der Kontroll-<br />

Software die Arbeit erledigt. Die Data<br />

Plane leitet lediglich die Datenpakete<br />

weiter, nach den Richtlinien der Kontroll-<br />

Logik.<br />

Das bedeutet aber auch, dass beide Instanzen<br />

miteinander kommunizieren<br />

müssen. An dieser Stelle kommt Technologie<br />

wie Open Flow ([8], siehe Kasten<br />

„Offene Flüsse“) ins Spiel und definiert<br />

eine Standardschnittstelle für diesen Informationsaustausch.<br />

Die oben genannten Wissenschaftler um<br />

Shenker beteiligten sich konsequenterweise<br />

auch an der Gründung der Open<br />

Network Foundation im März 2011. Ziel<br />

der Non-Profit-Organisation ist die Unterstützung<br />

und Überwachung der Schnittstellen<br />

und Standards für SDN. Mit<br />

Google, Facebook, Microsoft, der Deutschen<br />

Telekom, Verizon und Yahoo sind<br />

echte Schwergewichte als Gründungsmitglieder<br />

engagiert.<br />

Pro et contra<br />

Geschäftsprozess<br />

API<br />

Netzwerkdienst<br />

API (Open Flow, ...)<br />

SDN ist beliebt, nicht nur wegen der inhärent<br />

geringeren Abhängigkeit von den<br />

Herstellern der Netzwerkhardware. Die<br />

Intelligenz ist nun im Controller beheimatet,<br />

der über standardisierte Schnittstellen<br />

die notwendigen Informationen mit<br />

den Geräten austauscht. Admins freuen<br />

sich, weil das auch die Entwicklung des<br />

eigenen Netzwerks vom Lebenszyklus<br />

Geschäftsprozess<br />

API<br />

Netzwerkdienst<br />

Netzwerkgeräte<br />

Geschäftsprozess<br />

API<br />

Netzwerkdienst<br />

API (Open Flow, ...) API (Open Flow, ...)<br />

Abbildung 2: Die Architektur von Software Defined Networking ist flexibel, aber hierarchisch gegliedert.<br />

der darunter liegenden Hardware entkoppelt<br />

– wie bei der Servervirtualisierung<br />

auch. Das Trennen von Datenfluss und<br />

Kontroll-Logik zentralisiert das Management<br />

und erlaubt es dem Administrator,<br />

sein Netzwerk in seiner Gesamtheit zu<br />

überblicken und zentral zu verwalten.<br />

Die vorher autonomen Systeme werden<br />

damit Teile eines sich zusammenfügenden<br />

Puzzles.<br />

Für Admins entstehen ganz <strong>neu</strong>e Möglichkeiten,<br />

die Datenflüsse effizienter zu<br />

gestalten. Eine Firewall muss nun nicht<br />

mehr jedes Paket untersuchen, wenn vorherige<br />

Prüfungen erfolgreich waren und<br />

ausreichend sind. Die Abstraktion von<br />

den (herstellerbedingten) Gegebenheiten<br />

der einzelnen Netzwerkgeräte erlaubt<br />

nun Konfigurationen zu automatisieren,<br />

die vorher unmöglich waren.<br />

Richtlinien legt der Netzwerk-Admin über<br />

die Kontroll-Logik fest. Diese übermittelt<br />

die notwendigen Informationen über die<br />

standardisierten Schnittstellen an die jeweiligen<br />

Endgeräte. Eigenschaften oder<br />

sogar einzelne Dienste sind nicht mehr<br />

auf Port-Ebene definiert, sondern an<br />

Offene Flüsse<br />

Open Flow beschreibt Standards und Schnittstellen<br />

für die Kommunikation zwischen der<br />

Control Plane und einer Data Plane. Letztere<br />

wird oft auch als Forwarding Plane (Weiterleitungs-Struktur)<br />

referenziert.<br />

Der Open-Flow-Standard unterliegt der Verwaltung<br />

der Open Networking Foundation (ONF,<br />

[9]). Version 1.0.0 stammt übrigens noch aus<br />

2009. Die Forwarding-Plane setzt sich aus<br />

zentraler, vielleicht sogar globaler Stelle.<br />

Letztlich stellt SDN eine Abstraktion der<br />

Netzwerkschicht bereit, was das Verwalten<br />

aus Geschäftsprozessen heraus erlaubt<br />

(das wäre die Anwendungsschicht<br />

in Abbildung 2). So lässt sich auch das<br />

Netzwerk auf eine Anwendung zuschneiden,<br />

denn diese kennt ja die Fähigkeiten<br />

des <strong>Netze</strong>s.<br />

Kritik<br />

Aber es gibt auch einige Kritikpunkte<br />

oder zumindest offene Fragen. Der Controller<br />

ist nun das Hirn des Netzwerks<br />

– und damit der Single Point of Failure:<br />

Fällt er aus, ist der GAU vorprogrammiert.<br />

Ihn ohne Hochverfügbarkeits-Konzepte<br />

zu betreiben, erscheint mutig bis fahrlässig.<br />

Weitere Fragen stellen sich fast<br />

von selbst: Wie viele Geräte kann eine<br />

Kontrollinstanz verwalten? Wie organisiert<br />

man die Kontrollinstanzen, damit<br />

sie hochverfügbar und zudem skalierend<br />

sind? Der Anteil der Kommunikation von<br />

Control- und Data Plane macht, glaubt<br />

man der Literatur, typischerweise 3 bis 5<br />

Prozent des Traffics aus.<br />

Für den Einsatz von SDN gibt es mehrere<br />

Ansätze. Die Unterschiedlichkeit trägt dabei<br />

teilweise den eben genannten Kritikpunkten<br />

Rechnung. Das symmetrische<br />

Modell zentralisiert die Kontrollinstanz<br />

so weit wie möglich, wobei natürlich<br />

die Störanfälligkeit den offensichtlichsten<br />

und im Alltag vielleicht auch gravierendsten<br />

Nachteil ausmacht.<br />

Das zu lindern versucht der asymmetrische<br />

Ansatz, bei dem die einzelnen<br />

Systeme die relevanten Konfigurationen<br />

kennen und daher auch beim Ausfall der<br />

Kontroll-Logik weiterarbeiten. Typischerweise<br />

organisiert der Administrator sein<br />

Netzwerk in Zellen, die – für sich genommen<br />

– autonom arbeiten. Nachteile dieser<br />

Lösung sind die eigentlich unnötige<br />

Switches und Routern zusammen. Dabei spielt<br />

es keine Rolle, ob diese physikalisch oder nur<br />

virtuell existieren.<br />

Open Flow ist gerade dabei, sich als Quasi-<br />

Standard zu etablieren. Diverse Netzgeräte-<br />

Hersteller haben sich seine Unterstützung auf<br />

die Fahne geschrieben. Auf der Homepage des<br />

Projekts kann man die aktuelle Spezifikation<br />

für Open-Flow-Switches herunterladen.


Redundanz von Informationen und das<br />

Mehr an dezentraler Verwaltung.<br />

Eine weitere Unterscheidung lässt sich<br />

bezüglich des Ortes machen, an dem das<br />

SDN-Hirn liegt. Bei hochgradig virtualisierten<br />

Umgebungen ist es sinnvoll, dem<br />

Hypervisor beziehungsweise dem Host<br />

die notwendige Denkarbeit aufzubrummen.<br />

Anders der Netzwerk-zentrierte<br />

Ansatz: Hier erledigen dedizierte Netzwerkgeräte<br />

den SDN-Job. Auch eine Mischung<br />

ist denkbar, selbst wenn sie den<br />

Gewinn durch Software Defined Networking<br />

schmälert.<br />

Eine dritte Art, SDN-Modelle zu unterscheiden,<br />

betrifft die Verteilung der Informationen.<br />

Einerseits können die Controller<br />

die Informationen über die bekannten<br />

Broad- und Multicast-Mechanismen verbreiten.<br />

Das führt aber zum erwähnten<br />

Anstieg der Netzwerklast. Die Alternative<br />

dazu besteht in verteiltem Hashing<br />

und verteilten Nachschlagetabellen, was<br />

deutlich weniger Informationen übers<br />

Netz schickt. Dieser so genannte Floodless-Ansatz<br />

ist weniger zentral, bringt<br />

dafür aber die gleichen Nachteile wie das<br />

asymmetrische Modell mit sich.<br />

Geglückter Start<br />

Der Autor<br />

Dr. Udo Seidel ist eigentlich Mathe-Physik-Lehrer<br />

und seit 1996 <strong>Linux</strong>-Fan. Nach seiner Promotion<br />

hat er als <strong>Linux</strong>/​Unix-Trainer, Systemadministrator<br />

und Senior Solution Engineer gearbeitet.<br />

Heute ist er Leiter des <strong>Linux</strong>-Strategie-Teams bei<br />

der Amadeus Data Processing GmbH in Erding.<br />

Seit 2011 hat SDN so richtig Fahrt aufgenommen.<br />

Insbesondere auf der Controller-Seite<br />

haben Netzwerkarchitekten die<br />

Qual der Wahl. Die Open-Source-Community<br />

kann auf Projekte wie Floodlight<br />

[10], Beacon [11] oder Open Daylight<br />

[12] verweisen. Auch kommerzielle<br />

Produkte gibt es, natürlich sind neben<br />

VMware auch Cisco [13], HP [14], IBM<br />

[15] und Brocade [16] dort vertreten.<br />

Die Netzwerkgeräte-Seite lässt noch genügend<br />

Raum für Verbesserung. Leider<br />

ist die Anzahl der SDN-fähigen Switches<br />

noch recht übersichtlich. Die Gründungsmitglieder<br />

der Open Networking Foundation<br />

arbeiten mit Nachdruck daran, die<br />

eigenen <strong>Netze</strong> auf das Paradigma umzustellen,<br />

flächendeckende praktische<br />

Erfahrung mit dem <strong>neu</strong>en Ansatz zum<br />

Netzwerkeln fehlen jedoch.<br />

Aber immerhin hat das Cloud Computing<br />

Bewegung in die Sache gebracht. Open<br />

Stack [17] mit seiner Netzwerk-Komponente<br />

Neutron [18] ist nur die Spitze des<br />

Eisbergs. (mfe)<br />

n<br />

Infos<br />

[1] IBMs Z-Series/​Virtual Machine (z/​VM):<br />

[http:// www. vm. ibm. com]<br />

[2] „Speichern als Kür“: <strong>Linux</strong>-<strong>Magazin</strong> 03/​<br />

14, S. 28 bis 54<br />

[3] „Software-Defined Networking: The New<br />

Norm for Networks“: Whitepaper der<br />

Open Networking Foundation;<br />

[http:// www. opennetworking. org/​<br />

images/ stories/ downloads/ white‐papers/​<br />

wp‐sdn‐newnorm. pdf]<br />

[4] IETF: [http:// www. ietf. org]<br />

[5] Martin Casando, „Architectural support<br />

for security management in enterprise<br />

networks“: [http:// yuba. stanford. edu/​<br />

~casado/ mcthesis. pdf]<br />

[6] VMware übernimmt Nicira:<br />

[http:// www. finanzen. net/ nachricht/​<br />

aktien/ VMware‐kauft‐Nicira‐fuer<br />

‐1‐26‐Milliarden‐Dollar‐1966322]<br />

[7] VMware NSX:<br />

[http:// www. vmware. com/ products/ nsx/]<br />

[8] Open Flow:<br />

[http:// www. opennetworking. org/ sdn<br />

‐resources/ onf‐specifications/ openflow/]<br />

[9] Open Networking Foundation:<br />

[http:// www. opennetworking. org]<br />

[10] Floodlight: [http:// www. projectfloodlight.​<br />

org/ floodlight/]<br />

[11] Beacon: [http:// openflow. stanford. edu/​<br />

display/ Beacon/ Home]<br />

[12] Open Daylight:<br />

[http:// www. opendaylight. org]<br />

[13] Cisco SDN: [http:// www. cisco. com/ web/​<br />

strategy/ docs/ gov/ cis13090_sdn_sled_<br />

white_paper. pdf]<br />

[14] HP SDN: [http:// h20195. www2. hp. com/​<br />

v2/ GetPDF. aspx/ 4AA3‐8562ENW. pdf]<br />

[15] IBM SDN: [http:// www‐03. ibm. com/​<br />

systems/ networking/ sdn/ index. html]<br />

[16] Brocade SDN:<br />

[http:// www. brocade. com/ solutionstechnology/<br />

technology/ softwaredefined‐networking/<br />

index. page]<br />

[17] Open Stack: [http:// www. openstack. org]<br />

[18] Neutron:<br />

[http:// wiki. openstack. org/ wiki/ Neutron]


Titelthema<br />

www.linux-magazin.de Open Flow 04/2014<br />

32<br />

Netzwerke mit Open Flow verwalten<br />

Alles im Fluss<br />

Dümmere Netzwerkhardware schafft klügere <strong>Netze</strong>? Bei Open Flow jedenfalls geht diese Rechnung auf und<br />

erspart dem Admin einige Arbeit, indem er den Datenfluss zentral von einem Punkt aus steuert. Marc Körner<br />

© Tono Balaguer, 123RF.com<br />

Software Defined Networking (SDN)<br />

degradiert herkömmliche Netzwerkhardware<br />

(etwa Switches und Router) mit all<br />

ihren integrierten Features zu dummen<br />

Wachposten mit einer ausgelagerten zentralen<br />

Software als Kommandostelle, dem<br />

Controller (Abbildung 1). Möglich macht<br />

das ein <strong>neu</strong>es Protokoll namens Open<br />

Flow [1], das mittlerweile auffallend viele<br />

proprietäre und freie SDN-Projekte implementieren.<br />

Zwei Ebenen<br />

Open Flow ist nicht nur ein technisches<br />

Modell, sondern spezifiziert auch das<br />

eben erwähnte Prinzip. Und es ist zugleich<br />

der Name des Kommunikationsprotokolls,<br />

über das der Controller und<br />

die realen und virtuellen Switches, Hubs<br />

und Router miteinander reden. Nicht zuletzt<br />

verwaltet Open Flow die Regeln für<br />

die Paketweiterleitungen.<br />

Die Grundidee besteht darin, Hardware<br />

einzusetzen, die Pakete weiterleitet,<br />

jedoch abgesehen von der Open-Flow-<br />

Schnittstelle keinerlei weitere Intelligenz<br />

mitbringt. Diese Trennung von Datenund<br />

Kontrollebene (Data Plane und Control<br />

Plane) reduziert die Gerätekosten<br />

deutlich, denn die Software-seitige Implementierung<br />

der diversen Protokolle für<br />

den Betrieb eines Geräts in einer Layer-<br />

2-Domain (Bridged/Switched Network)<br />

geht ins Geld. Diese Kosten entfallen<br />

beim Open-Flow-Einsatz komplett.<br />

Zudem muss der Admin die Geräte nicht<br />

mehr einzeln vorkonfigurieren: Da die<br />

gesamte Intelligenz im Con troller steckt,<br />

muss er den Schreibtisch nicht mehr verlassen,<br />

sondern steuert das Netzwerk von<br />

einem zentralen Punkt aus.<br />

Alt gegen <strong>neu</strong><br />

SDN erleichtert zudem die Arbeit der<br />

Techniker im Network Operation Center<br />

(NOC), die sich in Firmen um den Netzwerkbetrieb<br />

kümmern. Ein defektes Gerät<br />

tauschen sie ohne weitere Eingriffe in<br />

die Gerätekonfiguration aus: Nach dem<br />

Einbau und dem Patchen der Kabel er-<br />

kennt der Controller dank Open Flow das<br />

<strong>neu</strong>e Gerät und bindet es in das aktive<br />

Netzwerk ein.<br />

Während Hubs und Repeater den eher<br />

historischen Ansatz verfolgen, Pakete<br />

auf allen Ports mit einem aufbereiteten<br />

Übertragungspegel weiterzuleiten, agieren<br />

Switches etwas intelligenter. Sie legen<br />

sich intern Tabellen an, mit deren<br />

Hilfe sie den jeweiligen MAC-Adressen<br />

Ports zu<strong>ordnen</strong>. Dadurch verschicken<br />

sie Pakete zielgerichtet und reduzieren<br />

zugleich die Netzlast und den Stromverbrauch.<br />

Lediglich Pakete mit einer<br />

Broadcast-Adresse senden die Switches<br />

an alle Ports. Sie sind nötig, um etwa die<br />

IP-Adressen von Hosts aufzulösen, das<br />

Stichwort lautet hier Adress Resolution<br />

Protocol (Arp).<br />

Im Kontrast dazu verfolgt Open Flow ein<br />

„Flow“-basiertes Weiterleitungskonzept.<br />

Indem der Controller das Netzwerk in<br />

seiner Gesamtheit betrachtet, kann er<br />

für bestimmte Pakete eine Art Ende-zu-<br />

Ende-Verbindung über mehrere Switches<br />

hinweg aufsetzen. Den Pakettyp macht er<br />

zum Beispiel am Transportprotokoll fest<br />

und leitet TCP-Webtraffic mit Zielport 80<br />

stets über Route A zum Ziel.<br />

Sobald der Controller die Signatur erkennt,<br />

weist er die beteiligten Switches<br />

im Netzwerk an, ihre Forwarding-Einträge<br />

entsprechend zu setzen. Der Admin<br />

instruiert also nicht mehr selbst die lokalen<br />

Switches, sondern stellt über den<br />

Controller fein granulierte Regeln für das<br />

gesamte, lernfähige Netzwerk auf.<br />

Schnelle Specs<br />

Die Entwicklung der Open-Flow-Spezifikation<br />

hat seit ihrer ersten Vorstellung<br />

2008 ziemlich an Fahrt aufgenommen.<br />

Allein zwischen der Testsuite 0.8.1 vom


Juni 2008 und der Spezifikation in Version<br />

1.0 vom Dezember 2009 haben die<br />

Macher sieben Updates veröffentlicht. Bis<br />

zum heutigen Tag kamen acht weitere<br />

Iterationen hinzu, die aktuelle Version<br />

trägt die Nummer 1.4.<br />

Tabellenkalkulationen<br />

In der Praxis ist Version 1.0 der Spezifikation<br />

am weitesten verbreitet. Ihr API<br />

implementieren die Entwickler und Hersteller<br />

in den kommerziellen und freien<br />

Switches sowie den Controllern. Ihre<br />

Weiterleitungslogik besteht im Wesentlichen<br />

aus einer Flow Table, die wiederum<br />

diverse Flow Entries enthält (Abbildung<br />

2). Letztere bringen einen Header mit,<br />

der in mehreren Feldern ein Identifikationsmuster<br />

versammelt, das der Paketerkennung<br />

dient (Matching Pattern).<br />

Daneben definieren die Flow Entries auf<br />

Pakete anwendbare Aktionen und haben<br />

eine Zählerfunktion (Counter) im Gepäck.<br />

Version 1.1 führte dann mehrere<br />

Flow Tables ein, weswegen Kenner hier<br />

von einer Pipeline sprechen. Die Version<br />

ergänzte zudem zusätzliche Header<br />

Fields, anhand derer die Switches Pakete<br />

identifizieren, etwa für MPLS (Multiprotocol<br />

Label Switching) und IPv6.<br />

Die Spezifikationen sind teils sehr umfangreich,<br />

weil sie ausführliche Erklärungen<br />

zu den Flow-Entry-Strukturen, dem<br />

Aufbau der Flow Tables, den möglichen<br />

Aktionen und den Zählfeldern liefern.<br />

Interessierte finden alle Dokumente frei<br />

verfügbar auf der Webseite der Open Networking<br />

Foundation [2]. Klar ist, dass<br />

sowohl die Zahl der Features als auch<br />

Open-Flow-Switch-Spezifikationen<br />

Open Flow Switch<br />

SW Secure Channel<br />

HW<br />

Flow Table<br />

Open Flow Protocol<br />

die Möglichkeiten zur internen Steuerung<br />

mit jeder Versionsnummer wachsen.<br />

Wachposten<br />

Abbildung 1: Ein Open-Flow-fähiger Switch mit Anbindung an den Controller.<br />

SSL<br />

Trifft ein Paket in einem Open-Flow-<br />

Netzwerk auf einem der für Open Flow<br />

reservierten Ports ein, untersucht der<br />

Switch, wie in der jeweiligen Spezifikation<br />

beschrieben, das Header Field (Abbildung<br />

3). Er vergleicht dessen Bits mit<br />

den Einträgen in seiner Flow Table, die<br />

als Einträge auch Wildcards verwenden<br />

darf. Im Trefferfall führt der Switch die<br />

in den Flow Entries definierten Aktionen<br />

aus und aktualisiert zum Schluss den<br />

Counter.<br />

Als Aktionen kann er das Paket zum<br />

Beispiel an einen Port weiterleiten, dessen<br />

Header-Feld modifizieren oder es an<br />

eine andere Flow Table forwarden. Findet<br />

sich der Eintrag im Header-Feld hingegen<br />

nicht in der Flow Table wieder, kapselt<br />

der Switch das Paket und sendet es an<br />

den Controller, der dann entscheidet, wie<br />

er damit verfährt. Entweder leitet er es<br />

direkt weiter oder er weist die Switches<br />

an, den Flow-Eintrag in ihrer Flow Table<br />

zu ergänzen, damit sie Pakete mit diesem<br />

Header künftig nach einem bestimmten<br />

Muster behandeln.<br />

Der Controller kennt zwei Arten von<br />

Flow Entries, proaktive und reaktive.<br />

Proaktiv heißt, dass der Controller den<br />

Switch anweist, einen Flow-Eintrag für<br />

eine bestimmte Flow Table zu setzen,<br />

ohne dass der Switch darum gebeten hat.<br />

Reaktiv ist der Vorgang, wenn der Switch<br />

auf ein Datenpaket stößt, dessen Header-<br />

Feld-Einträge nicht in seiner Flow Table<br />

vorkommen. Er kapselt<br />

es dann, sendet es<br />

an den Controller und<br />

Controller der erzeugt als Reaktion<br />

einen passenden<br />

Flow-Eintrag für das<br />

unbekannte Paket.<br />

Hat ein Switch einen<br />

Flow Entry erst einmal<br />

PC<br />

gesetzt, winkt er die<br />

zum Flow gehörenden<br />

Pakete einfach durch.<br />

Dies verringert die<br />

Reaktionszeit, weil es<br />

den Umweg über den<br />

Controller einspart.<br />

Bremsend wirkt, dass<br />

Packet<br />

In<br />

die Hardware nicht alle Aktionen der<br />

Flow-Einträge kennt. Führt aber eine<br />

Software diese Aktionen aus, verlangsamt<br />

dies den Prozess. Bei reaktiven Flow<br />

Entries verzögert hingegen der Controller<br />

die Weiterleitung durch zusätzliche Kommunikation<br />

und das Warten auf Entscheidungen<br />

zur Paketbehandlung.<br />

Hardware<br />

Open Flow hat sich als SDN-Konzept bis<br />

zum Produktiveinsatz entwickelt, die dedizierten<br />

Switches, die Open Flow unterstützen,<br />

bezeichnen sich als Open Flow<br />

Enabled. Es handelt sich um Hybrid-<br />

Switches, die neben ihrer herkömmlichen<br />

Switch-Funktionalität und den damit verbundenen<br />

Protokollen, etwa dem Link<br />

Local Discovery Protocol (LLDP), auch<br />

eine Open-Flow-Konfiguration anbieten.<br />

Um sie zu nutzen, muss der Netzwerker<br />

abhängig vom Herstellermodell verschiedene<br />

Konfigurationen an der Open-Flow-<br />

Instanz auf dem Switch vornehmen. Dies<br />

bedeutet meist, dass er die entsprechenden<br />

Ports oder VLANs in den Open-Flow-<br />

Modus versetzt, damit ein externer Controller<br />

die Switches instruiert.<br />

Zurzeit beschränkt sich der Einsatz von<br />

Open Flow auf den Bereich klassischer<br />

Switches für Datenpakete (Data Path).<br />

Für optische <strong>Netze</strong>, die Lichtwellen weiterleiten<br />

(Light Path), gibt es Open-Flowähnliche<br />

Technologien. Forscher arbeiten<br />

seit einiger Zeit daran, Open Flow aber<br />

auch in diesem Bereich zu etablieren,<br />

um eine übergreifende und einheitliche<br />

Managementebene für Netzwerktechnologien<br />

zu schaffen.<br />

Volle Kontrolle<br />

Controller<br />

Open Flow Switch<br />

Packet<br />

Out<br />

Abbildung 2: Über ihre Einträge, die Flow Entries,<br />

reguliert die Flow Table den Datenstrom.<br />

Es gibt diverse Controller für Open-Flow-<br />

Netzwerke. Sie dienen in der Regel als<br />

Plattform für so genannte Netzwerkapp-<br />

Open Flow 04/2014<br />

Titelthema<br />

www.linux-magazin.de<br />

33


Titelthema<br />

www.linux-magazin.de Open Flow 04/2014<br />

34<br />

likationen (Apps). Die Controller implementieren<br />

das zur Spezifikation kompatible<br />

Open-Flow-Protokoll und kümmern<br />

sich um die Kommunikation mit den<br />

Switches.<br />

Als Plattform ermöglichen sie es den<br />

App-Entwicklern zugleich, sich voll und<br />

ganz auf das Implementieren der Apps<br />

zu konzentrieren (Abbildung 4). Dazu<br />

bieten die Controller meist ein API für<br />

eine geläufige Programmiersprache an.<br />

Die Apps leiten eingehende Pakete an alle<br />

Ports weiter und dienen so als virtuelle<br />

Hubs. Oder sie routen gezielt Pakete auf<br />

Basis von MAC-Adressen und fungieren<br />

als Bridges und Switches.<br />

Die meisten Controller bringen ein paar<br />

Basismodule mit. Die erwähnte Switch-<br />

Anwendung dient Entwicklern zugleich<br />

als Fallbeispiel, um eigene Apps zu entwerfen.<br />

Für viele weitere Anwendungen<br />

müssen konventionelle Netzwerke spezielle<br />

Geräte einsetzen, etwa für Router,<br />

Firewalls oder Load Balancer.<br />

Nox<br />

In Port<br />

Einer der ersten Open-Flow-Controller<br />

heißt Nox [3], steht unter der GPLv3<br />

und wird seit 2008 entwickelt. Er folgt<br />

einem Modulkonzept mit einem C++und<br />

Python-API und dient als Beispiel<br />

(Hub, Switch), um Entwicklern zu zeigen,<br />

wie sie das API zum Entwerfen von<br />

Netzwerkanwendungen nutzen.<br />

Floodlight<br />

VLAN<br />

Ethernet<br />

ID SA DA Type<br />

Der Floodlight-Controller [4] ist hingegen<br />

etwas <strong>neu</strong>er und setzt auf die plattformübergreifende<br />

Programmiersprache<br />

IP<br />

SA DA Proto<br />

Abbildung 3: Schema der Header Fields aus der Open-Flow-Spezifikation 1.0.<br />

Listing 1: Netzwerk in Mininet anlegen<br />

01 mininet@mininet‐vm:~$ sudo mn ‐‐topo single,2<br />

‐‐mac ‐‐switch ovsk ‐‐controller remote<br />

02 *** Creating network<br />

03 *** Adding controller<br />

04 Unable to contact the remote controller at<br />

127.0.0.1:6633<br />

05 *** Adding hosts:<br />

06 h1 h2<br />

Java. Auch Floodlight bringt einige Apps<br />

mit und verfolgt ein Modul- und Appbasiertes<br />

Konzept. Die Standardversion<br />

liefert zum Beispiel ein Modul mit, das<br />

eine zusätzliche REST-Schnittstelle zum<br />

aktiven Setzen statischer Flows anbietet.<br />

So wie Nox steht auch Floodlight unter<br />

einer Open-Source-Lizenz, in diesem Fall<br />

unter der von Apache.<br />

Frenetic<br />

Src<br />

TCP<br />

Frenetic [5] ist ein Projekt der Princeton<br />

University, das die LGPLv3 verwendet.<br />

Die Netzwerk-Programmiersprache läuft<br />

als Anwendung auf dem Nox-Controller,<br />

verwendet ein eigenständiges Runtime<br />

Environment und spricht wahlweise<br />

Ocaml oder Python.<br />

Frenetic bringt eine weitere Abstraktionsschicht<br />

zur App-Entwicklung ins Spiel,<br />

die es erlaubt, die Menge an Sourcecode<br />

zu reduzieren und anwendungsorientierten<br />

Quellcode zu schreiben. Dieser lässt<br />

sich modular in Funktionen kapseln und<br />

wiederverwenden. Während der C++-<br />

Quellcode für einen Repeater beispielsweise<br />

um die 100 Codezeilen umfasst,<br />

erledigt Frenetic die Implementierung mit<br />

weniger als zehn Zeilen Code.<br />

Open Flow und Mininet<br />

Dst<br />

Wie SDN mit Open Flow funktioniert,<br />

lässt sich am besten an den folgenden<br />

drei praktischen Beispielen zeigen. Das<br />

im Schwerpunkt vorgestellte Mininet [6]<br />

liefert eine passende Umgebung zum Testen<br />

und Evaluieren solcher <strong>Netze</strong>.<br />

Die Heft-DVD bringt fertige Virtualbox-<br />

Images mit, als Typ stellt der Anwender<br />

07 *** Adding switches:<br />

08 s1<br />

09 *** Adding links:<br />

10 (h1, s1) (h2, s1)<br />

11 *** Configuring hosts<br />

12 h1 h2<br />

13 *** Starting controller<br />

14 *** Starting 1 switches<br />

15 s1<br />

App<br />

Controller<br />

App<br />

Open-Flow-Netzwerk<br />

Abbildung 4: Die Open-Flow-Controller dienen häufig<br />

als Plattform für Netzwerk-Applikationen.<br />

»<strong>Linux</strong>« ein und wählt die passende Architektur<br />

aus. Als »Disk‐Image« dient die<br />

entpackte VMDK-Datei. Bevor er die VM<br />

startet, sollte er jedoch die Einstellung für<br />

den Netzwerkadapter auf »Netzwerkbrücke«<br />

stellen, um die VM auch extern über<br />

das LAN zu erreichen.<br />

Hat der Nutzer die VM gestartet und sich<br />

angemeldet (Benutzername und Passwort<br />

lauten »mininet«), findet er die idealerweise<br />

per DHCP zugewiesene IP-Adresse<br />

heraus, indem er »ifconfig« eintippt. Über<br />

sie erreicht er die VM nun via SSH von einem<br />

externen Host aus. Weitere Mininet-<br />

Parameter verrät »man mn«.<br />

Level 1: Hin und zurück<br />

Im ersten Szenario erzeugt der Admin ein<br />

Netzwerk, das aus zwei Hosts besteht,<br />

die ein Switch verbindet (Listing 1). Er<br />

verzichtet auf den Controller, um die<br />

Flow Entries manuell zu setzen. Um zu<br />

prüfen, ob die Verbindung steht, schickt<br />

Host 1 nun über das CLI von Mininet<br />

einen Ping an Host 2:<br />

mininet> h1 ping ‐c 4 h2<br />

PING 10.0.0.2 (10.0.0.2) 56(84) bytes of U<br />

data.<br />

From 10.0.0.1 icmp_seq=1 Destination Host U<br />

Unreachable<br />

[...]<br />

Der Versuch schlägt allerdings fehl, weil<br />

der Switch ohne Flow Entries und ohne<br />

Controller zunächst keine Pakete weiterleitet.<br />

Die Abwesenheit der letzten beiden<br />

zeigt:<br />

mininet@mininet‐vm:~$ dpctl dump‐flows<br />

tcp:127.0.0.1:6634<br />

stats_reply (xid=0x6929ef28): flags=none U<br />

type=1(flow)


Das hier verwendete Tool »dpctl« setzt<br />

nun einen Flow-Eintrag, der die an Port 1<br />

des Switch ankommenden Pakete an Port<br />

2 weiterreicht:<br />

mininet@mininet‐vm:~$ dpctl add‐flow tcp:U<br />

127.0.0.1:6634 in_port=1,actions=output:2<br />

Open Flow 04/2014<br />

Titelthema<br />

Wieder nichts: Der zweite Ping-Test<br />

schlägt auch fehl, da der Switch zwar<br />

Pakete an Host 2 weiterleitet, Letzterer<br />

aber nicht antwortet.<br />

Setzt der Netzwerker mit »dpctl« in Form<br />

eines weiteren Flow Entry jedoch ein Forwarding<br />

von Port 2 auf Port 1, wird das<br />

Ergebnis positiv: Beide Hosts tauschen<br />

sich ungehindert über den Switch aus, so<br />

lange der Idle-Timeout nicht dazwischenfunkt<br />

(Listing 2).<br />

Level 2: Wo bleibt Arp?<br />

Szenario 2 verwendet einen identischen<br />

Netzaufbau wie in Szenario 1, schickt<br />

den initialen Befehl allerdings so ab, dass<br />

Open Vswitch als eingebauter Controller<br />

zum Zuge kommt:<br />

mininet@mininet‐vm:~$ sudo mn ‐‐topo U<br />

single,2 ‐‐switch ovsk ‐‐controller ovsc<br />

Der Verbindungstest mit »ping« ist sofort<br />

erfolgreich, die Flow Table zeigt drei<br />

Flow-Einträge (Listing 3).<br />

Abbildung 5: Mit Wireshark lässt sich die Kommunikation zwischen Controller und Switches prima mitlesen.<br />

Neben dem Arp-Reply sind jeweils zwei<br />

ICMP-Requests und ‐Replies zu sehen,<br />

die aus dem vom Ping erzeugten Flow-<br />

Eintrag stammen. Allerdings stellt sich<br />

die Frage, was mit dem Arp-Request passiert<br />

ist, der üblicherweise als Broadcast<br />

übers Netzwerk geht. Indem der Netzwerker<br />

den Control Channel, der Switch<br />

und Controller verbindet, per Tcpdump<br />

oder Wireshark mitschneidet, kann er<br />

feststellen, dass der Controller die Arp-<br />

Requests direkt weiterleiten lässt, was<br />

keinen Flow Entry benötigt.<br />

Wer Wireshark mit dem Open-Flow-Dissector<br />

nutzt, der Teil des Mininet-Image<br />

ist, kann sehr übersichtlich die gesamte<br />

Kommunikation des Open-Flow-Controllers<br />

einsehen und analysieren. Abbildung<br />

5 zeigt als Beispiel den Handshake zwischen<br />

Controller und Switch sowie den<br />

»Features Reply« des Switch, der dem<br />

Controller signalisiert, welche Open-<br />

Flow-Aktionen er unterstützt.<br />

Level 3: Baumartige<br />

Im dritten und letzten Szenario erzeugt<br />

Mininet ein Netzwerk mit Baumtopologie<br />

(Abbildung 6), bei dem jeweils drei<br />

Hosts an den Switches S2 bis S4 hängen.<br />

Die drei Switches stöpselt Mininet dann<br />

an einen Aggregations-Switch (S1). Hier-<br />

www.linux-magazin.de<br />

35<br />

Listing 2: Die funktionierende Flow Table<br />

01 mininet@mininet‐vm:~$ dpctl dump‐flows tcp:127.0.0.1:6634<br />

02 stats_reply (xid=0x9565ff66): flags=none type=1(flow)<br />

03 cookie=0, duration_sec=39s, duration_nsec=436000000s, table_id=0, priority=32768, n_packets=12, n_bytes=728, idle_timeout=60,hard_timeout=0,<br />

in_port=1,actions=output:2<br />

04 cookie=0, duration_sec=13s, duration_nsec=466000000s, table_id=0, priority=32768, n_packets=6, n_bytes=476, idle_timeout=60,hard_timeout=0,<br />

in_port=2,actions=output:1


Titelthema<br />

www.linux-magazin.de Open Flow 04/2014<br />

36<br />

Abbildung 6: Floodlight erkennt die Baumstruktur des Testnetzwerks automatisch<br />

und bildet sie auch grafisch ab.<br />

bei handelt es sich um eine übliche Topologie<br />

für Netzwerke in Firmen oder auch<br />

Rechenzentren. Diesmal legt der Admin<br />

einen Remote-Controller fest, weist ihm<br />

eine IP-Adresse und einen Open-Flow-<br />

Standard-Controller-Port zu:<br />

mininet@mininet‐vm:~$ sudo mn ‐‐topo U<br />

tree,depth=2,fanout=3 ‐‐mac ‐‐switch U<br />

ovsk ‐‐controller=remote,ip=Controller-IP,U<br />

port=6633<br />

Als Konsequenz kann der Admin nun<br />

einen beliebigen Rechner im lokalem<br />

Netzwerk auswählen, auf dem er zum<br />

Beispiel Floodlight in der Basiskonfiguration<br />

startet:<br />

java ‐jar floodlight.jar<br />

Ist Mininet online, erkennt Floodlight<br />

anhand der Konsolenausgaben unter anderem<br />

sowohl die Verbindungen zu den<br />

Switches als auch die Topologie. Über die<br />

Eingabe von<br />

http://Controller‐IP:8080/ui/index.html<br />

kannten Switches und<br />

Hosts anzeigen – über<br />

den Reiter »Topology«<br />

auch grafisch. Die<br />

Grafik in Abbildung<br />

6 ist zwar eher funktional<br />

als ansehnlich,<br />

genügt jedoch, um<br />

einen Überblick zu erhalten.<br />

Resümee<br />

Dank Open Flow betrachtet<br />

der Admin<br />

sein Netzwerk nicht<br />

mehr als eine Ansammlung<br />

diverser Einzelgeräte, die lokal<br />

arbeiten und Pakete nach je eigenen<br />

Regeln weiterleiten, sondern als großes<br />

Ganzes, mit den Netzwerkgeräten als<br />

fernsteuerbaren Schleusen. Das öffnet<br />

eine Tür für <strong>neu</strong>e Ideen. Als wohl verbreitetste<br />

SDN-Manifestation, die auch<br />

in kommerziellen Produkten zum Einsatz<br />

kommt, sorgt Open Flow für frischen<br />

Wind im Bereich der Virtualisierung und<br />

der Flexibilität von Netzwerken und leistet<br />

Geburtshilfe für zahlreiche darauf aufsetzende<br />

Anwendungen.<br />

Die Technologie hat das Potenzial, Netzwerklösungen<br />

an der Basis zu verändern,<br />

und erfordert ein <strong>neu</strong>es Verständnis dafür,<br />

was eine Netzwerkinfrastruktur leisten<br />

kann. Open Flow behebt viele der<br />

Probleme, die Netzwerke seit der ersten<br />

technischen Realisierung des Ethernet<br />

mit sich herumschleppen. Es führt die<br />

Evolution in einem Bereich ein, in dem<br />

seit Jahren Workarounds dominieren, um<br />

die grundlegenden Techniken kompatibel<br />

zu halten.<br />

Wie so häufig, ist jedoch nicht alles Gold,<br />

was glänzt. Zu den offenen Fragen ge-<br />

ruft der Admin dann das Web-UI von<br />

Floodlight auf und lässt sich alle erhört,<br />

wie Admins Open Flow grundsätzlich<br />

in Produktivumgebungen einsetzen<br />

können und wie es sich als Ersatz zu den<br />

konventionellen Netzwerken macht – besonders<br />

in Rechenzentren oder großen<br />

Firmennetzwerken. Das streift die Frage,<br />

wie sich die Kontrollebene in solchen<br />

Kontexten skalieren und strukturell organisieren<br />

lässt.<br />

Ein konkretes Problem besteht darin,<br />

dass die Hardware verschiedene Open-<br />

Flow-Aktionen zurzeit nur mangelhaft<br />

unterstützt. Nicht zuletzt bereiten die immer<br />

<strong>neu</strong>en Versionen der Spezifikation<br />

den Firmware- und Controller-Hersteller<br />

beim Implementieren der <strong>neu</strong>en Features<br />

Kopfschmerzen. (kki) <br />

n<br />

Infos<br />

[1] Open Flow, erstes Paper:<br />

[http:// archive. OpenFlow. org/ documents/​<br />

OpenFlow‐wp‐latest. pdf]<br />

[2] Open Networking Foundation: [https://<br />

test. opennetworking. org/ index. php]<br />

[3] Nox: [http:// www. noxrepo. org]<br />

[4] Floodlight: [http:// www. projectfloodlight.​<br />

org/ floodlight/]<br />

[5] Frenetic: [http:// www. frenetic‐lang. org]<br />

[6] Mininet: [http:// mininet. org]<br />

[7] Open-Flow-Tutorial:<br />

[http:// archive. OpenFlow. org/ wk/<br />

index. php/ OpenFlow_Tutorial]<br />

Der Autor<br />

Marc Körner arbeitet als<br />

wissenschaftlicher Mitarbeiter<br />

am CIT der TU Berlin.<br />

Er beschäftigt sich seit<br />

über drei Jahren mit Open<br />

Flow und schreibt momentan<br />

an seiner Dissertation. Die setzt sich mit<br />

der Integration von Open-Flow-Anwendungen in<br />

Rechenzentren auseinander.<br />

Listing 3: Flow Tables auslesen<br />

01 mininet@mininet‐vm:~$ dpctl dump‐flows tcp:127.0.0.1:6634<br />

02 stats_reply (xid=0xf857cb47): flags=none type=1(flow)<br />

03 cookie=0, duration_sec=3s, duration_nsec=981000000s, table_id=0, priority=0, n_packets=4, n_bytes=392, idle_timeout=60,hard_timeout=0,icmp,<br />

in_port=1,dl_vlan=0xffff,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,nw_src=10.0.0.1,nw_dst=10.0.0.2,nw_tos=0x00,icmp_type=8,icmp_<br />

code=0,actions=output:2<br />

04 cookie=0, duration_sec=3s, duration_nsec=980000000s, table_id=0, priority=0, n_packets=4, n_bytes=392, idle_timeout=60,hard_timeout=0,icmp,<br />

in_port=2,dl_vlan=0xffff,dl_src=00:00:00:00:00:02,dl_dst=00:00:00:00:00:01,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0x00,icmp_type=0,icmp_<br />

code=0,actions=output:1<br />

05 cookie=0, duration_sec=3s, duration_nsec=981000000s, table_id=0, priority=0, n_packets=1, n_bytes=42, idle_timeout=60,hard_timeout=0,arp,<br />

in_port=2,dl_vlan=0xffff,dl_src=00:00:00:00:00:02,dl_dst=00:00:00:00:00:01,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_proto=2,actions=output:1<br />

06


Titelthema<br />

www.linux-magazin.de Open Daylight 04/2014<br />

38<br />

Der SDN-Controller Open Daylight<br />

Strahlende Zukunft<br />

An den Grundlagen kommender SDN-Produkte arbeiten namhafte Unternehmen gemeinsam im Open-<br />

Source-Projekt Open Daylight. Im Februar 2014 erblickte dessen erste Code Release das Tageslicht. Mathias Huber<br />

Bescheidenheit zählt in der Regel nicht<br />

zu den Tugenden großer IT-Unternehmen.<br />

Umso bemerkenswerter war es, als Erik<br />

Ekudden, oberster Technologie-Stratege<br />

bei Ericsson, konstatierte: „Keiner von<br />

uns ist groß genug, sich den Themen<br />

Software Defined Networking und Network<br />

Functions Virtualization allein zu<br />

stellen. Daher bleibt uns nur die Zusammenarbeit.“<br />

Das sagte er auf dem Open<br />

Daylight Summit im Februar 2014 [1].<br />

Die Veranstaltung fiel zusammen mit der<br />

ersten Release der SDN-Suite Open Daylight,<br />

dem gemeinsamen Produkt vieler<br />

Branchengrößen.<br />

Gemeinsames Projekt<br />

Das Open-Daylight-Projekt [2], im April<br />

2013 gegründet, steht als so genanntes<br />

Collaborative Project unter der Ägide der<br />

<strong>Linux</strong> Foundation. Die Mitgliederliste<br />

verzeichnet alles, was in der Netzwerkbranche<br />

Rang und Namen hat: Brocade,<br />

Cisco, Juniper und Citrix rangieren in der<br />

ersten Reihe zusammen mit Red Hat, IBM<br />

und Microsoft. Das Projekt soll in der<br />

noch frühen Phase des SDN mit Open-<br />

Source-Software eine Grundlage schaffen,<br />

auf der die Mitglieder ihre Produkte aufbauen<br />

wollen. Als Lizenz für den Code,<br />

hauptsächlich in Java und Python, haben<br />

die Partner die Eclipse Public License<br />

(EPL) 1.0 gewählt.<br />

Das erste greifbare Ergebnis der Zusammenarbeit<br />

ist die Release Hydrogen vom<br />

Februar 2014. Dabei handelt es sich eigentlich<br />

um eine komplette Distribution<br />

von SDN-Software, denn Open Daylight<br />

besteht aus zahlreichen Unterprojekten,<br />

die einzelne Komponenten entwickeln.<br />

Synchronisierte halbjährliche Releases<br />

sollen für Konsistenz sorgen.<br />

Den Kern von Open Daylight bildet der<br />

SDN-Controller. Dessen Komponenten<br />

teilen sich eine Java-Runtime und kommunizieren<br />

untereinander mit Funktionsaufrufen.<br />

Unterhalb dieser Kontrollschicht<br />

befindet sich das so genannte<br />

Southbound Interface, wie Abbildung 1<br />

zeigt. In dieser Richtung liegt alles, was<br />

konkreter als die Control Plane ist (siehe<br />

den Grundlagen-Artikel „Teile und herrsche“<br />

in diesem Schwerpunkt).<br />

An die Service Abstraction Layer (SAL),<br />

die untere Abstraktionsschicht des Controllers<br />

samt Plugin-Manager, docken<br />

Plugins für mehrere Protokolle an, die<br />

zum Steuern der Data Plane mit ihren<br />

Netzwerkgeräten dienen. Diese Multi-<br />

Protokoll-Unterstützung ist ein wichtiges<br />

Ziel des Projekts, und so finden sich dort<br />

unter anderem Plugins für Open Flow<br />

(Versionen 1.0 und 1.3), den Standard<br />

Netconf sowie das OVSDB-Management-<br />

Protokoll für Open Vswitch – schließlich<br />

kann das Netzwerk-Equipment auch<br />

virtualisiert sein.<br />

In der Gegenrichtung liegt das Northbound<br />

Interface, das den Anschluss an<br />

Abstrakteres bildet: an Netzwerkanwendungen<br />

sowie Management- und Orchestrierungssoftware.<br />

Dazu zählt die Open-<br />

Stack-Komponente Neutron, die für die<br />

Gäste des Cloud-Computing-Frameworks<br />

Netzwerkverbindungen herstellt. Mit solcher<br />

Software kommuniziert der Controller<br />

über ein REST-API.<br />

Praktisches<br />

Erste Gehversuche mit Open Daylight<br />

macht der interessierte Admin am besten<br />

mit einem in Software nachgeahmten<br />

Netzwerk. Dazu bietet sich die freie<br />

Software Mininet an (siehe Artikel in<br />

diesem Schwerpunkt). Praktischerweise<br />

hält das Projekt virtuelle <strong>Linux</strong>-Appliances<br />

mit vorinstalliertem Mininet vor [3].<br />

Sie lassen sich mit verschiedenen Virtualisierungstechnologien<br />

betreiben, die<br />

Entwickler empfehlen Virtualbox. Dessen<br />

jüngste Versionen haben allerdings<br />

gelegentlich Probleme mit den bereitgestellten<br />

OVF-Dateien. Es ist ratsam, von<br />

Hand eine Ubuntu-VM mit 1 GByte RAM<br />

anzulegen und ihr das heruntergeladene<br />

VMDK-Image zuzuweisen.


Während die virtuelle Maschine bootet,<br />

kann der Admin den Open-Daylight-Controller<br />

installieren. Voraussetzung dafür<br />

ist Java 7. Es stehen RPM-Pakete und Zip-<br />

Files zum Download [4] bereit, die Base-<br />

Ausgabe ist ausreichend. Virtuelle <strong>Linux</strong>-<br />

Appliances sowie Docker-Container sind<br />

ebenfalls im Angebot. Bei einer distributions<strong>neu</strong>tralen<br />

Installation aus dem Zip<br />

braucht man nach dem Entpacken nur<br />

das im Verzeichnis enthaltene Startskript<br />

mit »./run.sh« auszuführen.<br />

Mit laufendem Open Daylight und einsatzbereiter<br />

Mininet-VM lässt sich ein<br />

einfaches Forwarding-Beispiel aus dem<br />

Projekt-Wiki nachvollziehen [5]. In die<br />

Konsole der virtuellen Maschine loggt<br />

sich der User »mininet« mit gleichlautendem<br />

Passwort ein. Dort erstellt er<br />

mit dem folgenden Befehl ein einfaches<br />

Netzwerk mit baumartig angeordneten<br />

Switches in drei Ebenen:<br />

sudo mn ‐‐controller=remote,ip=IP‐AdresseU<br />

‐‐topo tree,3<br />

Abbildung 2: Das in einer Mininet-VM emulierte Testnetzwerk taucht in der grafischen Darstellung im Webinterface<br />

des SDN-Controllers Open Daylight auf.<br />

Der Platzhalter »IP‐Adresse« ist mit der<br />

von außen erreichbaren Adresse des<br />

Hosts zu ersetzen, auf dem Open Daylight<br />

läuft. Unter »http://IP‐Adresse:8080« ist<br />

die Weboberfläche des SDN-Controllers<br />

zu finden (Abbildung 2), als Username<br />

und Passwort dient »admin«.<br />

Die grafische Darstellung im Browser<br />

zeigt die sieben emulierten Switches,<br />

die etwas durcheinander aussehen. Per<br />

Drag & Drop lassen sie sich übersichtlicher<br />

an<strong>ordnen</strong>. Unter dem Netzwerkdiagramm<br />

findet sich der blaue Button »Add<br />

Gateway IP Address« als die der Anwender<br />

eine IP-Adresse und Subnetz-Maske<br />

wie »10.0.0.254/8« einträgt.<br />

Auf der Konsole der Mininet-VM lässt<br />

sich nun ein Ping von einem virtuellen<br />

Host zum anderen schicken, beispielsweise<br />

mit »h1 ping h7«. Dann wechselt<br />

man zurück zur Weboberfläche und dort<br />

zum Reiter »Troubleshooting«. Dort kann<br />

der Admin unter »Existing Nodes« einen<br />

Knoten auswählen und unter »Flows«<br />

oder »Ports« Detailinformationen zu dessen<br />

Verbindungen aufrufen.<br />

Damit sind die Möglichkeiten von Open<br />

Daylight längst nicht ausgeschöpft. Die<br />

Software lässt sich clustern und erlaubt<br />

daneben den Fernzugriff über die Java<br />

Management Extensions (JMX). Die Service<br />

Provider Edition der Software fügt<br />

noch Plugins für die Protokolle BGP,<br />

PCEP und SNMP4SDN hinzu. Außerdem<br />

gibt es eine Virtualization Edition mit<br />

dem Virtual Tenant Manager (VTN), der<br />

den Anschluss an die Netzwerkkomponente<br />

Neutron von Open Stack herstellt.<br />

Ausblick<br />

Wer nicht zur Entwickler-Community der<br />

beteiligten Unternehmen gehört, tut sich<br />

mit Open Daylight noch schwer. Die Dokumentation<br />

im Wiki ist sehr bruchstückhaft<br />

und häufig nicht aktuell. Es bleibt<br />

abzuwarten, ob sich das bessert oder ob<br />

der Kunde auf die aufpolierten Produkte<br />

der Hersteller angewiesen sein wird. n<br />

Open Daylight 04/2014<br />

Titelthema<br />

www.linux-magazin.de<br />

39<br />

© opendaylight.org<br />

Abbildung 1: Die zentrale Komponente von Open Daylight ist die in Java implementierte Kontrollschicht. Mit<br />

physischen und virtuellen Netzwerkgeräten (unten) kommuniziert sie mittels Protokoll-Plugins, mit Managementsoftware<br />

(oben) per REST-API.<br />

Infos<br />

[1] Open Daylight Summit:<br />

[http:// events. linuxfoundation. org/ events/​<br />

opendaylight‐summit]<br />

[2] Open Daylight:<br />

[http:// www. opendaylight. org]<br />

[3] Mininet-VMs:<br />

[http:// mininet. org/ download/]<br />

[4] Open-Daylight-Downloads: [http:// www.​<br />

opendaylight. org/ software/ downloads]<br />

[5] Installation und erste Schritte:<br />

[https:// wiki. opendaylight. org/ view/​<br />

OpenDaylight_Controller:Installation]


Titelthema<br />

www.linux-magazin.de Enterprise-Produkte 04/2014<br />

40<br />

Kommerzielle SDN-Umgebungen als Alternative zu Open Flow<br />

Nur vorerst eine Nische<br />

Während Open Flow von Idealen und der Technik getrieben ist, zählt für Konzerne zuerst die Frage, wie sich<br />

Software Defined Networking monetarisieren lässt. Vor allem VMware, aber auch Midokura, Cisco und IBM<br />

bringen eigene Ansätze als Konkurrenz zu Open Flow. Martin Loschwitz, Markus Feilner, Jan Kleinert<br />

Foto: Markus Feilner<br />

Wer sich mit dem Thema Software Defined<br />

Networking beschäftigt, bekommt<br />

den Eindruck, SDN sei nur in Sachen<br />

Cloud Computing interessant. Und in der<br />

Tat fallen die Begriffe Cloud und SDN<br />

meist im gleichen Atemzug. Über den<br />

Umweg gängiger Cloud-Umgebungen und<br />

dort insbesondere mit Hilfe von Open<br />

Stack hat sich Open Flow mitsamt seinen<br />

Frontends zu einem weithin akzeptierten<br />

Standard entwickelt. Und wer von SDN<br />

im Open-Stack-Kontext redet, meint damit<br />

fast immer das Open-Vswitch-Projekt<br />

[1], das bekanntlich auf Open Flow zurückgreift.<br />

Ein Stück vom Kuchen<br />

Diese Vereinnahmung des SDN-Begriffs<br />

kann Firmen wie VMware und Cisco freilich<br />

nicht gefallen. Denn selbstverständlich<br />

möchten auch die Platzhirsche [2]<br />

ein Stück des Kuchens abhaben, den sie<br />

griffig und Cloud-unabhängig als Software<br />

Defined Data Center (SDDC) titulieren.<br />

Aus diesem Grund wundert es nicht,<br />

dass die großen Unternehmen in letzter<br />

Zeit ihre eigenen SDN-Lösungen propagieren.<br />

Nicht jedes von ihnen hatte allerdings<br />

bereits passende Entwicklungen<br />

in der Schublade: VMware kaufte sein<br />

SDN-Angebot ein, übernahm die Firma<br />

Nicira und vermarktet die Software nun<br />

als VMware NSX [3].<br />

Die Konkurrenz hat den Trend ein wenig<br />

verschlafen und versucht jetzt, aufzuholen:<br />

Cisco ([4], Kasten „Cisco und<br />

das SDN“) wagt sich mit seinem Ansatz<br />

gerade aus der Deckung und möchte Anteile<br />

am Netzwerkmarkt halten. Ganz erwartungsgemäß<br />

will auch Big Blue noch<br />

ein Wörtchen mitreden ([5], Kasten<br />

„Ganz frisch: IBM SDN VE“) und geht<br />

deshalb mit einer eigenen SDN-Software<br />

an den Start.<br />

Anders als im ​OSS-Umfeld ist der Markt<br />

kommerzieller SDN-Lösungen derzeit<br />

unübersichtlich. Als Beispiel für man-<br />

chen Underdog im SDN-Business stellt<br />

der Artikel stellvertretend Midokura vor.<br />

Das Unternehmen mit einer überschaubaren<br />

Anzahl an Büros weltweit bietet<br />

in Form von Midonet ([6], Kasten „Der<br />

Underdog – Midonet“) auch einen SDN-<br />

Stack an, mit dem es gegen die großen<br />

Konzerne anzurennen versucht.<br />

Auch auf Seiten freier Software sind einige<br />

Projekte im Spiel: Open Vswitch,<br />

Open Daylight, Ryu und noch einige Nischenprodukte<br />

tauchen auch im kommerziellen<br />

Zusammenhang immer wieder<br />

auf. Diesen Lösungen ist gemein, dass<br />

sie im Hintergrund Open Flow verwenden.<br />

Anders ist das bei den kommerziellen<br />

Produkten: Es existieren bis dato nur<br />

wenige echte Referenzinstallationen, die<br />

auf Basis der SDN-Software von VMware<br />

oder Cisco arbeiten. Dieser Artikel konzentriert<br />

sich daher auf ein konkretes<br />

Beispiel mit VMware, das am längsten<br />

auf dem Markt ist und viele bekannte<br />

Konzepte vereint.<br />

Auf Shopping-Tour<br />

Angesichts der wachsenden Konkurrenz<br />

von Xen, KVM und vor allem Open<br />

Stack hat der Virtualisierungs-Platzhirsch<br />

VMware in letzter Zeit viel Geld investiert,<br />

um vorhandene Funktionen mit<br />

Cloud-Computing-Umgebungen unter<br />

einen Hut zu bringen. Ein gutes Beispiel<br />

liefert Open Stack, mit dem VMware mittlerweile<br />

klaglos zusammenarbeitet: Ein<br />

vorhandenes Vcenter lässt sich aus Open<br />

Stack heraus problemlos ansprechen.<br />

Langfristig genügte es VMware aber offensichtlich<br />

nicht, nur den Markt für die<br />

Virtualisierung von Computing-Angeboten<br />

zu bedienen. Mit dem Anspruch, die<br />

Messlatte im Sinne des Software Defined


© Yves Fauser, VMware<br />

Data Center selbst anzulegen, knöpfte<br />

sich VMware mit dem Software Defined<br />

Networking ein weiteres Ziel auf dem<br />

Weg vor. Anstatt aber ein eigenes Entwicklerteam<br />

für ein passendes Produkt<br />

aufzubauen, angelte sich der Konzern<br />

kurzerhand Nicira [7], einen der Vorreiter<br />

und quasi das Bootcamp für SDN-<br />

Experten im IT-Bereich.<br />

Nicira<br />

Management und<br />

Operator-Tools<br />

Der NVP-Stack in NSX<br />

NVP-API<br />

NVP Control Plane<br />

Das amerikanische Unternehmen Nicira<br />

war durchaus kein Unbekannter.<br />

Seine Gründer sind<br />

Nick McKeown, Scott<br />

Shenker und Martin<br />

Casado. Gerade der<br />

Dritte profilierte sich<br />

als treibender Kopf<br />

hinter der Entwicklung<br />

von Open Flow.<br />

Casados wissenschaftliche<br />

Arbeit an<br />

der Uni in Stanford<br />

hat Open Flow eine<br />

definierte Grundlage<br />

verschafft, und auch<br />

Open Vswitch geht auf<br />

das Konto von Nicira.<br />

VMware erwarb also nicht irgendein Unternehmen,<br />

sondern eine der wichtigsten<br />

Firmen im SDN-Land.<br />

Quantum und<br />

Quantum-API<br />

L2/L3-Gateways Service-Nodes Hypervisoren<br />

Netzwerk-Hardware und physikalisches Netz<br />

Abbildung 1: Niciras NVP ist nun Bestandteil von VMwares NSX. Die Grafik<br />

zeigt, wie sich VMware den ganzen Stack vorstellt.<br />

NVP<br />

Vorrangig gekauft hat VMware Nicira<br />

aber wohl wegen der Network Virtualization<br />

Platform (NVP, Abbildung 1), einem<br />

von Nicira entwickelten Open-Flow- und<br />

Open-Vswitch-Aufsatz. Das Produkt war<br />

quasi ein Framework um Open Vswitch<br />

herum, das die in Open Flow vorgesehene<br />

Funktionalität über kommerzielle<br />

aber immerhin standardisierte Interfaces<br />

exponiert und dabei deutlich mehr zu<br />

bieten hat, als es bei Open Vswitch ab<br />

Werk der Fall ist.<br />

Relaunch unter einem<br />

<strong>neu</strong>em Mäntelchen<br />

Mit einem Schlag erwarb VMware sowohl<br />

die Software als auch die gesamte<br />

Entwicklertruppe von Nicira. Kurze Zeit<br />

später folgte ein Relaunch von NVP als<br />

VMware-Brand: VMware NSX war geboren,<br />

NVP wurde ein Teil davon. Welche<br />

Komponenten von NSX ein Kunde zum<br />

Einsatz bringt, hängt von der Infrastruktur<br />

vor Ort ab: Wer bis dato nur auf<br />

Vsphere, Vcenter und Co. gesetzt hat,<br />

benutzt lediglich den Controller-Cluster<br />

von NVP und setzt bei den Hypervisoren<br />

mittelfristig auf den zuvor schon vorhandenen<br />

Virtual Distributed Switch (Abbildung<br />

2).<br />

Kommen <strong>Linux</strong>-Hypervisoren auf Basis<br />

von KVM oder Xen zum Einsatz, sieht die<br />

Sache anders aus: Dann übernimmt NVP<br />

praktisch durchgehend das Kommando.<br />

Dass sich NVP ursprünglich im <strong>Linux</strong>-<br />

Kontext wohler fühlte als im klassischen<br />

VMware-Universum, lässt sich auch aus<br />

Enterprise-Produkte 04/2014<br />

Titelthema<br />

www.linux-magazin.de<br />

41<br />

Cisco und das SDN<br />

SDN entzieht der Netzwerkhardware gewöhnlich<br />

Intelligenz und überträgt sie auf höhere<br />

abstrakte Schichten. Das kommt Firmen wie<br />

VMware entgegen, Hardwarehersteller, allen<br />

voran Cisco, bedroht dies langfristig.<br />

ONE und ACI: Open Network Environment und<br />

Application Centric Infrastructure<br />

Als erste Antwort boten die Amerikaner eine<br />

engere Bindung zwischen der hauseigenen<br />

physikalischen Infrastruktur und SDN-nahen<br />

Komponenten. Das Open Network Environment<br />

(Cisco ONE) bietet eine programmierbare Plattform,<br />

die APIs, Agenten, Controller und Komponenten<br />

für Overlay-<strong>Netze</strong> enthält. Grundlage<br />

bildet die Cisco-Systemsoftware IOS, IOS-XR<br />

und NX-OS. Zudem hatte der Hersteller für die<br />

Catalyst-Switches 3560 und 3750 einen Open-<br />

Flow-Agenten programmiert.<br />

Die Bemühungen wirkten zunächst recht vorsichtig,<br />

vielleicht auch, um das traditionelle<br />

Geschäft nicht zu gefährden. Um so mehr überraschte<br />

es, als Cisco letzten November eine<br />

eigene anwendungszentrierte und rechenzentrumsweite<br />

Architektur vorstellte, die deutliche<br />

Züge von SDN aufwies und auf der anderen<br />

Seite funktionell recht weit ins Private Cloud<br />

Computing hineinreichte.<br />

Cisco ACI (Application Centric Infrastructure,<br />

[4]) passt das Netzwerk automatisch an wechselnde<br />

Anwendungsanforderungen an und stellt<br />

IT-Anwendungen per Virtualisierung On-Demand<br />

bereit. Im Zentrum stehen der <strong>neu</strong>e Nexus<br />

9000 Data Center Switch mit 60 TByte Datendurchsatz<br />

pro Sekunde sowie ein Application<br />

Policy Infrastructure Controller (APIC), welche<br />

die Hardware virtueller und physischer Netzwerksegmente<br />

einheitlich steuern. ACI weist<br />

über Policy-Templates automatisch Netzwerkressourcen<br />

und Sicherheitsrichtlinien zu und<br />

verteilt zugleich die Lasten und Durchsätze.<br />

Mit dem frei programmierbaren APIC lassen<br />

sich mehrere APIC-Appliances zu einem Cluster<br />

verbinden. Der unterstützt laut Hersteller alle<br />

Anwendungen in der Fabric unabhängig davon,<br />

ob sie auf virtuellen oder physischen Servern<br />

laufen. Virtuelle Maschinen – Cisco verträgt<br />

sich mit allen gängigen Hypervisoren – seien<br />

zudem in wenigen Minuten einsatzbereit und<br />

in Echtzeit steuerbar. Cisco hat die APIC-APIs<br />

offengelegt und lädt Open-Source-Projekte wie<br />

Open Stack dazu ein, ihre Tools zu integrieren.<br />

APIC Enterprise-Modul<br />

Mitte Februar meldete der Hersteller dann, APIC<br />

um ein Enterprise-Modul (APIC EM) ergänzt zu<br />

haben, das die ACI über das Rechenzentrum<br />

hinaus auf WANs und Campus-Netzwerke erweitert.<br />

Für das Compliance-Management bietet es<br />

netzwerkweite Quality of Service und beschleunigt<br />

intelligente WAN-Deployments. Wichtiger<br />

noch: Die Erweiterung verhilft APIC zu echten<br />

SDN-Fähigkeiten, indem es viele Konfigurations-<br />

und Policy-Änderungen über das gesamte<br />

Netzwerk automatisiert. Netzwerkmanagement<br />

und ‐Troubleshooting werden laut Cisco damit<br />

effizienter, da sich das gesamte Netzwerk als<br />

Einheit betrachten lasse.<br />

Das Enterprise-Modul besteht aus drei Elementen:<br />

Eine konsolidierte Netzwerkinformationsdatenbank,<br />

der Policy-Infrastruktur und der<br />

Automatisierungskomponente. Es steuert <strong>neu</strong>e<br />

SDN-fähige Hardware genauso wie herkömmliche<br />

Cisco-Netzwerkprodukte und besitzt zudem<br />

Netzwerkschnittstellen zu Open Flow und anderen<br />

Drittanbietern, auch solchen, die WAN- und<br />

Campus-Orchestrierung anbieten.


Titelthema<br />

www.linux-magazin.de Enterprise-Produkte 04/2014<br />

42<br />

© Yves Fauser, VMware<br />

Operator<br />

NVP-Manager<br />

NVP-API<br />

NVP-Controller<br />

Tenants<br />

Open Stack<br />

Langfristig will VMware die einzelnen<br />

Bestandteile der NSX-Architektur in ein<br />

einheitliches Produkt gießen. Bis dahin<br />

behalten Vsphere-basierte Architekturen<br />

ihre Sonderrolle und nutzen nur bedingt<br />

die Features von NVP. Allerdings inveseiner<br />

anderen Tatsache ablesen: Auf das<br />

Konto von Nicira gehen nicht nur NVP<br />

und Open Flow, sondern auch beträchtliche<br />

Teile von Open Stack Neutron ([8],<br />

vormals auch als Quantum bekannt), der<br />

SDN-Komponente von Open Stack (Abbildung<br />

3).<br />

Die NVP-Architektur<br />

L3-Gateway<br />

OVS<br />

OVS<br />

Hypervisor 1<br />

Das ideale NVP-Setup im Unternehmen<br />

hängt davon ab, ob bereits VMware-<br />

Komponenten im Einsatz sind oder ob<br />

VMware erst als <strong>neu</strong>er Lieferant in ein<br />

Rechenzentrum einzieht. Allen Varianten<br />

Internet Bare-Metal-VLAN Remote-Site<br />

L3-Gateway<br />

OVS<br />

L3 Fabric<br />

OVS<br />

Hypervisor 2<br />

Web App Web DB DB App<br />

...<br />

L2-Gateway<br />

OVS<br />

Hypervisor N<br />

Compute<br />

Abbildung 2: Auf physikalischer Ebene baut VMware NSX ein virtuelles L2-Netz auf einem echten Layer-3-Netzwerk auf. Dabei vermittelt<br />

an vielen Stellen Open Vswitch (in der Abbildung kurz als OVS gekennzeichnet) zwischen den Fabrics.<br />

OVS<br />

gemein ist, dass es einen NVP-Controller-<br />

Cluster gibt. Der ist quasi das Hirn der<br />

gesamten SDN-Infrastruktur: Er enthält<br />

die Datenbank mit der spezifischen Konfiguration<br />

für die vorhandenen virtuellen<br />

<strong>Netze</strong> der Kunden.<br />

Es handelt sich beim NVP jedoch nicht<br />

um eine Kombination von Bordmitteln<br />

wie MySQL. Vielmehr stellt der Controller-Cluster<br />

eine NVP-Eigenentwicklung<br />

dar, und er beherrscht dabei auch Funktionen<br />

wie die automatische Replikation<br />

von Daten. Der Controller ist in aktuellen<br />

NVP-Installationen stets ein redundant<br />

aufgebauter 3-Knoten-Cluster. Fällt<br />

einer der Server also<br />

aus, kümmert sich<br />

NVP automatisch um<br />

einen Failover.<br />

Fest mit dem NVP-<br />

L2-Gateway Controller verbunden<br />

ist ein RESTful-API:<br />

OVS<br />

Das ermöglicht es, Änderungen<br />

an der Konfiguration<br />

des NVP-<br />

Clusters vorzunehmen<br />

– per HTTP steuerbar.<br />

Darüber lässt sich<br />

Service-Nodes<br />

das gesamte Verhalten<br />

des NVP-Clusters<br />

OVS<br />

detailliert bestimmen.<br />

Natürlich bietet NVP<br />

auch einen eigenen<br />

Consumer für dieses<br />

API, ein umfangreiches<br />

Webinterface, das<br />

im Hintergrund REST-<br />

Befehle absetzt.<br />

Die physikalische Topologie des restlichen<br />

Netzwerkes hängt vom genutzten<br />

Deployment-Szenario ab. Im Vsphere-<br />

Beispiel holen sich die Hypervisoren ihre<br />

Konfigurationsparameter von dem oben<br />

beschriebenen Controller-Cluster.<br />

Topologie<br />

Ganz Frisch: IBM SDN VE<br />

Offensichtlich möchte Big Blue den SDN-Zug nicht verpassen und bringt<br />

mit etwas Verspätung ein eigenes SDN-Produkt auf den Markt. Kurz vor<br />

Redaktionsschluss, am 7. Februar 2014, veröffentlichte das Unternehmen<br />

eine Pressemitteilung, laut der IBMs SDN VE in Kürze zur Verfügung<br />

stehe. Das Akronym steht für „Software Defined Networking for Virtual<br />

Environments“. Technische Details, Preise oder Support-Bedingungen<br />

waren der Verlautbarung nicht zu entnehmen, wohl aber Informationen<br />

zum Design.<br />

Open Daylight plus NSX-Ähnlichkeiten plus Overlays und Gateways<br />

So arbeitet IBM einerseits auf Basis der Open-Daylight-Technologie und<br />

verfolgt zudem ein Design, das dem von VMwares NSX ähnelt, indem es<br />

einen zentralen Controller liefert, der die Konfiguration speichert. Andererseits<br />

gesellen sich Overlays und Gateways zu Nicht-SDN-<strong>Netze</strong>n –<br />

auch das eine von VMware bekannte Vorgehensweise. IBM unterstreicht<br />

durch seinen Einstieg in das Geschäft jedenfalls die Bedeutung von SDN:<br />

Big Blue würde sich wohl nicht mit der Sache beschäftigen, hielte das<br />

Unternehmen es nicht für eine langfristig lohnende Investition.<br />

Der Underdog – Midonet<br />

Wie VMwares NSX ist auch Midonet von Midokura fest im Cloud-Segment<br />

verankert. Als großen Vorteil seiner Produkte stellt der Hersteller die<br />

Kompatibilität zu Open Stack heraus. Damit begibt sich Midonet in direkte<br />

Konkurrenz zu NSX, hat aber eine deutlich kleinere User-Basis.<br />

Konzeptionell ähneln sich NSX und Midonet, und wie VMware hat Midonet<br />

eine beträchtliche Menge an Features implementiert, die im Cloud-<br />

Kontext von Bedeutung sind: Verteilte Router für Layer-2 und Layer-3-<br />

Anwendungen, inhärente Hochverfügbarkeit und ein RESTful-API samt<br />

eigenem Webinterface sind nur einige davon.<br />

Preise? Nur Midokura traut sich<br />

Aufschlussreich scheint auch die Tatsache, dass von allen angefragten<br />

Unternehmen nur Midokura in der Lage war, innerhalb von zwei Wochen<br />

Preise und ein Supportmodell zu nennen, obwohl auch dieser Hersteller<br />

beteuerte, in dieser Branche und bei diesen Produkten fänden sich<br />

eher individuelle Preise pro Projekt. In einem einfachen Szenario mit<br />

Premium-Support (24/​7) nimmt der Hersteller um die 2000 Euro pro<br />

Host und Jahr.


© Yves Fauser, VMware<br />

Erzeuge Netz 1<br />

Tenant-Skipte<br />

Horizon<br />

Orchestration-Code<br />

Boote VM an Netz 1<br />

Quantum-API<br />

Nova-API<br />

Erzeuge Port Netz 1,<br />

Return Port-ID<br />

tiert die Firma einen großen Teil ihrer Arbeit<br />

derzeit auf diese Komponente – ein<br />

weiterer Beleg dafür, dass VMware diese<br />

Technologie für strategisch wichtig hält.<br />

Deutlich eleganter wirkt VMwares NSX<br />

mit seiner Kernkomponente NVP. Für<br />

freie Cloud-Lösungen wie Open Stack<br />

oder Cloud Stack hat Nicira NVP ja eigentlich<br />

entwickelt. Dass es sich hier<br />

auch mehr zu Hause fühlt, spürt der<br />

Admin vielerorts.<br />

Im Open-Stack-Kontext greifen die einzelnen<br />

Komponenten von NVP fast nahtlos<br />

ineinander: Auch hier gibt es natürlich<br />

den Controller-Cluster samt API und<br />

Webinterface, der sich um alle Belange<br />

der NVP-Konfiguration kümmert. Hinzu<br />

kommen diverse Zusatzkomponenten,<br />

die im Cloud-Kontext eigene Rollen übernehmen.<br />

NVP-Plugin<br />

Nova-Driver<br />

Erzeuge<br />

Netz 1<br />

Return Port-ID<br />

Vnic,<br />

Port ID<br />

Abbildung 3: Open Stack wird zum Consumer von NVP. Dank des passenden Plugins …<br />

NVP Controller<br />

Cluster<br />

OVS<br />

Nova Compute<br />

Pushe Flow-State<br />

ausschließt: VLANs beispielsweise sind<br />

tendenziell eine statische Angelegenheit.<br />

Ein Kunde in der Cloud will aber nicht<br />

darauf warten, dass ein Admin ein VLAN<br />

auf allen Switches einrichtet.<br />

Freilich ist es aber auch in einer Cloud<br />

notwendig, dass die VMs verschiedener<br />

Kunden über die Grenzen von Computing-Knoten<br />

hinweg sicher kommunizieren.<br />

Im SDN-Konstrukt muss also ein<br />

Ersatz für VLANs her, der die sichere<br />

Kommunikation von VMs einzelner Kunden<br />

innerhalb des Setups garantiert.<br />

Für die Cloud geht man deshalb typischerweise<br />

von mehreren, rein virtuellen<br />

Layern aus (siehe auch Abbildung 2):<br />

Zwischen den einzelnen Computing-Knoten<br />

entspannt sich ein virtuelles Layer-<br />

2-Netzwerk, das physikalisch auf dem<br />

Layer 3 liegt, weil es<br />

Techniken wie GRE-<br />

Tunneling benutzt.<br />

Um das Netzwerk<br />

nach außen kümmern<br />

sich spezielle<br />

Knoten der Cloud, die<br />

so genannten Layer-<br />

3-Knoten: Sie routen<br />

L3-Fabric einerseits Pakete von<br />

VMs ins Internet, und<br />

über eine Zusatzkomponente<br />

(nämlich den<br />

DHCP-Dienst) sorgen<br />

sie auch dafür, dass<br />

Kunden-VMs IP-Adressen erhalten, die<br />

zum jeweiligen privaten und virtuellen<br />

Kundennetzwerk passen. Die Verwaltung<br />

der Netzwerktopologie obliegt in typischen<br />

Cloud-Setups allein dem Kunden,<br />

der sich seine privaten <strong>Netze</strong> so anlegen<br />

kann, wie es ihm gefällt. Im Idealfall<br />

entsteht so ein Setup, in dem jeder Kunde<br />

nach seiner Facon glücklich wird, während<br />

der Anbieter sich über eine hochgradig<br />

flexible Installation freut.<br />

Neutron als Blaupause<br />

Open Stack Neutron, die SDN-Komponente<br />

der Cloud-Umgebung, bildet für<br />

diese Art der Installation quasi die Blaupause.<br />

In einer Standardinstallation kümmern<br />

sich bei Open Stack Open Flow und<br />

Enterprise-Produkte 04/2014<br />

Titelthema<br />

www.linux-magazin.de<br />

43<br />

SDN in der<br />

Cloud<br />

Wer die Funktionen<br />

der einzelnen NVP-<br />

Komponenten verstehen<br />

will, braucht ein<br />

wenig Hintergrundwissen<br />

über SDN,<br />

Cloud Computing und<br />

Netzwerke im Allgemeinen,<br />

weil sich in<br />

einer Wolke ganz andere<br />

Anforderungen<br />

stellen als in konventionellen<br />

Setups. SDN-<br />

Deployments müssen<br />

in hohem Maße dynamisch<br />

sein, was den<br />

Einsatz klassischer<br />

Technologien häufig<br />

Abbildung 4: … lassen sich problemlos die NVP-Funktionen aus Neutron heraus nutzen.


Titelthema<br />

www.linux-magazin.de Enterprise-Produkte 04/2014<br />

44<br />

Open Vswitch Hand in Hand darum, die<br />

gewollten Effekte zu erreichen.<br />

Wie passt NVP hier rein?<br />

Die physikalische Netzwerktopologie einer<br />

NVP-Installation ist so flach wie im<br />

Beispiel beschrieben. VLANs sucht man<br />

hier meist vergebens. VMware nennt dieses<br />

physikalische Netzwerk offiziell übrigens<br />

Layer-3-Fabric (siehe Abbildung 1).<br />

Tatsächlich ist diese Komponente das virtuelle<br />

L2-Netzwerk im physischen Layer<br />

3: Jeder Hypervisor-Host betreibt seine<br />

eigene Instanz von Open Vswitch.<br />

Auf den Hypervisoren unterscheidet sich<br />

ein NVP-Setup damit gar nicht so sehr<br />

von einem Setup, das ohne NVP auskommt<br />

und nur auf das bekannte Open<br />

Vswitch setzt. Letzteres kümmert sich<br />

darum, dass die Systeme im Hintergrund<br />

Open-Flow-Tabellen anlegen und entsprechend<br />

der gewünschten Konfiguration<br />

warten. In einem auf Open Flow<br />

basierenden Netz beruht schließlich jeglicher<br />

Paketfluss auf eben den Flows, die<br />

Open Flow im Kernel verankert. Hinzu<br />

kommen im NVP-Setup die Layer-2- und<br />

Layer-3-Gateways. Die Layer-2-Gateways<br />

sind eine NVP-Besonderheit: Sie bieten<br />

die Möglichkeit, mit externen Netzwerken<br />

Verbindungen herzustellen, die „außen“<br />

über diverse, auch geroutete Pfade<br />

führen können, während nach innen in<br />

der virtuellen Sicht das gesamte L2-Netz<br />

noch immer wie ein großes Netzwerksegment<br />

aussieht. Anders formuliert: Über<br />

die L2-Gateways in NVP können Kunden<br />

ihr vorhandenes Netz in ein virtuelles<br />

Cloud-Netz integrieren und so die Migration<br />

von echtem Blech in virtuelle VMs<br />

erleichtern. Überhaupt hat sich VMware<br />

dem virtuellen Layer 2 stärker gewidmet<br />

als es Open Vswitch tut (Abbildung 5).<br />

Layer 2 und 3<br />

Denn während bei Open-Vswitch-Setups<br />

das gesamte Layer-2-Netz im Hintergrund<br />

entweder über GRE-Tunnel zwischen den<br />

Hypervisoren, den L3-Gateways oder<br />

über separate, physikalische VLANs<br />

funktioniert, bietet VMwares Ansatz<br />

mehr: Außer GRE oder VXLAN lässt sich<br />

bei NVP auch IPsec nutzen, wenn zwei<br />

Computing-Knoten aus Sicherheitsgründen<br />

verschlüsselt reden sollen.<br />

Abbildung 5: VMware NSX erfindet jede Menge<br />

Funktionalität um Open Vswitch herum.<br />

VMware nennt diesen Ansatz „Programmatic<br />

Tunneling“, die Technik ist deutlich<br />

umfangreicher als die mit Open Vswitch<br />

gelieferte. Als offensichtlicher Vorteil<br />

zählt auch, dass diese Art von Layer-<br />

2-Routing dabei hilft, Kunden von bestehenden,<br />

klassischen Virtualisierungsumgebungen<br />

hin zu Cloud-Lösungen zu<br />

migrieren.<br />

Die Layer-3-Gateways im NVP-Kontext<br />

sind – siehe oben – für das Routing von<br />

Paketen nach draußen verantwortlich,<br />

ihre Rolle entspricht also ziemlich genau<br />

jener, die klassische Layer-3-Gateways<br />

in einem Open-Stack-Setup mittels Open<br />

Vswitch auch einnehmen.<br />

Dann gibt es noch die Service-Nodes:<br />

So nennt VMware Netzwerkknoten, die<br />

den Hypervisor-Nodes Arbeit abnehmen,<br />

insbesondere also Broadcast- sowie<br />

Multicast-Traffic und Unicast-Pakete an<br />

unbekannte Adressen. In großen SDN-<br />

Deployments verursacht solcher Geister-<br />

Traffic bereits jede Menge Verkehr auf<br />

der Leitung; je mehr sich die Hypervisor-<br />

Knoten selbst um ihn kümmern müssen,<br />

umso weniger Ressourcen bleiben ihnen<br />

für das eigentliche Computing.<br />

Die Service-Nodes gelten als VMwares<br />

Antwort auf berechtigte Kritik von<br />

Admins, denen SDN-Deployments suspekt<br />

erschienen, weil sie DOS-Angriffe<br />

ermöglichen. Schon mit Broadcast- oder<br />

Multicast-Traffic lässt sich in einem Hy-<br />

pervisor-Verbund mit GRE-Verbindungen<br />

ein echtes Denial-of-Service starten,<br />

das wahllos VMs beeinträchtigt. Indem<br />

VMware diesen Traffic an separate Hosts<br />

auslagert, verringert es die Gefahr deutlich.<br />

Hochverfüg bar oder lieber<br />

Standalone?<br />

VMware hat sich auch eines weiteren<br />

Problems angenommen, das im normalen,<br />

auf Open Vswitch fußenden Open<br />

Stack derzeit ungelöst ist: Die Hochverfügbarkeit<br />

von Netzwerkdiensten. Typische<br />

Open-Stack-Installationen benötigen<br />

dazu Pacemaker, das im Stile eines klassischen<br />

Failover-Clusters ausgefallene<br />

Dienste wie das Layer-3-Gateway oder<br />

den SDN-Controller ersetzt.<br />

Bei NVP sind alle diese Funktionen bereits<br />

enthalten, und zwar mit automatischem<br />

Failover. Fällt ein Knoten des<br />

Controller-Clusters aus, übernimmt der<br />

nächste. Ausfallende L2- oder L3-Gateways<br />

ersetzt NVP automatisch durch eine<br />

andere Instanz – und das fast augenblicklich,<br />

sodass es zu keiner merklichen<br />

Downtime kommt. Wer sich bereits mit<br />

Open Stack beschäftigt hat und dort über<br />

der Hochverfügbarkeit der Open-Stack-<br />

Komponenten brütete, weiß solche Features<br />

zu schätzen.<br />

Fast schon überflüssig zu erwähnen, dass<br />

die Integration von Open Stacks SDN-<br />

Dienst Neutron und VMwares NVP annähernd<br />

perfekt ist – schließlich stammen<br />

beide Programme in weiten Teilen von<br />

denselben Entwicklern, und VMware hat<br />

nach dem Kauf von Nicira viel Wert darauf<br />

gelegt, die gute Open-Stack-Integration<br />

beizubehalten.<br />

Das darf aber nicht darüber hinweg täuschen,<br />

dass NVP auch ohne Open Stack<br />

gut benutzbar ist. Sobald <strong>Linux</strong>-basierte<br />

Hypervisoren im Spiel sind, kann das<br />

Programm seine Dienste bieten. Die Konfiguration<br />

passiert dann natürlich nicht<br />

direkt aus der Cloud-Umgebung heraus,<br />

sie bleibt am Administrator hängen.<br />

Fazit: Wohl zukunfsträchtig,<br />

aber teuer<br />

Die Cloud und kein Ende: Allen voran<br />

VMware lässt derzeit wenig Zweifel daran,<br />

wo nach Meinung der Platzhirsche


die Reise hingeht – nämlich weiter in die<br />

Wolken. Wer eine Cloud-Computing-Umgebung<br />

aufbaut, hat viele Möglichkeiten,<br />

sich mit kommerziellen Zusatzdiensten<br />

auszustatten. Die Kombination aus Open<br />

Stack und VMware erscheint derzeit eine<br />

der vielversprechendsten zu sein. Mehrere<br />

große Unternehmen wie Ebay oder<br />

der US-amerikanische Anbieter von Hosting-Dienstleistungen<br />

Rackspace setzen<br />

auf NVP (Rackspace sogar im direkten<br />

Tandem mit Open Stack). Mittlerweile<br />

vermarktet VMware NVP für Umgebungen,<br />

in denen KVM und Xen den Ton<br />

angeben, auch als separates Produkt, losgelöst<br />

von Open Stack.<br />

Das Unternehmen sieht darin offensichtlich<br />

einen Weg, den Fuß auch bei den<br />

Unternehmen in die Türe zu kriegen,<br />

die sich VMware für Virtualisierungsdienste<br />

nicht zulegen wollen. In der<br />

Community genießt NVP selbst bei den<br />

FLOSS-Entwicklern viel Prestige; nicht<br />

selten scheint es, als schiele man bei<br />

Open Flow etwas neidisch auf NVP, weil<br />

das Zusatzfunktionen bietet, die Open<br />

Flow selbst fehlen.<br />

Einziger NVP-Pferdefuß dürfte wohl der<br />

Preis sein, denn die Lizenzen lässt sich<br />

VMware nach Erfahrung des Autors eine<br />

satte Stange Geld kosten. Das Plus an<br />

Komfort im Vergleich mit einer OSS-Lösung<br />

ist insofern ziemlich teuer erkauft.<br />

Gegenüber Preisanfragen schweigt sich<br />

die Branche wohlweislich lieber aus:<br />

Nur Midokura sah sich in der Lage, dem<br />

<strong>Linux</strong>-<strong>Magazin</strong> auf Nachfrage binnen<br />

zwei Wochen einen konkreten Preis für<br />

das Produkt und den Premium-Support<br />

zu nennen. <br />

n<br />

Infos<br />

[1] Konstantin Agouros, „Virtuous schalten“:<br />

<strong>Linux</strong>-<strong>Magazin</strong> 02/​13, S. 64.<br />

[2] C. Kühnast, M. Schynowski, M. Feilner,<br />

N. Graf „Wählerischer Platzhirsch“:<br />

<strong>Linux</strong>-<strong>Magazin</strong> 08/​10, S. 70<br />

[3] VMware NSX:<br />

[http:// www. vmware. com/ products/ nsx/]<br />

[4] Cisco Application Centric Infrastructure:<br />

[http://www.cisco.com/c/en/us/solutions/<br />

data-center-virtualization/applicationcentric-infrastructure/index.html]<br />

[5] IBM SDN VE:<br />

[http:// www. ibm. com/ networking]<br />

[6] Midonet:<br />

[http:// www. midokura. com]<br />

[7] VMware und Nicira: [http:// www. vmware.​<br />

com/ de/ support/ acquisitions/ nicira]<br />

[8] Open Stack Neutron:<br />

[https:// github. com/ openstack/ <strong>neu</strong>tron]<br />

Der Autor<br />

Martin Gerhard Loschwitz<br />

arbeitet als Principal Consultant<br />

bei hastexo. Er beschäftigt<br />

sich dort intensiv<br />

mit den Themen HA, Distributed<br />

Storage und Open<br />

Stack. In seiner Freizeit pflegt er Pacemaker für<br />

Debian.<br />

Enterprise-Produkte 04/2014<br />

Titelthema<br />

www.linux-magazin.de<br />

45


Titelthema<br />

www.linux-magazin.de Mininet 04/2014<br />

46<br />

Testbett für SDN<br />

Sandkastenspiele<br />

Dank Mininet konstruiert Philip Wette seine SDN-Topologien zunächst im Sandkasten, bevor er sie auf eine<br />

ziemlich erwachsene Rechnerfarm loslässt. Namespaces im Kernel machen es möglich. Philip Wette<br />

© imagebavarias, 123RF.com<br />

Mit einem einfachen Software-Update<br />

für den Open-Flow-Controller ändert<br />

ein Netzwerk-Admin oft das komplette<br />

Verhalten eines Open-Flow-organisierten<br />

Netzwerks [1]. Das Update kann er selbst<br />

schreiben, schließlich stehen die meisten<br />

Controller unter Open-Source-Lizenzen.<br />

Doch wie findet er heraus, ob seine Controller-Erweiterung<br />

auch mit der Topologie<br />

des Produktivnetzwerks harmoniert?<br />

Dumm wäre es, wenn er sie aktiviert und<br />

plötzlich das Routing oder die Firewall<br />

Amok laufen. Will er das Update zunächst<br />

ausgiebig in einer kontrollierten<br />

Umgebung testen, stößt er schnell auf<br />

Mininet [2].<br />

Sandkasten für Netzwerker<br />

Mininet braucht nur ein einziges <strong>Linux</strong>-<br />

System, um ein Netzwerk zu emulieren,<br />

das bei Bedarf Hunderte von virtuellen<br />

Switches und Hosts entfaltet. Es bildet<br />

also ein komplettes Netzwerk mitsamt<br />

angeschlossenen Computern auf einem<br />

Rechner ab, wobei die Hardware des<br />

Hosts über die maximale Anzahl an Switches<br />

und virtuellen Hosts bestimmt. Über<br />

einen Open-Flow-Controller kontrolliert<br />

und steuert der Admin dieses Testnetz<br />

dann nach Gutdünken. Doch das ist nicht<br />

alles: Die emulierten Hosts führen jedes<br />

unmodifizierte <strong>Linux</strong>-Programm aus. So<br />

prüft der Betreiber ohne Aufwand, ob<br />

und wie sich das veränderte Netzwerk<br />

auf einzelne Programme auswirkt, die in<br />

ihm laufen.<br />

Mininet testet aber nicht nur <strong>neu</strong>e Routing-<br />

und Forwarding-Regeln auf Herz<br />

und Nieren. Will ein Admin die Topologie<br />

eines realen Netzwerks verändern,<br />

kann er die Folgen bereits im Vorfeld über<br />

Mini net emulieren oder er verwendet es,<br />

um <strong>neu</strong>e <strong>Netze</strong> noch in der Planungsphase<br />

zu evaluieren.<br />

Griff in die Trickkiste<br />

Damit Mininet die große Zahl an virtuellen<br />

Switches und Hosts auf einem physikalischen<br />

Rechner nachbildet, nutzt es<br />

einige ausgefeilte Technologien, die der<br />

<strong>Linux</strong>-Kernel bereits seit einiger Zeit anbietet.<br />

Beispielsweise verzichtet Mininet<br />

auf eine vollständige Virtualisierung und<br />

emuliert virtuelle Switches und Hosts als<br />

einfache Prozesse auf einem gemeinsamen<br />

Hostsystem.<br />

Weil sich diese Prozesse aber wie individuelle,<br />

miteinander vernetzte Geräte<br />

verhalten sollen, muss der Kernel sie<br />

voneinander trennen. Hierbei machen<br />

sich die mit Version 2.2.24 eingeführten<br />

Network Namespaces [3] nützlich. Sie<br />

ermöglichen es, Prozesse mit individuellen<br />

Netzwerkschnittstellen sowie eigenen<br />

Routing- und Arp-Tabellen auszustatten.<br />

Jeder Prozess verfügt über einen eigenen<br />

Netzwerkkontext, die Kommunikation<br />

wickeln zwei Prozesse über die ihnen zugeordneten<br />

virtuellen Netzwerkschnittstellen<br />

ab.<br />

Prozesse reden allerdings nur direkt miteinander,<br />

wenn zwischen ihren Netzwerkschnittstellen<br />

eine Art virtuelles<br />

Kabel existiert. Das setzt Mininet mit<br />

den so genannten Veth Pairs um, die den<br />

Paketaustausch zwischen zwei Schnittstellen<br />

erlauben.<br />

Abbildung 1 illustriert, wie es der Kernel<br />

über die Network Namespaces ermöglicht,<br />

einen Rechner mit einem Netzwerk<br />

auszustatten, das über zahlreiche Schnittstellen<br />

verfügt. In dem dargestellten Beispiel<br />

hängen die zwei virtuellen Hosts H1<br />

und H2 an einem gemeinsamen Switch<br />

S1. Bash-Prozesse emulieren jeweils H1<br />

und H2, der Switch S1 läuft im Root Namespace,<br />

in dem auch der <strong>Linux</strong>-Kernel<br />

operiert. H1 und H2 bringen jeweils eigene<br />

Network Namespaces und eigene<br />

Netzwerkschnittstellen mit, »h1‐eth0«<br />

beziehungsweise »h2‐eth0«.<br />

Der Switch S1 verfügt nur über zwei<br />

Ports, »s1‐eth0« und »s1‐eth1«, die ihn<br />

über Veth Pair mit den entsprechenden


OF-Controller<br />

TCP<br />

»eth0«<br />

Mininet<br />

Root Namespace<br />

Softwareswitch<br />

Socket<br />

Socket<br />

»s1-eth0«<br />

»s1-eth1«<br />

»h1-eth0«<br />

Veth Pair<br />

Veth Pair<br />

»h2-eth0«<br />

Prozess 1<br />

Prozess 2<br />

H1-Namespace<br />

H2-Namespace<br />

Abbildung 1: Mininet nutzt die Network Namespaces im Kernel, um auf einem Host voneinander separierte<br />

virtuelle Hosts und Switches anzulegen.<br />

Schnittstellen der Hosts verbinden. Die<br />

Kommunikation zwischen H1 und H2 erfolgt<br />

somit ausschließlich über S1.<br />

Ein Softwareswitch spielt den Paketvermittler<br />

zwischen den Schnittstellen<br />

»s1‐eth0« und »s1‐eth1«. Er läuft im Root<br />

Namespace, verwendet die physikalische<br />

Schnittstelle »eth0« und wartet auf Befehle<br />

des Open-Flow-Controllers, die ihn<br />

über das Open-Flow-Protokoll erreichen.<br />

Der Controller läuft meist außerhalb des<br />

Mininet-Hosts, oft auch auf anderen Maschinen<br />

im Netzwerk.<br />

Mininet bringt jedoch auch selbst Controller<br />

mit, die sich über das Installationsskript<br />

einspielen lassen: Nox [4],<br />

den Open-Vswitch-Controller [5] sowie<br />

den Referenz-Controller von Open Flow<br />

1.0 [6]. Die drei laufen auf derselben<br />

physikalischen Maschine wie Mininet,<br />

reden über das lokale Loopback Device<br />

mit dem Switch und lassen sich über das<br />

Mininet-CLI starten.<br />

Um den emulierten Kabeln bestimmte<br />

Eigenschaften zuzuweisen, instruiert<br />

Mininet das im <strong>Linux</strong>-Kernel verankerte<br />

Traffic-Shaping-Werkzeug »tc« (Traffic<br />

Control, [7]). Das Tool reguliert neben<br />

Tabelle 1: Unterstützte Switches<br />

Softwareswitch Open-Flow-Version Modus<br />

Referenzimplementierung 1.0 Userspace<br />

Indigo Virtual Switch 1.0 Kernelspace<br />

Open Vswitch 1.0 Kernelspace<br />

Ofsoftswitch 13 1.3 Userspace<br />

der maximalen Datenrate eines jeden<br />

emulierten Links zusätzlich dessen Paketfehlerrate<br />

und Latenz. Daneben legt der<br />

Admin über »tc« das Buffering-Verhalten<br />

der Netzwerkschnittstellen fest. Dies bestimmt<br />

darüber, wie die Schnittstellen in<br />

einer Überlastsituation mit Paketen umgehen.<br />

Hier kommen neben einem einfachen<br />

First-in-first-out-Verfahren (Fifo)<br />

auch komplexere Techniken wie Random<br />

Early Detection (RED) zum Einsatz.<br />

Open-Flow-Versionen<br />

Generell kommt Mininet mit verschiedenen<br />

Softwareswitches zurecht, die wiederum<br />

zu unterschiedlichen Versionen von<br />

Open Flow kompatibel sind. Die aktuelle<br />

Mininet-Version 2.1 liefert in der Standardinstallation<br />

native Unterstützung für<br />

den Referenzswitch von Open Flow 1.0<br />

[6], den Indigo Virtual Switch [8] sowie<br />

für Open Vswitch [9]. Die Referenzimplementierung<br />

ist ein reines Userspace-<br />

Programm, während die beiden anderen<br />

als Kernelmodule laufen und daher eine<br />

wesentlich höhere Performance bei geringerem<br />

Forwarding Delay erzielen (Tabelle<br />

1).<br />

Alle drei Switches implementieren<br />

Open<br />

Flow 1.0. Wer mit der<br />

<strong>neu</strong>en Version Open<br />

Flow 1.3.x [10] experimentieren<br />

möchte,<br />

kann den Referenz-


Titelthema<br />

www.linux-magazin.de Mininet 04/2014<br />

48<br />

Abbildung 2: Dank des Python-API lässt sich Mininet mit einer Handvoll Befehle<br />

um <strong>neu</strong>e Hosts erweitern, die der Admin auch gleich konfiguriert.<br />

switch gegen die Variante von Open Flow<br />

1.3 (»ofsoftswitch13«) austauschen. Dies<br />

klappt am einfachsten, wenn der Admin<br />

Mininet mit<br />

# mininet/util/install.sh ‐n3fx<br />

installiert. Dank der Option liefert der<br />

Netzwerkemulator eine zu Open Flow 1.3<br />

kompatible Version von Nox aus.<br />

Interaktion mit Mininet<br />

Mininet bietet ein umfangreiches Python-<br />

API [11] an, über das der Admin das gesamte<br />

Verhalten jeder einzelnen Komponente<br />

steuert. Er kann darüber die Topologie<br />

des <strong>Netze</strong>s bestimmen, beliebige<br />

Prozesse auf Hosts starten, dynamisch<br />

die Parameter einer Netzwerkschnittstelle<br />

verändern und Ports von Switches während<br />

der Emulation ab- und wieder einschalten.<br />

Um das Verhalten eines Netzwerks<br />

in einem dynamischen Umfeld zu<br />

beobachten, ermöglicht es Mininet sogar,<br />

während einer laufenden Emulation zusätzliche<br />

Switches, Hosts und Netzwerkschnittstellen<br />

zu ergänzen.<br />

Eine Besonderheit von Mininet ist der<br />

erwähnte interaktive Kommandozeilenmodus<br />

(CLI-Modus). In ihm setzt der<br />

Benutzer während einer laufenden Emulation<br />

Befehle auf Hosts ab. Zusätzlich<br />

erlaubt er es, Python-Code einzutippen<br />

und auszuführen, der etwa die Topologie<br />

des <strong>Netze</strong>s interaktiv verändert.<br />

Um zu prüfen, ob der verwendete Open-<br />

Flow-Controller mit dynamisch auftauchenden<br />

Rechnern zurecht kommt, soll<br />

das folgende Beispiel ein bestehendes<br />

Netz um einen Host »H3« erweitern:<br />

# py net.addHost("H3")<br />

<br />

Im nächsten Schritt verkabelt der Betreiber<br />

den Host mit S1<br />

# py net.addLink(net.get("S1"), net.getU<br />

("H3"))<br />

<br />

und aktiviert die <strong>neu</strong>e Schnittstelle von<br />

S1. Dafür muss er zunächst den Namen<br />

der <strong>neu</strong>en Schnittstelle herausfinden.<br />

Dies geschieht mit:<br />

# py net.get("S1").intfList()<br />

[, , ,U<br />

]<br />

Mit dem Wissen, dass der Name »s1‐eth3«<br />

lautet, darf der Mininet-Betreiber die<br />

Schnittstelle nun aktivieren:<br />

# py net.get("S1").attach("s1‐eth3")<br />

Abschließend muss der Admin noch die<br />

IP-Adresse von H3 konfigurieren:<br />

# py net.get('H3').cmd("ifconfig h3‐eth0 U<br />

10.0.0.3")<br />

Ein Ping-Test prüft zum Schluss, ob der<br />

Host H1 den <strong>neu</strong>en Host H3 erreicht. Wie<br />

Abbildung 2 zeigt, ist der Test erfolgreich.<br />

Eine ausführliche Demonstration<br />

der Mininet-Fähigkeiten zeigt der Open-<br />

Flow-Artikel in diesem Schwerpunkt.<br />

Fazit<br />

Mininet eignet sich hervorragend, um automatische<br />

Netzwerkexperimente unter<br />

realitätsnahen Bedingungen umzusetzen.<br />

Der CLI-Modus macht es zu einem<br />

handlichen Werkzeug für Rapid-Prototyping-Entwicklungen<br />

von Controller-<br />

Erweiterungen, zudem gibt es mit Mini<br />

Edit (Abbildung 3) auch ein GUI zum<br />

Anlegen von Netzwerken [12].<br />

Weil Mininet aber auf nur einem Rechner<br />

läuft, ist seine Leistungsfähigkeit begrenzt.<br />

Auf einem i7-Prozessor mit 3,2<br />

GHz Taktrate schafft Mininet zum Beispiel<br />

einen Gesamtdatendurchsatz von<br />

höchstens 2,3 GBit pro Sekunde. Wer<br />

Abbildung 3: Wer will, kann sein Testnetz auch mit Hilfe einer grafischen Oberfläche<br />

entwerfen, die Software heißt Mini Edit.<br />

ein Netz mit höherem Datenaufkommen<br />

emulieren möchte, kann auf mein Projekt<br />

Maxinet [13] zurückgreifen, das Mininet<br />

auf mehrere physikalische Rechner verteilt.<br />

(kki)<br />

n<br />

Infos<br />

[1] Mininet-Webseite: [http:// mininet. org]<br />

[2] Heimat von Open Flow:<br />

[https:// www. opennetworking. org]<br />

[3] Network Namespaces:<br />

[http:// blog. scottlowe. org/ 2013/ 09/ 04/<br />

introducing‐linux‐network‐namespaces/]<br />

[4] Nox-Controller: [http:// www. noxrepo. org]<br />

[5] Open-Vswitch-Controller:<br />

[http:// openvswitch. org/ cgi‐bin/ ovsman.​<br />

cgi? page=utilities%2Fovs‐controller. 8]<br />

[6] Open Flow 1.0, Release Notes:<br />

[http:// archive. openflow. org/ wk/ index.​<br />

php/ OpenFlow_1. 0_release_notes]<br />

[7] Klaus Rechert, Patrick McHardy, „Vordrängler“:<br />

<strong>Linux</strong>-<strong>Magazin</strong> 02/2005, S. 28<br />

[8] Indigo Virtual Switch:<br />

[http:// www. projectfloodlight. org/​<br />

indigo‐virtual‐switch/]<br />

[9] Open Vswitch: [http:// openvswitch. org]<br />

[10] Open-Flow-Specs: [https:// www.​<br />

opennetworking. org/ sdn‐resources/​<br />

onf‐specifications/ openflow]<br />

[11] Python-API von Mininet:<br />

[http:// mininet. org/ api/ annotated. html]<br />

[12] Mini Edit: [http://gregorygee.wordpress.<br />

com/category/miniedit/]<br />

[13] Maxinet: [http:// www. cs. uni‐paderborn.​<br />

de/ ? maxinet]<br />

Der Autor<br />

Philip Wette ist Doktorand<br />

an der Universität<br />

Paderborn. Im Rahmen<br />

des Sonderforschungsbereiches<br />

901 untersucht er<br />

die Rekonfiguration von<br />

Netzwerk topologien durch Overlay-<strong>Netze</strong>.


In eigener Sache: DELUG-DVD<br />

Knoppix, Fosdem, Magnolia<br />

Einführung 04/2014 12/2010<br />

Software<br />

Auch diesen Monat bekommen die DELUG-Käufer wieder die doppelte Datenmenge zum einfachen Preis: Von<br />

der DVD bootet exklusiv Klaus Knoppers Medialinx Cebit Edition, dazu gibt’s Fosdem-Videos, ein E-Book, zwei<br />

VMs und jede Menge Software. Markus Feilner<br />

www.linux-magazin.de<br />

49<br />

Inhalt<br />

50 Knoppix 7.3<br />

Klaus Knoppers Live-Betriebssystem in<br />

der <strong>neu</strong>esten Exklusiv-Version.<br />

56 Magnolia CMS<br />

Das DELUG-Magnolia bietet attraktive<br />

Zugaben des Herstellers.<br />

58 Bitparade<br />

Software für die Durchführung und Auswertung<br />

von Online-Umfragen.<br />

66 KDE Frameworks 5<br />

Die KDE Frameworks 5 sollen Ordnung in<br />

den Bibliotheken-Wust bringen. Nebenbei<br />

profitieren mobile Geräte und der<br />

An wen der, er muss weniger installieren.<br />

72 Tooltipps<br />

Sechs Werkzeuge, die den Admin-Alltag<br />

erleichtern.<br />

Neben einem normalen <strong>Linux</strong>-<strong>Magazin</strong><br />

und dem Abonnement ohne Datenträger<br />

gibt es die DELUG-Ausgabe mit Monats-<br />

DVD, bei der die Redaktion den Datenträger<br />

nach einem speziellen Konzept<br />

zusammenstellt: In einer Art modularem<br />

System enthält er Programme<br />

und Tools,<br />

die in der jeweiligen<br />

<strong>Magazin</strong>-Ausgabe getestet<br />

und besprochen<br />

werden. Zudem gibt<br />

es nicht im Heft abgehandelte<br />

Software, die<br />

die Redaktion besonders<br />

empfiehlt, alles<br />

gebündelt unter einer<br />

HTML-Oberfläche.<br />

Knoppix<br />

Abbildung 2: Kostenlos auf der DELUG-DVD: Videos von der Fosdem. Varnish-<br />

und BSD-Entwickler Poul-Henning Kamp erläutert, wie er vorginge,<br />

hätte er die Mittel der NSA und wolle die OSS-Community untergraben.<br />

Wer die Silberscheibe<br />

bootet, landet bei der<br />

<strong>neu</strong>esten Ausgabe von Klaus Knoppers<br />

Knoppix, der Version 7.3 „Medialinx<br />

Cebit Edition“ (Abbildung 1). Das für<br />

den Betrieb ohne Festplatteninstallation<br />

konzipierte System basiert wie üblich<br />

auf Debian GNU/​<strong>Linux</strong>, genauer: aus<br />

einem Mix von Debian Stable (Wheezy)<br />

sowie Grafiktreibern und Desktop-Programmen<br />

aus Jessie.<br />

Ein eigener Artikel in<br />

der Software-Rubrik<br />

dieses Heftes beschäftigt<br />

sich explizit mit<br />

den vielen Neuerungen<br />

dieser Knoppix-<br />

Ausgabe exklusiv fürs<br />

<strong>Linux</strong>-<strong>Magazin</strong>.<br />

Videos<br />

Abbildung 1: Exklusiv beim <strong>Linux</strong>-<strong>Magazin</strong>: Die Knoppix 7.3 Medialinx Cebit<br />

Edition bringt LXDE als Desktopmanager, optional aber auch KDE und Gnome.<br />

Wer die DELUG-DVD<br />

umdreht, findet in<br />

einem HTML-Menü<br />

zahlreiche weitere<br />

Inhalte. Neben jeder<br />

Menge Software zu<br />

den Heft-Artikeln, der<br />

Bitparade und den Tooltipps gibt es auch<br />

vier Videos mit knapp vier Stunden Laufzeit<br />

aus Brüssel. Da traf sich Anfang Februar<br />

die Open-Source-Welt zur Fosdem<br />

und hatte viel zu besprechen, vom Kernel<br />

bis zur NSA-Affäre (Abbildung 2), von<br />

BSD über Wikipedia-Strategien bis hin<br />

zu Android.<br />

VM, E-Book, Software<br />

Freunde leistungsstarker Contentmanagement-Systeme<br />

greifen zum Magnolia-CMS,<br />

das der Hersteller – erweitert<br />

um schicke Funktionen – als virtuelle<br />

Maschine zur Verfügung gestellt hat.<br />

Auch dazu erläutert ein eigener Artikel<br />

in diesem Heft, was die VM kann und wie<br />

sie in Betrieb gelangt.<br />

Damit nicht genug: Passend zum Titelthema<br />

gibt es auf der DVD ein kostenloses<br />

E-Book aus dem Verlag O’Reilly:<br />

Das „Praxishandbuch VMware Sphere 5“<br />

von Ralp Göpel, dazu noch eine virtuelle<br />

Maschine mit Mininet und Whitepapers<br />

zum Netzwerkvirtualisierungs-Standard<br />

Open Flow.<br />

n


Software<br />

www.linux-magazin.de Knoppix 7.3 04/2014<br />

50<br />

Exklusiv auf der Delug-DVD: Knoppix 7.3 Medialinx Edition<br />

Ein Stick anders<br />

Klaus Knopper, seit letztem Jahr mit Professorentitel, stellt zur Cebit 2014 seine Knoppix 7.3 Medialinx Edition<br />

vor. Im Artikel gibt er gleich selbst Einblicke in Distributions-Interna und rückt die blitzgescheite Updatefunktion<br />

für USB-Sticks sowie das UEFI-Booten ins rechte Licht. Klaus Knopper<br />

© Audrius Merfeldas, 123RF.com<br />

Seit über einem Jahrzehnt erscheinen<br />

auf meine Initiative hin unter dem Namen<br />

Knoppix („Knoppers Unix System“)<br />

jährlich etwa zwei Zusammenstellungen<br />

von <strong>Linux</strong>-Software. Knoppix bootet von<br />

DVD oder USB-Flashdisk und läuft sofort<br />

fertig konfiguriert los – ohne auf einer<br />

Festplatte installiert zu sein. Die enthaltene<br />

Software eignet sich zum Arbeiten,<br />

Surfen im Internet, Spielen, Unterrichten,<br />

Lernen, Programmieren und Retten von<br />

Daten defekter Betriebssysteme.<br />

Die pünktlich zur Cebit 2014 fertig gewordene<br />

Version 7.3.0 [1] basiert wie<br />

bei Knoppix üblich aus einem Mix von<br />

Debian Stable (Wheezy) und einigen<br />

Paketen (in erster Linie Grafiktreiber<br />

und Desktop-Programme) aus Testing<br />

und Unstable (Jessie). Um möglichst<br />

viel <strong>neu</strong>e Hardware zur Mitarbeit zu bewegen,<br />

verwende ich den <strong>Linux</strong>-Kernel<br />

3.13.0 mit Cloop und AU-FS sowie Xorg<br />

7.7 Core 1.15.0.<br />

Für Systeme mit mehr als 4 GByte RAM<br />

startet mit der Bootoption »knoppix64«<br />

alternativ ein 64-Bit-Kernel (Abbildung<br />

1). Möglich werden so auch Systemreparaturen<br />

in 64-Bit-Umgebungen per<br />

Chroot. Hier eine sehr kurz gefasste Liste<br />

mit Highlights der <strong>neu</strong>en Version:<br />

n Experimentell unterstützter UEFI-Boot<br />

(32 und 64 Bit) von USB-Sticks<br />

n LXDE, der schlanke Knoppix-Standarddesktop<br />

mit dem Dateimanager<br />

Pcmanfm 1.1.2<br />

n KDE 4.8.4 (Bootoption »knoppix<br />

desktop=kde«)<br />

Knoppix-Support<br />

<strong>Linux</strong>-<strong>Magazin</strong>-Käufer, die Probleme mit der<br />

DELUG-Knoppix-DVD haben, sind nicht auf sich<br />

allein gestellt: Hat der Datenträger offensichtlich<br />

einen Transport- oder Verpackungsschaden,<br />

was ab und an leider vorkommt, genügt<br />

eine Mail an [info@linux‐magazin. de] mit einer<br />

kurzen Schilderung des Problems und Nennung<br />

n Gnome 3.8.4 (Bootoption »knoppix<br />

desktop=gnome«)<br />

n Einfacher Desktop-Export via VNC<br />

und RDP für Remote Desktop Viewing<br />

unter <strong>Linux</strong> und Windows (Abbildung<br />

2)<br />

n Smbmount-knoppix, das Such- und<br />

Mount-Utility für Samba-Netzlaufwerke<br />

n Chromium 31.0.1650.63, Iceweasel<br />

26.0 mit Adblock Plus 2.4.1 und<br />

Noscript 2.6.8.14, aktualisierter Textbrowser<br />

Elinks<br />

n Libre Office 4.1.4 und Gimp 2.8.6<br />

n Wine 1.5<br />

n Virtualbox 4.3.2 und Qemu-kvm<br />

1.7.0<br />

n Mutt-Vorlagen zur Mailkonfiguration<br />

n automatische Blattlageerkennung im<br />

Scanprogramm Adriane-ocr und Tastaturlernprogramm<br />

Karl im Adriane<br />

Audio Desktop<br />

n Auf Wunsch der <strong>Linux</strong>-<strong>Magazin</strong>-<br />

Redaktion: Adobe Reader und Flashplayer-Plugin<br />

(Abbildung 3).<br />

Die meisten anderen Programme tragen<br />

<strong>neu</strong>e Versionsnummern, nur fallen die<br />

Änderungen nicht so spektakulär aus.<br />

Teils schwierig, ...<br />

Knoppix hält Schritt mit der fortlaufenden<br />

Entwicklung von GNU/​<strong>Linux</strong>.<br />

Bibliotheken, Tools und Applikationen<br />

der Postanschrift. Wenige Tage später leistet<br />

der Verlag kostenlosen Ersatz.<br />

Bei technischen Problemen beantwortet Klaus<br />

Knopper netterweise Fragen zu Knoppix 7.3,<br />

entweder über das Kontaktformular [http://​<br />

knopper. net/ kontakt/ ? kontakt=knoppix] oder<br />

per E-Mail an [knoppix@linux‐magazin. de].


Abbildung 1: Wer auf dem Bootprompt »knoppix64« [Enter] tippt, startet<br />

statt des 32-Bit- den 64-Bit-Kernel.<br />

synchron zu halten, erweist sich immer<br />

wieder als ziemliche Herausforderung.<br />

Einige Änderungen, bei Debians Bootsystem<br />

und der Hardwareunterstützung per<br />

Udev beispielsweise, haben mir umfangreiche<br />

Recherchen bereitet. Ich musste<br />

herausfinden, was ich alles zu ändern<br />

habe, um mein System nach dem großen<br />

Update überhaupt wieder in Gang zu bekommen.<br />

... und teils erstaunlich<br />

simpel<br />

Zum Glück für mich hat sich das Design<br />

des Startvorgangs unter Knoppix, das<br />

den normalen Bootvorgang von Debian<br />

auch mit den zukünftig anstehenden<br />

Änderungen (Systemd/​Upstart) auf den<br />

Aufruf eines einzigen Skripts reduziert,<br />

als eine große Erleichterung erwiesen:<br />

»knoppix‐autoconfig« erledigt das Vorkonfigurieren<br />

des Systems in Gänze.<br />

Lediglich die Kernelunterstützung<br />

für<br />

Devtmpfs musste ich<br />

zusätzlich manuell<br />

aktivieren, um die aktualisierte<br />

Udev-Hardware-Erkennung<br />

und<br />

das Einbinden von<br />

Wechselmedien wieder<br />

zum Funktionieren<br />

zu bewegen. Der Rest<br />

des Übergangs vom<br />

alten Knoppix-Setup<br />

zum Debian-Testing-<br />

Zweig (Pre-„Jessie“)<br />

lief erstaunlich reibungsarm<br />

ab.<br />

Von Flashdisk läuft Knoppix<br />

besonders rund<br />

Heutzutage installieren die meisten Anwender<br />

Knoppix eher auf einem USB-<br />

Stick (8 GByte) als es regelmäßig von<br />

DVD zu starten, zumal viele moderne<br />

Net- und Notebooks gar kein DVD-Laufwerk<br />

mehr besitzen. Noch von DVD gestartet,<br />

zeigt Knoppix 7.3 nun ein Icon<br />

für »flash‐knoppix« (Abbildung 4), das<br />

Knoppix-nach-Flashdisk-Installationsprogramm,<br />

links oben auf dem Bildschirm<br />

an, da das Erzeugen eines bootbaren<br />

Knoppix-USB-Sticks wahrscheinlich in<br />

diesem Fall das erste ist, was man tun<br />

möchte (Abbildung 5).<br />

Obwohl die DVD-Version durch eine Sortlist<br />

schon lese-optimiert ist – sie reduziert<br />

das häufige und sehr langsame Positionieren<br />

des Laser-Lesekopfs – beschleunigt<br />

Flashmemory den Startvorgang und<br />

Abbildung 2: Im Support oder Lehrbetrieb hilfreich erweist sich Remote Desktop Viewing via VNC und RDP.


Software<br />

www.linux-magazin.de Knoppix 7.3 04/2014<br />

52<br />

Abbildung 3: Der proprietäre Adobe Reader (rechts) gehört normalerweise nicht in Knoppix, Libre Office<br />

(links) dagegen schon.<br />

das Arbeiten mit Knoppix um mindestens<br />

den Faktor fünf, sodass Startzeiten<br />

vom Laden des Kernels bis zum kompletten<br />

Desktop inklusive Compiz unter 15<br />

Sekunden möglich sind, einigermaßen<br />

moderne Computer-Hardware und ein<br />

schneller USB-Stick vorausgesetzt.<br />

Der USB-Stick ist<br />

<strong>neu</strong>erdings updatebar<br />

Eines der am häufigsten nachgefragten<br />

<strong>neu</strong>en Features war die Aktualisierbarkeit:<br />

Flash-knoppix untersucht nun das<br />

Zielmedium auf eine alte Knoppix-Installation<br />

hin und bietet an, nur das komprimierte<br />

Dateisystem und den Kernel<br />

auszutauschen, statt alles komplett <strong>neu</strong><br />

zu installieren.<br />

Da Softwarepakete, die der Anwender<br />

selbst installiert hat, mit dem <strong>neu</strong>en System<br />

inkompatibel sein könnten, gibt es<br />

eine Option, um nur die persönlichen<br />

Daten und Einstellungen in »/home/<br />

knoppix« zu behalten – oder doch alles<br />

nachträglich Installierte zu behalten (Abbildung<br />

6). Das ist was zwar meistens<br />

nicht empfehlenswert, spart aber manchmal<br />

Nacharbeit.<br />

Damit das Update auf dem USB-Stick<br />

funktioniert, muss der Benutzer bei der<br />

Knoppix-Installation für die erste Partition<br />

mehr Platz einkalkulieren, damit<br />

spätere Updates auch draufpassen – 4,5<br />

GByte sind ein guter Wert. Die beschreibbare<br />

Partition, die es seit Knoppix 7.1<br />

gibt, kann sich dann über den Rest des<br />

Sticks ziehen (Abbildung 7). Optional<br />

lassen sich auf der Datenpartition sen-<br />

sible Benutzerdaten wie Passwörter stark<br />

verschlüsseln (Abbildung 8).<br />

EFI-Besonderheiten und<br />

hybrides Booten<br />

Das Starten direkt von USB-Flashdisk<br />

ist schnell und komfortabel, da Knoppix<br />

getätigte Konfigurationsänderungen und<br />

angefallene Benutzerdateien automatisch<br />

auf die Datenpartition schreibt. Allerdings<br />

gibt es sehr alte und sehr <strong>neu</strong>e Computer,<br />

die nicht von USB booten: Bei den einen<br />

unterstützt dies das Bios nicht, bei den<br />

anderen erschwert oder verbietet EFI das<br />

Starten von externen Datenträgern.<br />

Grundsätzlich ist Knoppix auch im EFI-<br />

Modus von USB-Stick startfähig, da der<br />

Ordner »efi« auf der ersten Partition die<br />

dafür notwendigen Startdateien enthält.<br />

Ist auf dem Rechner jedoch die EFI-Firmware<br />

auf »Secure Boot« gesetzt, so ist<br />

der Start von anderen Betriebssystemen<br />

als den vom Hersteller signierten nicht<br />

erlaubt. In diesem Fall hilft die Bios-<br />

Einstellung »CSM«, die Abkürzung für<br />

„Compatibility Support Module“, sachgemäß<br />

ließe es sich eher als „Traditionell<br />

starten per Boot Record und Bootloader“<br />

übersetzen. Bei EFI-Computern sollte<br />

CSM stets vorhanden sein.<br />

Für alle Fälle, bei denen von USB-Flashdisk<br />

zu starten nicht möglich ist, enthält<br />

Knoppix 7.3 im Ordner »KNOPPIX« das<br />

ISO-Image einer gerade mal 12 MByte<br />

großen Boot-Only-CD, die der Benutzer<br />

auf einen leeren Rohling brennen und<br />

von der er den Computer in Kombination<br />

mit einem Knoppix-7.3-USB-Stick hochfahren<br />

kann. Der Bootprozess beginnt auf<br />

der CD und wechselt nach kurzer Zeit auf<br />

den USB-Stick. Der Workaround funktioniert<br />

bei den meisten Problem-PCs sehr<br />

gut, speziell bei Macs mit eingeschränkter<br />

Möglichkeit, von externen Datenträgern<br />

zu starten, selbst per EFI.<br />

Noscript sorgt für<br />

Browser-Sicherheit<br />

Nicht erst seit Ed Snowdens verdienstvollen<br />

Enthüllungen und der damit einhergehenden<br />

breiten Sensibilisierung im<br />

Jahr 2013 besitzen Sicherheit und Schutz<br />

der Privatsphäre Priorität in Knoppix’ Architektur.<br />

Firefox, der in Debian und deswegen<br />

auch in Knoppix Iceweasel heißt,<br />

ist mit dem scharfgeschalteten Noscript-<br />

Plugin [2] ausgestattet, das bis auf wenige<br />

Ausnahmen bei jeder Webseite mit<br />

Abbildung 4: Die meisten Anwender betreiben Knoppix von USB-Stick. Darum präsentiert der Desktop gleich<br />

das passende Icon.


aktiven Inhalten oder<br />

die auf Plugins oder<br />

die Hardware zugreifen<br />

will, beim Anwender<br />

um Bestätigung<br />

oder Ablehnung nachsucht.<br />

Noscript vermutet bei<br />

Javascript- oder Flash-<br />

Inhalten oder beim<br />

Start von Plugins,<br />

welche die Kamera,<br />

das Mikrofon oder<br />

andere Komponenten<br />

aktivieren, negative Auswirkungen auf<br />

die Sicherheit und Stabilität des Browsers<br />

und blendet am unteren Rand des<br />

Browsers, oberhalb des Statusbalkens,<br />

gelbe Benachrichtigungen ein. Der Benutzer<br />

soll dann entscheiden, ob er die<br />

Webseite permanent, nur für die Session<br />

oder gar nicht für aktive Inhalte freischaltet.<br />

Noscript macht zudem Banking und<br />

Bezahltransaktionen beim Einkaufen im<br />

Internet viel sicherer, da es viele Cross-<br />

Site-Scripting-Attacken erkennt und davor<br />

warnt.<br />

Beliebt, aber eigentlich<br />

unnötig: Die Firewall<br />

Erstaunlich viele Anwender fragen mich<br />

nach einer Firewall für Knoppix. Ich vermute,<br />

weil bei anderen Betriebssystemen<br />

Dienste von außen zu- und angreifbar<br />

sind, was ein Portfilter natürlich zu reglementieren<br />

versteht. Ein Standard-Knoppix<br />

ist allerdings so konfiguriert, dass es<br />

gar keine Dienste startet, die Ports nach<br />

draußen öffnen oder von dort erreichbar<br />

sind. (Außer, jemand startet Samba<br />

oder VNC, den Remote Desktop Server,<br />

aus dem Menü). Ein Portscanner, den<br />

man auf ein laufendes Knoppix-System<br />

losläss, sollte daher auch ohne Firewall<br />

keinerlei offene, angreifbare Ports feststellen.<br />

Dennoch besitzt<br />

Knoppix einen einfach<br />

zu konfigurierenden<br />

Firewall, die aus dem<br />

»Knoppix«-Menü heraus<br />

startet und drei<br />

Komplexitätsstufen<br />

von »Easy« (Abbildung<br />

9) bis »Experte«<br />

anbietet (Experten<br />

Abbildung 5: Der Flash-Installer erlaubt es, einen großen<br />

USB-Stick so umzupartitionieren, dass er neben der FAT32-<br />

eine <strong>Linux</strong>-Partition anlegt.<br />

dürfen eigene IPtables-Regeln einstellen).<br />

Für die normale <strong>Linux</strong>-Nutzung<br />

als sicherer Internetclient ist die Firewall<br />

nicht erforderlich, ja kann sogar kontraproduktiv<br />

wirken, wenn es um die<br />

Nutzung von Streaming, beispielsweise<br />

Videokonferenzen, geht, abhängig von<br />

der dafür verwendeten Software.<br />

Ohne Hintertürchen, aber<br />

eine offene Vordertür<br />

Sämtliche Benutzerzugänge in Knoppix<br />

sind übrigens gesperrt – es gibt keine<br />

Hintertüren oder Standardpasswörter,<br />

nicht einmal für den unprivilegierten<br />

Benutzeraccount »knoppix«. Daher ist<br />

ein Login auch nicht möglich. Wer einen<br />

Screenlocker startet, sperrt sich praktisch<br />

aus, da es kein gültiges Passwort zum<br />

Entsperren gibt. Daher habe ich das bei<br />

vielen anderen Distributionen übliche<br />

Absperren des Bildschirms beim Schließen<br />

des Notebook-Displays oder bei Inaktivität<br />

abgeschaltet.<br />

Der einzigen Möglichkeiten für einen Angreifer,<br />

in ein Knoppix-Sytem einzubrechen,<br />

sind, dass er sich entweder selbst<br />

davor setzt – der Benutzer »knoppix«<br />

kann per »sudo« Programme als Administrator<br />

ohne Passworteingabe starten<br />

–, oder indem er einen Remotezugang<br />

Abbildung 7: Die beschreibbare Partition darf sich<br />

über den Rest des Sticks ziehen.<br />

Abbildung 6: Beim Update kann der Anwender nur die persönlichen<br />

Daten und Einstellungen in »/home/knoppix« behalten oder alles<br />

nachträglich Installierte.<br />

per SSH oder VNC-Server startet, sodass<br />

ihm ein Zugriff über das Netzwerk möglich<br />

wird.<br />

Privatsphäre<br />

Tor (The Onion Router, [3]) ist eine<br />

Privacy-Erweiterung, welche die Privatsphäre<br />

schützen soll. Benutzer werden<br />

oft unbemerkt durch manipulierte Webseiten<br />

oder Werbeanzeigen mit Tracing-<br />

Funktion ausspioniert. Der Betreiber erfährt<br />

durch die IP-Adresse des Besuchers<br />

nicht nur dessen Internetanbieter und<br />

den Standort, sondern kann durch Kombination<br />

mit anderen gesammelte Daten<br />

ein Profil über besuchte Webseiten, gekaufte<br />

Produkte, Tätigkeit in sozialen<br />

Netzwerken und so weiter anlegen. Berechtigterweise<br />

ist nicht jeder Internetnutzer<br />

mit dieser Art Transparenz seines<br />

Alltags im Netz einverstanden.<br />

Über ein komplexes Netz von Gateways<br />

erschwert Tor IP-Adress-gestützte Sammelaktivitäten.<br />

Webseiten-Betreiber sehen<br />

nämlich nur die Adresse des Rechners,<br />

der die direkte Verbindung zur Webseite<br />

aufbaut. Bei Teilnahme am Tor-Netzwerk<br />

ist dies eine der vielen, zufälligen Exit<br />

Nodes, aber nicht die IP-Adresse des eigenen<br />

PC. Aber Vorsicht: Tor ist nicht<br />

für den sicheren Zugriff auf Dienste aus-<br />

Abbildung 8: Optional kann der Anwender seine sensiblen Daten stark<br />

verschlüsselt speichern.<br />

Knoppix 7.3 04/2014<br />

Software<br />

www.linux-magazin.de<br />

53


Software<br />

www.linux-magazin.de Knoppix 7.3 04/2014<br />

54<br />

gelegt, die einen autorisierten und authentifizierenden<br />

Zugang erfordern, wie<br />

die Anmeldung bei Webdiensten, welche<br />

Passwörter oder andere persönliche Identifikationen<br />

abfragen. Durch die vielen<br />

Zwischenstationen in Tor-Netzwerk sind<br />

trotz der ausgefeilten Technik dahinter<br />

durchaus Manipulationen möglich. Fürs<br />

Onlinebanking würde ich empfehlen, den<br />

Tor-Proxy als Ausnahme zu deaktivieren,<br />

oder gar nicht erst einzustellen.<br />

Tor lässt sich durch ein Startprogramm<br />

im Knoppix-Menü in Gang setzen. Danach<br />

muss der Benutzer einen Proxy im<br />

Webbrowser sener Wahl einrichten. Eine<br />

Ein-Klick-Aktivierung des Tor-Proxys ist<br />

in Chromium und Firefox bereits voreingestellt<br />

(Abbildung 10).<br />

PXE-Bootserver<br />

Knoppix lässt sich als Bootserver für das<br />

LAN konfigurieren. Der eignet sich beispielsweise<br />

prima als Zentralrechner für<br />

den Lehrbetrieb. Andere PCs dürfen dann<br />

den Server zum Starten benutzen und lesend<br />

von der Ferne aus auf den Knoppix-<br />

Datenträger zugreifen. Programme führen<br />

die Clients hingegen normal lokal aus.<br />

Um den Server einzurichten sucht der<br />

User im Knoppix-Menü den Eintrag<br />

»knoppix‐terminalserver«. Die Konfiguration<br />

ist sehr einfach gehalten: Im Wesentlichen<br />

muss der Benutzer nur den<br />

gewünschten IP-Bereich für die Clients<br />

angeben und gegebenenfalls abweichende<br />

Bootoptionen bestätigen. So ist<br />

es möglich, ein ganzes Klassenzimmer<br />

mit nur einem einzigen USB-Stick oder<br />

der DVD mit Knoppix zu betreiben.<br />

Abbildung 10: Chromium und Firefox haben die Tor-Proxys schon passend eingebunden.<br />

In Version 7.3 habe ich den Terminalserver<br />

etwas modifiziert, damit unabhängig<br />

vom auf dem Server selbst gestarteten<br />

Kernel stets ein 32-Bit-System für die<br />

Clients gebaut wird. (64-Bit-Hardware<br />

läuft damit natürlich ebenfalls.) Sinn<br />

der Modifikation ist es, dass die Clients<br />

grundsätzlich ohne zusätzliche Bootoptionen<br />

zur Auswahl des Kernels starten.<br />

Bootoptionen als Notnagel<br />

Normalerweise benötigt Knoppix keinerlei<br />

Bootoptionen, um die vorgefundene<br />

Hardware inklusive Grafikkarte zu erkennen<br />

und das System optimal zu konfigurieren.<br />

Mit einer zunehmenden Anzahl<br />

verschiedener Chipsätze und Kombinationen<br />

derselben erweist es aber manchmal<br />

doch als notwendig, das eine oder andere<br />

Feature oder eine einzelne Komponenten<br />

(vorübergehend) abzuschalten, um zum<br />

regulären Desktop durchzustarten.<br />

Häufige Bootoptionen nennt die Boot-<br />

Hilfe, abrufbar mit [F2] und [F3], andere<br />

sind in der Textdatei »KNOPPIX/knoppix‐cheatcodes.txt«<br />

aufgelistet. Klemmt<br />

beispielsweise der Desktop dort fest,<br />

wo eigentlich der 3-D-Windowmanager<br />

Compiz starten muss, sollten die Bootoptionen<br />

»knoppix nocomposite« oder<br />

»knoppix no3d« weiterhelfen. Die eine<br />

schaltet die Composite-Erweiterung des<br />

Grafiksubsystems ab, die andere verhindert<br />

den Compiz-Start.<br />

Ich wünsche allen <strong>Magazin</strong>-Lesern mit<br />

der <strong>neu</strong>en Version viel Freude! (jk) n<br />

Infos<br />

[1] Knoppix 7.3: [http:// knopper. net/ knoppix/​<br />

knoppix730. html]<br />

[2] Noscript: [https:// addons. mozilla. org/ de/​<br />

firefox/ addon/ noscript/]<br />

[3] Tor: [https:// www. torproject. org]<br />

[4] Audio Desktop Reference Implementation<br />

and Networking Environment: [http:// www.​<br />

knopper. net/ knoppix‐adriane/]<br />

Abbildung 9: In Knoppix gibt es eine Firewall, deren Konfiguration in Komplexitätsstufen eingeteilt ist.<br />

Der Autor<br />

Knoppix-Erfinder Klaus<br />

Knopper [knoppix@knopper.​<br />

n et] , Jahrgang 1968 und<br />

Dipl.-Ing. der Elektrotechnik,<br />

arbeitet als selbstständiger<br />

IT-Berater und Entwickler,<br />

ist Professor an der FH Kaiserslautern (Softwaretechnik<br />

und Software-Engineering) und<br />

gibt Kurse zu freier Software. Angeregt durch<br />

Erfahrungen seiner blinden Ehefrau entwickelte<br />

Knopper die in Knoppix integrierte Lösung Adriane<br />

[4], die Blinden den Umgang mit <strong>Linux</strong>-PCs<br />

vereinfacht.


Software<br />

www.linux-magazin.de Magnolia CMS 04/2014<br />

56<br />

Auf DVD: Magnolia CMS Community Edition mit exklusiven Addons<br />

CMS mit Extras<br />

Leser, die dieses <strong>Magazin</strong> als DELUG-Ausgabe mit DVD in Händen halten, dürfen sich über Magnolia CMS<br />

freuen. Zur Community Edition 5.2.2 gibt es noch interessante Extras. Mathias Huber<br />

Abbildung 1: Das Shop-Modul ist bereits integriert.<br />

Das Contentmanagement-System (CMS)<br />

Magnolia [1] ist in Java umgesetzt und<br />

verwendet Open-Source-Komponenten.<br />

Sie machen die in ihrer Community-Version<br />

unter GPL lizenzierte Software flexibel<br />

und reich an Features, was Magnolia<br />

im CMS-Wettbewerb des <strong>Linux</strong>-<strong>Magazin</strong>s<br />

unter Beweis gestellt hat [2]. Für die<br />

DELUG-Ausgabe hat der Hersteller einige<br />

attraktive Erweiterungen mit eingebaut.<br />

Fünf Zugaben<br />

01 # <br />

02 <br />

Listing 1: »/etc/security/limits.<br />

conf« (Ausschnitt)<br />

03 * soft nofile 10000<br />

04 * hard nofile 50000<br />

Als exklusive Technology-Preview ist<br />

der Tag Manager an Bord. Er erlaubt es<br />

Autoren, ohne Hilfe durch technisches<br />

Personal, Tags und Tracking-Code einzufügen.<br />

Exklusiv sind ebenfalls die REST-<br />

API-Tools auf der DVD vertreten. Dazu<br />

kommen drei Extensions, die Magnolia<br />

noch nie in ein Bündel integriert hat:<br />

Das Shop-Modul (Abbildung 1), der Social<br />

Media Hub sowie die Deadlink-App,<br />

die die ganze Website nach toten Links<br />

durchsucht. Wer Magnolia CMS ausprobieren<br />

möchte, tut<br />

das am besten mit der<br />

virtuellen Maschine,<br />

die sich auf der DVD<br />

unter »delug/vm/« befindet.<br />

Die VM eignet<br />

sich für den Start in<br />

den VMware-Produkten<br />

Play er, Server und<br />

Workstation.<br />

Da eine DVD keinen<br />

Schreibzugriff erlaubt,<br />

startet der Anwender zunächst das Skript<br />

»vmprepare.sh«, welches das Zip-Archiv<br />

»magnolia‐demo.zip« in das Verzeichnis<br />

»/tmp/magnolia‐demo/« entpackt.<br />

Um die VM im Player einzubinden,<br />

klickt er auf »Open an existing Virtual<br />

Machine« und wählt die Datei »/tmp/<br />

magnolia‐demo/magnolia‐demo.vmx«.<br />

Erscheint der Dialog »This virtual machine<br />

may have been moved or copied«,<br />

wählt er »I copied it«.<br />

Zum Login am virtualisierten <strong>Linux</strong> dient<br />

»root« mit dem Passwort »magnolia1234«.<br />

Die Weboberfläche des CMS ist unter der<br />

IP-Adresse der VM zu erreichen. Nutzernamen<br />

und Passwort für die Magnolia-<br />

Instanz lauten »superuser«.<br />

Installation<br />

Wer Magnolia auf dem eigenen <strong>Linux</strong>-<br />

Rechner installieren und betreiben<br />

möchte, kopiert das Archiv »linux magdemo‐1.0‐tomcat‐bundle.tar.gz«.<br />

Es enthält<br />

alle benötigten Komponenten inklusive<br />

des Servlet-Containers Tomcat<br />

7. Erforderlich ist lediglich eine Java-<br />

Laufzeitumgebung ab Version 6, die<br />

Redaktion hat mit Open JDK 7u gute<br />

Erfahrungen gemacht. Nach dem Entpacken<br />

wechselt der Admin ins Verzeichnis<br />

»apache‐tomcat‐7.0.47/bin/«. Dort lässt<br />

sich der Server mit folgenden Kommandos<br />

als normaler User starten:<br />

./magnolia_control.sh start && tail ‐fU<br />

../logs/catalina.out<br />

Der Befehl gibt zudem das Log auf die<br />

Konsole aus. Der erste Start kann Minuten<br />

dauern, danach ist die Startseite der<br />

Installation unter »http://localhost:8080«<br />

erreichbar. Die publizierte Website ist unter<br />

»http://localhost:8080/magnoliaPublic/«<br />

zu finden. Ist das nicht so, gibt es ein<br />

Problem mit einigen <strong>Linux</strong>-Einstellungen.<br />

Vor dessen Lösung stoppt man das Logging<br />

mit [Strg]+[C] und den Server mit<br />

»./magnolia_control.sh stop«.<br />

Magnolia CMS legt sehr viele kleine Dateien<br />

an. Mit »ulimit ‐n« prüft der Admin<br />

daher die Anzahl der erlaubten Files<br />

pro Prozess. 1024 reicht nicht aus, zum<br />

Erhöhen bearbeitet er unter modernen<br />

<strong>Linux</strong>en die Datei »/etc/security/limits.<br />

conf« und erweitert sie um Listing 1. Zusätzlich<br />

trägt er in die Datei »/etc/pam.d/<br />

common‐session« diese Zeile ein:<br />

session required pam_limits.so<br />

Danach ist ein Reboot unumgänglich [3].<br />

Außerdem ist es empfehlenswert, die maximale<br />

Heap-Größe in Java zu erhöhen.<br />

Dazu ist im Tomcat-Skript »set env.sh« der<br />

Wert von »‐Xmx512M« auf »‐Xmx1024M«<br />

zu setzen, anschließend der Tomcat-Server<br />

<strong>neu</strong> zu starten.<br />

n<br />

Infos<br />

[1] Magnolia CMS: [http:// www. magnolia‐cms.​<br />

com/ linux‐magazin]<br />

[2] Carsten Zerbst, „Blühender Content-<br />

Baum“: <strong>Linux</strong>-<strong>Magazin</strong> 11/​13, S. 28<br />

[3] Magnolia Known Issues:<br />

[http:// documentation. magnolia‐cms. com/​<br />

display/ DOCS/ Known+issues]


Software<br />

www.linux-magazin.de Bitparade 04/2014<br />

58<br />

Drei Tools für Online-Umfragen<br />

Meinung zählt<br />

Ob es um universitäre Studien, die Kundenzufriedenheit oder die politische Meinung geht – Umfragen finden<br />

zunehmend im Internet statt. Die Bitparade betreibt ebenfalls Trendforschung: Welche Tools eignen sich für<br />

Online-Umfragen und helfen bei der statistischen Auswertung am besten? Mela Eckenfels<br />

© Dusit Panyakhom, 123RF.com<br />

Umfragen sind das tägliche Brot der<br />

Marktforscher, auch Studenten, Firmen<br />

und Journalisten benötigen aktuelle Meinungsbilder.<br />

Sie befragen die Teilnehmer<br />

entweder persönlich, telefonisch, schriftlich<br />

oder online. Die Vorteile computergestützter<br />

Befragungen liegen auf der<br />

Hand: Die Software liefert nicht nur den<br />

Fragebogen per Browser aus, sondern<br />

speichert die Antworten direkt auf dem<br />

Server. Die meisten Umfragetools enthalten<br />

daher Funktionen, die bei der statistischen<br />

Auswertung helfen, Berichte und<br />

Diagramme generieren und die Daten in<br />

andere Formate exportieren.<br />

Plattformen, die Umfragesoftware hosten<br />

und ihre Tools gegen mehr oder weniger<br />

Geld zur Verfügung stellen, gibt es im<br />

Netz zuhauf. Einen Vertreter aus dieser<br />

Liga hat auch die Bitparade in den Test<br />

mit aufgenommen: Polldaddy [1]. Im Vergleich<br />

treten zwei Lösungen für den eigenen<br />

Server an, die beiden Open-Source-<br />

Programme Lime Survey [2] und Opina<br />

[3]. Hier schauten sich die Tester an,<br />

wie komfortabel Installation und Einrichtung<br />

auf einem typischen LAMP-System<br />

gelingen. Alle drei Kandidaten mussten<br />

zudem zeigen, wie sie mit den erfassten<br />

Antworten der Teilnehmer umgehen, ob<br />

es Anonymisierungsfunktionen gibt und<br />

ob die Kandidaten bei der Auswertung<br />

helfen und die Daten zur Weiterverarbeitung<br />

exportieren.<br />

E Lime Survey<br />

Der erste Testkandidat kommt aus dem<br />

Open-Source-Lager und ist kostenlos.<br />

Lime Survey [2] steht unter der GPL<br />

und fühlt sich in einer klassischen LAMP-<br />

Umgebung wohl. 2003 startete das Projekt<br />

unter dem Namen PHP Surveyor.<br />

2007 benannten die Entwickler es um<br />

und strichen das „PHP“ aus dem Namen,<br />

um Konflikte mit der PHP-Lizenz<br />

zu vermeiden.<br />

Lime Survey ist in PHP implementiert<br />

und arbeitet nicht nur mit MySQL, sondern<br />

auch mit PostgreSQL oder einer MS-<br />

SQL-Datenbank zusammen. Die deutsche<br />

Installationsanleitung [4] listet alle Sys-<br />

temvoraussetzungen auf und beschreibt<br />

neben der Einrichtung auf dem eigenen<br />

Server auch den lokalen Betrieb auf Windows-Rechnern.<br />

Zum Test diente Version<br />

2.05+ vom 4. Februar 2014.<br />

Vor dem Auspacken des Downloadpakets<br />

erzeugt der Admin eine <strong>neu</strong>e Datenbank<br />

für Lime Survey. Das »limesurvey«-Verzeichnis<br />

legt er unterhalb des Document<br />

Root vom Webserver ab. Danach passt er<br />

noch die Berechtigungen der Verzeichnisse<br />

»/limesurvey/tmp«, »/limesurvey/<br />

upload« und »/limesurvey/application/<br />

config« an und macht sie mindestens für<br />

den Besitzer und die Gruppe les-, schreibund<br />

ausführbar.<br />

Die Installation des Umfragetools stößt er<br />

danach im Browser an und ruft dazu die<br />

URL »http://example.com/limesurvey/<br />

admin« auf und folgt den Anweisungen.<br />

Im letzten Schritt legt er einen Admin-<br />

Account samt Passwort an, trägt den Seitennamen<br />

ein und entscheidet sich für<br />

eine der über 80 Sprachen.<br />

Jetzt kann sich der Administrator einloggen.<br />

Über die grünen Icons am oberen<br />

Rand konfiguriert er allgemeine Einstellungen,<br />

überprüft und sichert die Datenbank,<br />

bearbeitet die Beschriftungssets<br />

und startet den Plugin-Manager, der seit<br />

Version 2.05 dabei ist. Ein paar Erweiterungen<br />

liefern die Entwickler mit aus,<br />

solche von Drittanbietern stellt das Wiki<br />

[5] zusammen.<br />

Umfragetools<br />

Auf der DELUG-DVD dieses <strong>Magazin</strong>s<br />

befinden sich die in diesem Artikel<br />

DELUG-DVD<br />

getesteten Programme Lime Survey (Version<br />

2.05+ vom 4. Februar 2014) und Opina (Version<br />

2.7.0 vom November 2013). Die beiden<br />

Tools für Online-Umfragen laufen auf gängigen<br />

LAMP-Servern.


Hinter dem Symbol mit dem Pinsel befindet<br />

sich der Vorlageneditor, mit dem Nutzer<br />

ihren Umfragen ein schickes Design<br />

verpassen. Rund zehn fertige Looks sind<br />

dabei, die Anwender direkt im Webinterface<br />

mit einem eigenen Farbschema, Logo<br />

oder weiteren Texten versehen – HTMLund<br />

CSS-Kenntnisse vorausgesetzt. Die<br />

Lime-Survey-Webseite offeriert im Downloadbereich<br />

weitere Templates.<br />

Um eine Umfrage zu erstellen, klickt der<br />

Admin im Webinterface auf das grüne<br />

Pluszeichen rechts oben, vergibt einen<br />

Namen, trägt eine Beschreibung ein und<br />

sucht aus dem Dropdownmenü eine Sprache<br />

aus. Weitere Sprachen und Übersetzungen<br />

der Fragen arbeitet er auf Wunsch<br />

zu einem späteren Zeitpunkt ein.<br />

Lime Survey bietet Wysiwyg-Editoren,<br />

um eine Beschreibung, einen Willkommenstext<br />

oder eine Endnachricht für die<br />

Befragten zu hinterlassen. Außerdem gibt<br />

der Verwalter eine Mailadresse, eine Adresse<br />

für Rückläufer und gegebenenfalls<br />

eine Faxnummer an.<br />

Nach dem Speichern erscheint die noch<br />

leere Umfrage im Webinterface. Über<br />

das Pluszeichen neben dem Feld »Fragegruppen«<br />

erzeugt der Anwender nun<br />

mindestens eine solche Sammlung von<br />

Fragen, auf Wunsch auch mehrere. Längere<br />

Umfragen bleiben übersichtlicher,<br />

wenn sie mehrere Fragegruppen und damit<br />

Unterseiten enthalten. Lime Survey<br />

blendet am oberen Rand außerdem einen<br />

Abbildung 1: Mit einer kleinen <strong>Vorschau</strong> erleichtert Lime Survey die Auswahl des richtigen Fragetyps.<br />

Fortschrittsbalken ein, der den Teilnehmern<br />

zeigt, wie viel Prozent der Umfrage<br />

sie bereits erledigt haben.<br />

Gründlich<br />

Für jede Gruppe definiert der Verwalter<br />

als Nächstes die einzelnen Fragen, die er<br />

per Mausklick hinzufügt. Er weist ihnen<br />

dabei einen internen Code zu. Dieser ist<br />

frei wählbar, sollte aber einer gewissen<br />

Logik folgen. So bietet sich beispielsweise<br />

für die Fragen der ersten Erhebung<br />

»A001«, »A002«, »A003« an, für die der<br />

zweiten »B001«, »B002«, »B003« und so<br />

weiter. Ganz unten im Dialog befindet<br />

sich eine Schaltfläche, über die Nutzer<br />

vorhandene Fragen, Fragegruppen oder<br />

ganze Umfragen importieren.<br />

In einem Dropdownmenü sucht der Benutzer<br />

jetzt aus einem großen Sortiment<br />

einen Fragetyp aus. Gut gefällt, dass das<br />

Umfragetool eine <strong>Vorschau</strong> einblendet,<br />

sobald der Anwender mit der Maus über<br />

einem Eintrag schwebt (siehe Abbildung<br />

1). Ein Klick auf »Zeige erweiterte Einstellungen«<br />

führt für den gewählten Fragetyp<br />

zur Feinabstimmung. Der Administrator<br />

beeinflusst hierüber etwa die Anzeige,<br />

die Logik, ein Zeitlimit und die spätere<br />

statistische Auswertung. Die eigentliche<br />

Frage tippt er danach in ein Editorfenster<br />

ein, wo er sie mit multimedialen Inhalten<br />

wie Bildern oder Flash-Animationen anreichern<br />

kann.<br />

Nach dem Abspeichern der Frage geht<br />

es ans Feintuning. Icons über der Frage<br />

bearbeiten sie, blenden eine <strong>Vorschau</strong><br />

Bitparade 04/2014<br />

Software<br />

www.linux-magazin.de<br />

59


Software<br />

www.linux-magazin.de Bitparade 04/2014<br />

60<br />

ein, überprüfen die Umfragelogik, bearbeiten<br />

die Antwort-Optionen und eventuelle<br />

Vorgabewerte. Zusätzlich findet<br />

der Nutzer Buttons, um die Frage zu löschen,<br />

zu kopieren und zu exportieren.<br />

Für Letzteres benötigt Lime Survey die<br />

PHP-XML-Erweiterung. Das Symbol mit<br />

den abzweigenden Pfeilen führt zu einer<br />

Maske, in der Anwender die Bedingungen<br />

der Frage festlegen. Damit ist es möglich,<br />

Teilnehmer abhängig von den gegebenen<br />

Antworten durch die Umfrage zu leiten.<br />

In Aktion<br />

Hat der Admin alle Gruppen und Fragen<br />

eingerichtet, sollte er die Umfrage mit<br />

einem Klick auf das Zahnradsymbol links<br />

oben testen. Ist alles zur Zufriedenheit,<br />

aktiviert er sie über den kleinen grünen<br />

Pfeil neben dem roten Quadrat. Lime<br />

Survey meldet eventuell fehlende Antworten<br />

oder Optionen und weist darauf<br />

hin, dass der Admin nach dem Freigeben<br />

keine Gruppen, Fragen oder Teilfragen<br />

verändern darf. Als einziger Testkandidat<br />

schützt das Tool damit vor Datenmüll<br />

durch nachträgliche Modifikationen einer<br />

laufenden Umfrage.<br />

Im selben Dialog trifft der Verwalter Entscheidungen<br />

zum Datenschutz. Per Dropdownmenü<br />

anonymisiert er die Antworten,<br />

erlaubt oder verbietet das Aufzeichnen<br />

von Datumsstempeln, das Speichern<br />

von IP-Adressen, Referrer-URLs und der<br />

Abbildung 2: Lime Survey legt Wert auf Datenschutz und unterbindet auf<br />

Wunsch das Speichern von IPs, Timestamps und so weiter.<br />

benötigten Zeit (siehe<br />

Abbildung 2). Nach<br />

dem Sichern informiert<br />

Lime Survey darüber,<br />

dass die Umfrage nun<br />

aktiv und die Ergebnistabelle<br />

erzeugt ist.<br />

In der Voreinstellung<br />

sind alle Erhebungen<br />

öffentlich. Wer einen<br />

geschlossenen Teilnehmerkreis<br />

bevorzugt,<br />

klickt auf »Zum<br />

geschlossenen Modus<br />

umschalten« und erzeugt<br />

einen Zugangsschlüssel.<br />

Den Link zu öffentlichen<br />

Umfragen zeigt<br />

Lime Survey auf der Übersichtsseite an.<br />

Wer diesen nicht von Hand kopieren und<br />

weiterreichen möchte, der verteilt Einladungen<br />

per Mail. Eine zentral gepflegte<br />

Teilnehmerdatenbank mit einer Funktion,<br />

die automatisch Zugangsschlüssel erzeugt,<br />

sorgt für Komfort beim Versenden<br />

dieser Nachrichten. In der allgemeinen<br />

Konfiguration richtet der Admin ein, wie<br />

das Tool die elektronische Post verschickt.<br />

Neben dem internen PHP-Mailer stehen<br />

Sendmail, SMTP(-Relaying) und Qmail<br />

zur Wahl. Für SMTP gibt es optional SSL/​<br />

TLS-Verschlüsselung.<br />

Lime Survey bietet zahlreiche Exportmöglichkeiten<br />

an. Bei den Umfragen selbst<br />

speichern Anwender<br />

wahlweise die Struktur<br />

oder auch die Ergebnisse.<br />

Für Letztere<br />

stehen die Formate<br />

CSV, Excel, PDF, Word,<br />

HTML und R (Syntaxdatei<br />

und Datendatei)<br />

zur Verfügung. Hinter<br />

eigenen Icons verstecken<br />

sich zudem Exportmöglichkeiten<br />

für<br />

SPSS/​PASW.<br />

Die Umfragestruktur<br />

legt Lime Survey<br />

im eigenen LSS- und<br />

LSA-Format sowie als<br />

CSV- und Textdateien<br />

ab. Das Tool ergänzt<br />

das Ganze durch verschiedene<br />

Berichtstypen,<br />

die optional<br />

Abbildung 3: Lime Survey exportiert in viele Formate und zeichnet auch<br />

farbige Balkendiagramme, die übersichtlich die Ergebnisse präsentieren.<br />

Balkendiagramme einbinden. Während<br />

die Konkurrenz hier ziemlich einfarbig<br />

daherkommt, sorgt Lime Survey mit<br />

bunten Diagrammen für mehr Übersicht<br />

(siehe Abbildung 3).<br />

E Opina<br />

Der zweite Kandidat stammt aus der<br />

spanischen Softwareschmiede Klicap [6]<br />

und steht unter der GPLv2. Opina [3]<br />

ist kostenlos. Wer mag, der kann über<br />

die Webseite verschiedene Supportpakete<br />

zubuchen, die jährlich zwischen 500 und<br />

2500 Euro kosten. Das Umfragetool arbeitet<br />

ebenfalls mit typischen LAMP-Servern<br />

zusammen.<br />

Die Tester schauten sich Version 2.7.0<br />

(November 2013) an. Vor der Installation<br />

rüsten Benutzer zusätzlich Tomcat 6 nach<br />

und stellen sicher, dass Java 7 vorhanden<br />

ist. Außerdem erzeugen sie mit dem<br />

MySQL-Kommandozeilentool oder über<br />

ein Hilfsprogramm wie Phpmyadmin eine<br />

MySQL-Datenbank für den User »opina«<br />

und vergeben ein Passwort.<br />

Das heruntergeladene Zip-Archiv packt<br />

der Admin im Servlet-Container von Tomcat<br />

aus; auf dem Testrechner war das der<br />

Ordner »/usr/share/tomcat6/webapps«.<br />

Danach ändert er den Besitzer und die<br />

Gruppe für das Verzeichnis »opina« und<br />

die Unterverzeichnisse:<br />

chown ‐R tomcat:tomcat opina<br />

Als Nächstes greift er zum Texteditor und<br />

macht in zwei Dateien Angaben zur Datenbank<br />

und zum SMTP-Server, wie in


Abbildung 4: Per Klick auf »New« zeigt Opina alle<br />

<strong>neu</strong>n Fragetypen samt winzigen Thumbnails an.<br />

der Anleitung beschrieben [7]. Er muss<br />

mindestens den SMTP-Port eintragen.<br />

Zum Schluss startet er den Tomcat-Dienst<br />

mit diesem Aufruf:<br />

service tomcat6 start<br />

Opina ist nun über den Browser unter<br />

»http://example.com:8080/opina« erreichbar.<br />

Der voreingestellte Admin-Account<br />

hat den Benutzernamen »hello@<br />

opinahq.com« und das Passwort »opina«.<br />

Eine Möglichkeit, die Mailadresse und<br />

das Kennwort über das Webinterface<br />

zu ändern, sucht man vergeblich. Verwalter<br />

sollten daher unbedingt einen<br />

<strong>neu</strong>en Administratorzugang anlegen. Im<br />

Dashboard besuchen sie dazu den Reiter<br />

»Users« und fügen dem Nutzer in jedem<br />

Fall beide Standardrollen (»Administrator«<br />

und »User«) hinzu.<br />

Die Aktivierungsmail spricht Spanisch<br />

und der Link ist unvollständig. Anwender<br />

kopieren die mitgeschickte Zeichenkette,<br />

die mit »/s/register« beginnt, fügen sie<br />

hinter die Opina-URL (»http://example.<br />

com:8080/opina«) ein und setzen dann<br />

ein Passwort. Danach können sie den<br />

Standard-Admin-Account entfernen.<br />

Spanische Inquisition<br />

Über den Menüpunkt »Settings« legt der<br />

Administrator die Zeitzone und die Sprache<br />

fest. Derzeit stehen nur Spanisch und<br />

Englisch zur Auswahl, wobei die englische<br />

Übersetzung den Testern ebenfalls<br />

oft recht spanisch vorkam. Zwei weitere<br />

Optionen im Einrichtungsdialog verbinden<br />

das Programm auf Wunsch mit den<br />

Cloud-Adressverwaltungen Highrise und<br />

Zyncro. Opina wirkt auf den ersten Blick<br />

deutlich übersichtlicher als die Konkurrenz,<br />

erkauft sich dies aber mit einem<br />

geringeren Funktionsumfang. Über »New<br />

survey« im Dashboard geht’s mit der ersten<br />

Umfrage los.<br />

In einer Eingabemaske gibt der Verwalter<br />

den Namen und eine kurze Beschreibung<br />

für die Umfrage ein. Danach öffnet<br />

sich ein <strong>neu</strong>er Reiter, und in der unteren<br />

Hälfte erscheinen Tabs, auf denen der<br />

Benutzer die Feinabstimmung vornimmt.<br />

Unter »Questions« legt er die Fragen an,<br />

über »Design« sortiert er sie und reichert<br />

sie mit weiteren Elementen an. Auf dem<br />

Reiter »Publication« bereitet er die Umfrage<br />

auf die Veröffentlichung vor. Hinter<br />

den restlichen fünf Tabs verbergen sich<br />

die Zugriffskontrolle, die Einladungsfunktion<br />

sowie Auswertungs- und Exportmöglichkeiten.<br />

Neun Fragetypen stehen zur Auswahl,<br />

darunter Textfragen, Ja/​Nein-Fragen,<br />

Matrix fragen oder »Gradient«, was der<br />

Fünf-Punkte-Auswahl bei Lime Survey<br />

entspricht. Opina zeigt genau wie Lime<br />

Survey eine <strong>Vorschau</strong> an, die allerdings<br />

winzig klein ist (Abbildung 4).<br />

Wer die Multiple-Choice-Option wählt,<br />

entscheidet sich zunächst für den Datentyp.<br />

Opina unterscheidet zwischen Text,<br />

numerischen Werten, dem Datum, der<br />

Zeit oder der Kombination von Datum<br />

und Zeit. Für die meisten Fragen stehen<br />

Zusatzoptionen zur Verfügung, die der<br />

Anwender im Dialog über ein Pluszeichen<br />

ausklappt. Über Checkboxen definiert<br />

er außerdem, dass die Teilnehmer<br />

auch keine Antwort geben oder mehrere<br />

Punkte auswählen dürfen.<br />

Eine Möglichkeit, den einzelnen Fragen<br />

Bedingungen zuzuweisen und damit Abzweigungen<br />

in die Umfrage einzubauen,<br />

gibt es nicht. Opina-Erfassungen laufen<br />

grundsätzlich in der vom Admin festgelegten<br />

Reihenfolge ab. Auch die anderen<br />

Konfigurationsoptionen für die Fragen<br />

sind eher bescheiden. Auf dem Reiter<br />

»Design« bringt der Verwalter noch nicht<br />

freigeschaltete Umfragen ohne Antworten<br />

rudimentär in Form. Über die Pfeiltasten<br />

legt er die Reihenfolge der Fragen<br />

fest (siehe Abbildung 5). Außerdem<br />

reichert er sie optional mit zusätzlichen<br />

Text blöcken an, um Teilnehmer durch die<br />

Datenerfassung zu leiten.<br />

Über das Menü »Add« legt der Umfrage-<br />

Chef <strong>neu</strong>e Fragen und auch Gruppen an,


Software<br />

www.linux-magazin.de Bitparade 04/2014<br />

62<br />

die allerdings nicht die gleiche Funktion<br />

haben wie bei Lime Survey, sondern die<br />

Umfrage lediglich optisch in Bereiche<br />

aufteilen. Multimediale Inhalte erlaubt<br />

Opina nicht und beschränkt sich auf reinen<br />

Text. Eine Möglichkeit, die Fragen<br />

auf mehrere Seiten zu verteilen, fanden<br />

die Tester ebenfalls nicht. Das führt dazu,<br />

dass bei langen Umfragen jede Menge<br />

Scrollarbeit für die Teilnehmer ansteht.<br />

Sprachreise<br />

Auf dem Reiter »Publication« legt der Anwender<br />

vor der Veröffentlichung der Umfrage<br />

letzte Hand an. Er gibt Nachrichten<br />

für die Begrüßung und Verabschiedung,<br />

einen Header und einen Footer ein. Außerdem<br />

setzt er hier einen Titel und konfiguriert<br />

die Adresse, über welche die<br />

Umfrage erreichbar ist. Wiederholt er<br />

eine Umfrage zu einem späteren Zeitpunkt,<br />

so gibt er ihr einen <strong>neu</strong>en Titel<br />

und eine <strong>neu</strong>e URL, anstatt von vorne<br />

zu beginnen. Über das Symbol mit dem<br />

Auge öffnet der Nutzer eine <strong>Vorschau</strong> für<br />

nicht veröffentlichte Erhebungen und per<br />

Klick auf das Vorhängeschloss öffnet und<br />

schließt er Umfragen von Hand.<br />

Ein Timer für Quizfragen und Tests fehlt.<br />

Ebenso ist ein eigenes Layout nur auf<br />

Umwegen möglich. Opina liefert von<br />

Haus aus nur das Default-Theme mit,<br />

und auch eine Suche im Web förderte<br />

keine alternativen Looks zutage. Auf der<br />

Projekthomepage schreibt der Hersteller,<br />

dass er auf Wunsch Themes für seine<br />

Kunden entwickelt. Alternativ bearbei-<br />

Abbildung 6: Den Verlauf einer Umfrage sowie detaillierte Angaben zu den Teilnehmern findet der Verwalter<br />

auf dem Reiter »Track«. Am oberen Rand konfiguriert er das Intervall zur Anzeige.<br />

ten Anwender mit CSS-Kenntnissen die<br />

Stylesheets im Verzeichnis »ui/css« auf<br />

dem Server.<br />

Das Programm bietet in der aktuellen Version<br />

keine Funktion, um echte anonyme<br />

Umfragen zu erstellen. Es protokolliert<br />

IP-Adressen und zeigt sie auf dem Reiter<br />

»Reports« an. Die Tester fanden keine<br />

Möglichkeit, dieses Verhalten zu deaktivieren.<br />

Auf dem Tab »Access Control«<br />

definieren Admins, ob eine Umfrage öffentlich<br />

oder geschlossen, mit Passwort<br />

oder Ticket zu erreichen ist. Im Feld daneben<br />

suchen sie aus den vorher angelegten<br />

Kontakten Benutzer aus, die eine<br />

Einladung per Mail erhalten.<br />

Die verschickten Nachrichten leiden an<br />

der gleichen Kinderkrankheit wie die<br />

zur Registrierung, und die URL in der<br />

E-Mail ist abgeschnitten. Auch hier hilft<br />

es, die Zeichenkette hinter die Opina-<br />

URL »http://example.com:8080/opina«<br />

zu hängen.<br />

Der zweite Kandidat bietet Datenexport<br />

nur für Ergebnisse und speichert diese<br />

als CSV- oder SPSS-Dateien. Eine Exportfunktion<br />

für die Umfrage selbst und auch<br />

Importfunktionen, mit denen Anwender<br />

fertige Erhebungen oder einzelne Fragen<br />

beziehungsweise Gruppen einlesen,<br />

suchten die Tester vergeblich.<br />

Grafische Auswertungen der Umfragen<br />

findet der Benutzer unter »Track« sowie<br />

unter »Reports«. Der erste Reiter zeichnet<br />

den Verlauf auf (siehe Abbildung 6), der<br />

zweite generiert eine Zusammenfassung<br />

mit Balkendiagrammen und erlaubt unter<br />

»Respondents« einen Einblick in die Antworten<br />

einzelner Teilnehmer.<br />

E Polldaddy<br />

Abbildung 5: Echtes Design findet auf dem gleichnamigen Reiter bei Opina nicht statt. Praktisch ist allerdings<br />

die Funktion, die Reihenfolge mit den Pfeilsymbolen anzupassen.<br />

Unter dem schönen Namen Polldaddy [1]<br />

firmiert ein kommerzieller Cloudservice<br />

des kalifornischen Unternehmens Automattic,<br />

Inc. [8], das auch Produkte wie<br />

Wordpress.com, Akismet und Gravatar<br />

entwickelt. Der dritte Kandidat bietet<br />

wie die anderen Automattic-Dienste den<br />

Zugang via Single Sign-on; die Tester<br />

nutzten ihren bestehenden Wordpress.<br />

com-Account und verknüpften diesen mit<br />

der Umfrageplattform.<br />

Ein Paket zur Installation auf dem eigenen<br />

Server gibt es nicht und alle Daten<br />

verbleiben in der Cloud. Für das eigene<br />

Wordpress-Blog empfiehlt sich zusätzlich


Abbildung 7: Polldaddy hat mehrere Umfragetypen im Angebot und versammelt nicht alles in einer einzigen<br />

Kategorie. So erstellen Anwender bequem Ratespielchen und Bewertungen.<br />

das Plugin Polldaddy Polls & Ratings [9],<br />

das mit wenigen Mausklicks einsatzbereit<br />

ist und den Polldaddy-Service über das<br />

Wordpress-Dashboard einbindet.<br />

Der Anwender hat die Wahl zwischen drei<br />

Preismodellen. Dem kostenlosen Account<br />

fehlt vor allem die Exportfunktion – ein<br />

K.-o.-Kriterium für alle, die ihre Ergebnisse<br />

statistisch auswerten möchten. Die<br />

Pro-Version kostet 200 US-Dollar pro Jahr<br />

(pro Monat rund 30 US-Dollar) und bietet<br />

neben dem Export auch bessere Filter<br />

für die Antworten, angepasste Links zur<br />

Umfrage und die Möglichkeit, den CSS-<br />

Code zu verändern. Mit dem Corporate-<br />

Account für knapp 900 US-Dollar jährlich<br />

(pro Monat rund 100 US-Dollar) dürfen<br />

bis zu zehn Mitarbeiter auf die Umfragen<br />

zugreifen, die auch unter dem eigenen<br />

Domainnamen erreichbar sind.<br />

Nach dem Login klicken Benutzer auf das<br />

Icon mit dem Zahnrad beziehungsweise<br />

auf den Avatar, um ihr Profil zu bearbeiten<br />

und die Sprache für das Webinterface<br />

zu setzen. Polldaddy bietet neben Umfragen<br />

auch Abstimmungen, Quiz und<br />

Bewertungen an (Abbildung 7). Bei Abstimmungen<br />

beantworten die Teilnehmer<br />

eine einzige Frage, ein Quiz fragt Wissen<br />

ab und wertet die Antworten aus, bei<br />

Bewertungen dürfen die Teilnehmer etwas<br />

einstufen und zwischen einem und<br />

fünf Sternchen beziehungsweise Daumen<br />

hoch oder runter vergeben.<br />

Entscheidet sich der Benutzer für die Umfrage,<br />

richtet er zunächst den Namen, den<br />

Permalink und eine Begrüßung für die<br />

Teilnehmer ein. Eine eigene Schlussmeldung<br />

gibt es nur bei den Bezahlvarianten.<br />

Weiter unten auf der Seite konfiguriert er,<br />

wann eine Umfrage als beendet gilt und<br />

ob es eine oder mehrere Rückmeldungen<br />

per Computer geben darf. Rechts daneben<br />

setzen Nutzer der kostenpflichtigen<br />

Zugänge einen Passwort- oder Captcha-<br />

Schutz und beschränken die Teilnahme<br />

auf IP- oder E-Mail-Adressen.<br />

Weiter geht es auf dem Reiter »Question<br />

Editor« mit den eigentlichen Fragen.<br />

Links stehen die unterschiedlichen Typen,<br />

die per Drag & Drop oder Klick in<br />

die Liste wandern. Hier bleiben keine<br />

Wünsche unerfüllt – lediglich an der<br />

deutschen Übersetzung einiger Schaltflächen<br />

und Feldbeschriftungen könnte ein<br />

Profi noch mal feilen (siehe Abbildung<br />

8). Polldaddy hat unter anderem Freitextantworten,<br />

Matrixfragen, Multiple-<br />

Choice- und Sortieraufgaben im Angebot.<br />

Ein Klick auf einen Eintrag öffnet<br />

die Einstellungen. Über diese wandelt<br />

der Nutzer auch eine Mehrfachauswahl<br />

in eine Einfachauswahl um, indem er<br />

die Antwortmöglichkeiten im Dropdownmenü<br />

rechts reduziert – das ist bei Lime<br />

Survey und Opina besser gelöst.<br />

Gut arrangiert<br />

Mehr Komfort als bei der Konkurrenz<br />

gibt es jedoch bei den Matrixfragen. Hier<br />

darf der Benutzer Fragen und Antworten<br />

direkt in einem Interface nebeneinander<br />

eintippen und muss nicht getrennte Eingabemasken<br />

bemühen. Polldaddy bietet<br />

ebenfalls an, die einzelnen Elemente der<br />

Matrixfragen bei jedem Durchlauf der<br />

Umfrage in zufälligen Kombinationen<br />

anzuzeigen. Dazu würfelt das Tool entweder<br />

nur die Fragen, nur die Antworten<br />

oder gleich beides durcheinander. Außerdem<br />

ist es möglich, Verzweigungen<br />

einzurichten. Diese führen wie die Bedingungen<br />

bei Lime Survey dazu, dass das<br />

Tool die Teilnehmer abhängig von ihren<br />

Antworten weiter- und umleitet.<br />

Multimediale Elemente sind mit Einschränkungen<br />

möglich. Videos binden<br />

Anwender per Link auf externe Quellen<br />

ein, Bilder (Jpeg, PNG und Gif) sowie<br />

MP3-Dateien dürfen sie direkt hochladen.<br />

Optional stehen die Medien auch in<br />

anderen Umfragen zur Verfügung, sofern<br />

Nutzer das entsprechende Häkchen beim<br />

Upload setzen. Über den Reiter »Mediathek«<br />

desselben Dialogs sind hochgeladene<br />

Bilder und MP3s erreichbar.<br />

Fragegruppen wie bei Lime Survey gibt es<br />

nicht. Polldaddy blendet am oberen Rand<br />

der Umfrage Buttons ein, über die Anwender<br />

Seiten hinzufügen, kopieren und<br />

löschen. Nicht so gut gelöst ist, dass der<br />

Anwender die Reihenfolge der Fragen nur<br />

auf den Seiten selbst umsortieren kann.<br />

Es ist nicht möglich, ein Element zu ver-<br />

Abbildung 8: Übersichtlich und vielfältig gibt sich Polldaddy. Allerdings sind die Übersetzungen teilweise<br />

nicht gelungen, so trägt der Nutzer ein Aluminium anstelle eines Minimums ein.<br />

Bitparade 04/2014<br />

Software<br />

www.linux-magazin.de<br />

63


Software<br />

www.linux-magazin.de Bitparade 04/2014<br />

64<br />

Abbildung 9: Polldaddy gewinnt den Designwettbewerb im Test. Bei den fertigen Themes dürfte für jeden<br />

Geschmack etwas dabei sein. Eingriffe in den CSS-Quellcode bieten aber nur die Bezahlvarianten.<br />

schieben. Wer nicht ganz aufmerksam<br />

arbeitet, braucht viel Geduld und etliche<br />

Mausklicks, bis alles passt.<br />

Der Reiter »Survey Style« verpasst der<br />

Polldaddy-Umfrage den richtigen Look.<br />

16 fertige Themes sind für alle Accounttypen<br />

vorhanden, eine <strong>Vorschau</strong> verrät,<br />

wie die fertige Präsentation aussieht<br />

(Abbildung 9). Dem Inhaber eines Bezahlkontos<br />

ist es zudem möglich, das<br />

Layout individuell zu gestalten und direkt<br />

in den CSS-Code einzugreifen. In<br />

der kostenfreien Version darf der Nutzer<br />

immerhin aus 18 verschiedenen Schriftarten<br />

aussuchen.<br />

Schaulustig<br />

Benutzer, die eine deutsche Umfrage<br />

mit Polldaddy gestalten, sollten sich<br />

unbedingt dem Reiter »Edit Language«<br />

widmen. Einige der Übersetzungen sind<br />

unvollständig oder falsch. In den Feldern<br />

auf der rechten Seite bringen Anwender<br />

ihre eigenen Formulierungen unter. Sie<br />

sollten abschließend nicht vergessen, die<br />

Modifikationen abzuspeichern, damit sie<br />

bei der nächsten Umfrage auf das eigene<br />

Sprachpaket zugreifen können.<br />

Oben rechts unter »Antworten sammeln«<br />

findet der Nutzer Funktionen, um die<br />

Umfrage zu verbreiten. Hier erfährt er<br />

den Link oder macht seine Erhebung<br />

per Facebook oder Twitter bekannt. Polldaddy<br />

generiert sogar QR-Codes in fünf<br />

verschiedenen Größen. Das Tool verwaltet<br />

E-Mail-Listen der Teilnehmer und verschickt<br />

Einladungen. Außerdem bietet die<br />

Software fertigen Quellcode an, um die<br />

Umfrage in eine Webseite inline oder per<br />

Popup einzubinden. Wordpress-Nutzer<br />

verwenden am besten den angegebenen<br />

Shortcode.<br />

Als Cloudservice, der auf Servern in den<br />

USA gehostet wird, eignet sich Polldaddy<br />

nicht für vertrauliche Umfragen. Anonymität<br />

ist nicht garantiert, der Anwender<br />

kann nicht prüfen, welche Daten der<br />

Anbieter sammelt. In den Ergebnissen<br />

tauchen zudem die IP-Adressen der Teilnehmer<br />

auf.<br />

Über den Reiter »Ergebnisse« erreichen<br />

Benutzer die grafische Auswertung und<br />

die Export-Optionen. Erstere kann er<br />

auch als PDF-Dokument herunterladen.<br />

Die Funktion versteckt sich wenig intuitiv<br />

hinter dem Menüpunkt »CSV exportieren«.<br />

Für Resultate von Multiple-Choice-<br />

Fragen zeichnet Polldaddy Balkendiagramme,<br />

für Matrixfragen farbige Tabellen,<br />

für die Textfragen blendet das Tool<br />

die vollständigen Antworten ein. Beim<br />

Datenexport wählen Nutzer zwischen<br />

CSV-, XML- oder Excel-Dateien. Alternativ<br />

schickt Polldaddy als einziger Testkandidat<br />

die Ergebnisse direkt zu Google<br />

Docs und erzeugt ein <strong>neu</strong>es Spreadsheet.<br />

Anders als Lime Survey und Opina generiert<br />

Polldaddy keine SPSS-Dateien.<br />

Ausgefragt<br />

Wenn es um die Geschwindigkeit beim<br />

Zusammenklicken von Umfragen geht,<br />

gewinnt Opina ganz knapp vor Polldaddy.<br />

Während die aufgeräumte Administrationsoberfläche<br />

des freien Programms<br />

gefällt, enttäuscht das Gesamtbild. Fehlende<br />

Konfigurationsmöglichkeiten, nicht<br />

vorhandene Dokumentation und schlecht<br />

bis gar nicht übersetzte Funktionen sorgen<br />

für administrativen Blindflug. Zudem<br />

ist es ärgerlich, dass die Aktivierungslinks<br />

in den vom System verschickten<br />

Mails nicht vollständig sind.<br />

Polldaddy bietet als einziger Kandidat<br />

keinen Schutz vor nachträglichen Änderungen,<br />

auf diese Weise gehen bereits<br />

eingegebene Antworten verloren, wenn<br />

der Admin laufende Umfragen ändert.<br />

Anwender, die mit Wordpress bloggen<br />

und ab und zu die Meinung ihrer Leser<br />

erforschen möchten, finden im Cloudservice<br />

aber ein handliches und übersichtliches<br />

Tool, das von Haus aus prima<br />

mit der Blogsoftware zusammenarbeitet.<br />

Eine wissenschaftliche Umfrage und sensible<br />

Themen sollten Nutzer jedoch mit<br />

einem der beiden anderen Kandidaten<br />

durchführen, weil Datenschutz nicht gewährleistet<br />

ist.<br />

Als klaren Sieger küren die Tester Lime<br />

Survey. Das Programm bietet den größten<br />

Funktionsumfang und die besten Sicherheits-<br />

und Anonymisierungsmaßnahmen.<br />

Obwohl sich Einsteiger in der Administrationsoberfläche<br />

verlaufen, kann sich<br />

die Benutzerfreundlichkeit immer noch<br />

sehen lassen. Nachbesserungsbedarf gibt<br />

es lediglich bei den Themes. Die mitgelieferten<br />

Layoutvorschläge wirken recht<br />

altbacken. Komplexere Umfragen erfordern<br />

etwas Einarbeitungszeit, wobei die<br />

umfangreiche Dokumentation hilft. Lime<br />

Survey ist zudem die einzige Software im<br />

Test, die es den Teilnehmern erlaubt, eine<br />

begonnene Umfrage zwischenzuspeichern<br />

und zu einem späteren Zeitpunkt<br />

zu beenden. (hej) <br />

n<br />

Infos<br />

[1] Polldaddy: [http:// polldaddy. com]<br />

[2] Lime Survey: [http:// www. limesurvey. org]<br />

[3] Opina: [http:// opinahq. com]<br />

[4] Lime Survey installieren: [http:// manual.​<br />

limesurvey. org/ Installation/ de]<br />

[5] Lime-Survey-Plugins von Drittanbietern:<br />

[http:// manual. limesurvey. org/ Available_<br />

third_party_plugins]<br />

[6] Klicap: [http:// klicap. es]<br />

[7] Opina-Installation:<br />

[https:// opinahq. zendesk. com/ entries/​<br />

28310706‐Installation‐Guide]<br />

[8] Automattic, Inc.: [http:// automattic. com]<br />

[9] Polldaddy Polls & Ratings:<br />

[http:// wordpress. org/ plugins/ polldaddy]


Software<br />

www.linux-magazin.de KDE Frameworks 04/2014<br />

66<br />

Die KDE Frameworks 5 stehen kurz vor der Fertigstellung<br />

Virtuos geschichtet<br />

Seit fast drei Jahren arbeiten bis zu 20 Entwickler an einer generalüberholten Fassung der KDE-Bibliotheken.<br />

Das Ergebnis erschien Anfang Februar in einer ersten Alphaversion mit vielen Neuerungen. Tim Schürmann<br />

© Jennifer Swann, 123RF.com<br />

noch um eine wohldefinierte Aufgabe.<br />

Programmierer sollten sich einzelne Bibliotheken<br />

herauspicken und nutzen<br />

können, ohne gleich die restlichen KDE-<br />

Bibliotheken einbinden und später an<br />

die Nutzer mitliefern zu müssten. Wer<br />

beispielsweise mit Zip-Archiven hantiert,<br />

bindet nur noch »KArchive« ein.<br />

Besonderen Wert haben die Entwickler<br />

auf die Plattformunabhängigkeit gelegt:<br />

Die Bibliotheken sollen nicht nur auf<br />

<strong>Linux</strong>-PCs laufen, sondern sich möglichst<br />

einfach auch auf anderen Geräten<br />

wiederverwenden lassen. Die KDE-<br />

Entwickler haben dabei natürlich primär<br />

Smartphones und Tablets im Auge, aber<br />

auch die Windows-Plattform.<br />

Geschenke von außen<br />

Die KDE-Bibliotheken fassen Funktionen<br />

und Aufgaben zusammen, die für<br />

verschiedene KDE-Anwendungen nötig<br />

sein können. So kümmert sich beispielsweise<br />

»KArchive« um das Packen und<br />

Entpacken von Archiven, während die<br />

»Solid«-Bibliothek Informationen über<br />

die Hardware liefert, etwa den Batterieund<br />

Netzwerkstatus. Diese Bibliotheken<br />

sind jedoch im Laufe der Zeit recht pragmatisch<br />

entstanden und gewachsen. In<br />

der Folge kamen daher viele Abhängigkeiten<br />

untereinander und von anderen<br />

Libraries hinzu.<br />

Das wiederum brachte gehörigen Overhead<br />

mit sich: Will ein Programmierer<br />

nur eine einzelne Funktion nutzen, muss<br />

er trotzdem gleich mehrere Bibliotheken<br />

einbinden. Obendrein stellen die KDE-<br />

Entwickler alle Bibliotheken gemeinsam<br />

als dickes Paket bereit, Anwender<br />

mussten diese »Kdelibs« immer komplett<br />

installieren. Außerdem sind die Bibliotheken<br />

auch noch auf klassische Desktop-Anwendungen<br />

zugeschnitten, was<br />

wiederum den Einsatz auf Mobilgeräten<br />

erschwert. Diese Situation hat sich bis<br />

heute nicht wesentlich geändert, alle Bibliotheken<br />

firmieren lediglich unter dem<br />

<strong>neu</strong>en Namen KDE Platform 4 [1].<br />

Abspeckkur<br />

Es musste sich also dringend etwas ändern.<br />

Auf dem Entwicklertreffen Platform<br />

11 in Randa (Abbildung 1) setzten sich<br />

daher einige KDE-Programmierer zusammen<br />

und arbeiteten einen Plan für die<br />

nächste Fassung der KDE-Bibliotheken<br />

aus. Das war gleichzeitig der Startschuss<br />

für die mittlerweile fast dreijährige Entwicklungszeit<br />

[2].<br />

Als Erstes haben die KDE-Entwickler alle<br />

Bibliotheken entschlackt und vor allem<br />

die Abhängigkeiten untereinander reduziert.<br />

Jede Bibliothek kümmert sich nur<br />

Ende 2011 führte Qt das Open Governance<br />

Model ein [3]. Dies ermöglichte<br />

es den KDE-Entwicklern, sowohl aktiv<br />

bei der Entwicklung von Qt mitzuhelfen<br />

als auch Code aus den KDE-Bibliotheken<br />

in das Qt-Projekt einfließen zu lassen.<br />

Letzteres hat gleich zwei Vorteile: Qt-Programmierer<br />

profitieren von den zusätzlichen<br />

Funktionen, während umgekehrt<br />

die KDE-Bibliotheken schrumpfen und<br />

sich ihre Abhängigkeiten untereinander<br />

verringern. Ein KDE-Programm kann<br />

jetzt viel häufiger direkt auf Qt aufbauen<br />

und muss nicht noch eine KDE-Bibliothek<br />

einbinden.<br />

Als Paradebeispiel nennt Jos Poortvliet<br />

(Abbildung 2), Leiter des KDE-Marketing-Teams,<br />

in einem seiner Blogbeiträge<br />

den Code für die Zeitzonen [4]: Nachdem<br />

dieser aus den KDE-Bibliotheken in<br />

die Klasse »QDateTime« gewandert ist,<br />

können insbesondere die Bibliotheken<br />

für das Personal Information Management<br />

direkt Qt nutzen. Das machte wie-


derum auf einen Schlag die Bibliotheken<br />

»KDateTime«, »KTimeZone« und »KLocale«<br />

überflüssig.<br />

Aufgrund dieser massiven Vorteile haben<br />

die KDE-Entwickler ihre Bibliotheken<br />

nach Quelltext untersucht, der sich für<br />

eine Integration in Qt eignen könnte. Den<br />

so identifizierten Code überarbeiteten sie<br />

vor der Übergabe gründlich und prüften<br />

ihn mit <strong>neu</strong>en Tests. Dass da viel Arbeit<br />

drinsteckt, zeigt eine lange Liste mit den<br />

Beiträgen der KDE-Macher zu Qt im KDE-<br />

Community-Wiki [5]. Der Austausch von<br />

Code zwischen KDE und Qt läuft weiter,<br />

die KDE-Entwickler dürften also auch in<br />

Zukunft maßgeblich bei der Weiterentwicklung<br />

von Qt mithelfen – und davon<br />

profitieren.<br />

Abbildung 2: Open Suses Community-Manager Jos Poortvliet – hier bei einem Vortrag in Thessaloniki – ist<br />

zugleich Mitglied des KDE-Marketing-Teams und bloggt gerne über die kommenden Frameworks.<br />

© Markus Feilner<br />

KDE Frameworks 04/2014<br />

Software<br />

www.linux-magazin.de<br />

67<br />

Zusammen mit Qt<br />

Wie die Zusammenarbeit abläuft, verriet<br />

KDE-Entwickler Aleix Pol im Gespräch<br />

mit dem <strong>Linux</strong>-<strong>Magazin</strong>: „Erst einmal<br />

werden wir die KDE-Anwendungen in<br />

eine Wayland-freundliche Umgebung<br />

bringen müssen." Auch wenn die Anstrengungen<br />

dazu bereits vor Jahren begannen,<br />

müsse man hier weiterhin auf<br />

gute Zusammenarbeit achten. „Darüber<br />

hinaus betrachten wir uns nicht mehr als<br />

auf Qt basierend, sondern denken, dass<br />

die Qt-Frameworks Teil unseres Stacks<br />

sind. Wenn uns also etwas an Qt stört,<br />

versuchen wir das Beste, um diese Situation<br />

zu verbessern. Das war erst durch<br />

das Open-Governance-Modell möglich.<br />

Das ist auch der Grund, warum es nicht<br />

schon früher passiert ist. In Zukunft<br />

erwarten wir sowohl Bugfixes als auch<br />

spürbare Performance-Verbesserungen.“<br />

Trotz des Code-Austausches gibt es nach<br />

wie vor einige KDE-Bibliotheken, die direkt<br />

auf Qt aufsetzen und ein paar dort<br />

vermisste Funktionen ergänzen. Bei solchen<br />

Bibliotheken sprechen die KDE-Entwickler<br />

auch von Qt-Addons (oder von<br />

„Drop-in Qt Addon Libraries“). Diesen<br />

Begriff haben sie jedoch selbst erfunden,<br />

es handelt sich nicht um Plugins im klassischen<br />

Sinn [6].<br />

Des Weiteren bleiben noch weit über<br />

50 KDE-Bibliotheken bestehen. Um hier<br />

zumindest die Übersicht etwas zu verbessern,<br />

fassen die KDE-Entwickler ihre<br />

Bibliotheken noch einmal zu Frameworks<br />

zusammen. Jedes Framework besteht aus<br />

einer oder mehreren Bibliotheken [2].<br />

Aufgrund dieser Neueinteilung haben<br />

sich die Verantwortlichen zudem dazu<br />

entschlossen, sämtliche Bibliotheken unter<br />

dem Namen KDE Frameworks 5 weiterzuentwickeln.<br />

Die KDE Frameworks<br />

5 ersetzen somit die alte KDE Platform<br />

4. Dabei ist unbedingt der Plural (also<br />

Frameworks) zu verwenden. Wer ihn vergisst,<br />

wird verbal geteert und gefedert, so<br />

wie der Autor dieses Artikels zu Beginn<br />

der Recherche.<br />

Drei Kategorien: Funktion,<br />

Integration und Solution<br />

Alle Frameworks sortieren die Macher<br />

in drei Kategorien [7]: Die so genannten<br />

Functional Frameworks (in einigen Dokumenten<br />

auch als Functional Elements<br />

bezeichnet) weisen keine weiteren Abhängigkeiten<br />

auf, sie sind also vollkommen<br />

unabhängig nutzbar. In diese Kategorie<br />

fällt beispielsweise »KArchive«,<br />

das sich exklusiv um das Komprimieren<br />

und Dekomprimieren von Archiven kümmert.<br />

Die Integration Frameworks (oder<br />

Integration Elements) können hingegen<br />

© KDE-Projekt<br />

Abbildung 1: Im Jahre 2011 trafen sich KDE-Entwickler im schweizerischen Randa, um die KDE-Libraries zu entwirren.


Software<br />

www.linux-magazin.de KDE Frameworks 04/2014<br />

68<br />

Abbildung 3: In den Einstellungsmenüs des Dateimanagers Dolphin finden<br />

sich viele KIO-Slaves, also Dienste, die Datei-Operationen vereinfachen.<br />

weitere Abhängigkeiten besitzen und<br />

insbesondere über weitere Bibliotheken<br />

auf die gerade verwendete Plattform beziehungsweise<br />

das Betriebssystem zugreifen.<br />

Beispielsweise liefert das Solid-<br />

Framework Informationen über die verwendete<br />

Hardware, wozu es auf einigen<br />

Betriebssystemen weitere Komponenten<br />

und Bibliotheken heranzieht.<br />

Die Solution Frameworks benötigen<br />

zwingend weitere Bibliotheken, um ihre<br />

jeweilige Aufgabe erfüllen<br />

zu können. Ein<br />

Beispiel ist KIO (KDE<br />

Input/​Output, [8]),<br />

das den transparenten<br />

Zugriff auf Dateien in<br />

einem Netzwerk realisiert.<br />

Dazu greift KIO<br />

wiederum auf die Hilfe<br />

des Kioslave-Daemon<br />

zurück (Abbildung<br />

3). Das KDE-Wiki<br />

bezeichnet diese drei<br />

Kategorien als Typen,<br />

der offiziellen Sprechweise<br />

zufolge „hat das<br />

Framework Solid den<br />

Typ Integration“.<br />

Etagen<br />

Einige Frameworks lassen<br />

sich bei ihrer Arbeit<br />

von gleich mehreren Kollegen helfen.<br />

Damit Programmierer schnell abschätzen<br />

können, wie komplex die Abhängigkeiten<br />

sind, teilen die KDE-Entwickler die<br />

Frameworks zusätzlich noch in drei Tiers<br />

(Schichten) ein (Abbildung 4):<br />

n Ein Framework gehört zum Tier 1,<br />

wenn es kein anderes KDE-Framework<br />

nutzt, plattformunabhängig ist und<br />

sich lediglich auf System- sowie die<br />

offiziellen Qt-Bibliotheken stützt. Dies<br />

trifft beispielsweise auf das Framework<br />

»KArchive« oder die Rechtschreibkorrektur<br />

Sonnet zu.<br />

n Ein Tier-2-Framework hängt nur von<br />

Tier-1-Frameworks sowie System- und<br />

den offiziellen Qt-Bibliotheken ab. Ein<br />

Beispiel wäre das Framework »KDoctools«,<br />

das auf die Dienste von »KArchive«<br />

zurückgreift.<br />

n Tier-3-Frameworks wiederum dürfen<br />

beliebige andere Frameworks einspannen<br />

sowie natürlich System- und die<br />

offiziellen Qt-Bibliotheken nutzen.<br />

Zu den Tier-3-Frameworks zählt beispielsweise<br />

KIO, das die »KDoctools«<br />

benötigt.<br />

Interessiert sich ein Entwickler für ein<br />

KDE-Framework und gehört dieses zu<br />

Tier 1, so muss er sich folglich um die<br />

Abhängigkeiten keine großen Gedanken<br />

machen. Gehört das Framework jedoch<br />

zu Tier 3, muss der Programmierer noch<br />

weitere Frameworks zusätzlich einbinden,<br />

die auch noch in einem recht komplizierten<br />

Verhältnis zueinander stehen<br />

können.<br />

In aktuellen Präsentationen der KDE-<br />

Entwickler taucht sogar noch eine vierte<br />

Schicht (Tier 4) auf, deren Frameworks<br />

ebenfalls von Tier-1-, Tier-2- und Tier-<br />

3-Frameworks abhängen dürfen. Den<br />

Unterschied zu Tier 3 erläutert Aleix Pol:<br />

„In Tier 4 finden sich Dinge, die nichts<br />

außerhalb des KDE-Workspace benutzen<br />

© Aurélien Gâteau<br />

Abbildung 4: Die Frameworks 5 gruppieren die vielen KDE-Bibliotheken mit ihren unübersichtlichen Abhängigkeiten in vier Tiers. Ganz unten liegt Tier 1 mit Basis-<br />

Bibliotheken wie Kcodecs, darüber Tier 2 mit Kauth, Kcrash und anderen, links daneben findet sich Tier 3 mit beispielsweise Ktexteditorplugin oder Kdesignerplugin.<br />

Und über allem thront Tier 4 mit Kde4support, Frameworkintegration, Kfileaudiopreview und Khtml. Die Linien zeigen: Es gibt Unmengen an Abhängigkeiten.


oder interessieren sollten. Dort finden<br />

sich beispielsweise:<br />

n Die Integration mit dem KDE-Workspace,<br />

verschmilzt möglicherweise<br />

irgendwann mit den Workspaces.<br />

n Die Kde4support-Bibliotheken, die andere<br />

Anwendungen während ihrer Portierung<br />

nutzen – aber nicht länger.<br />

n Die Kcmutils, ein Modul, das verwendet<br />

wird, um unsere Systemsettings<br />

zu erstellen.<br />

n Khtml, das wohl durch »QtWebKit«<br />

ersetzt wird – es ist groß und kaum<br />

gewartet.“<br />

Insgesamt bietet sich so ein recht komplexes<br />

Bild, das die Entwickler durch die<br />

Zuordnung von vier Tiers zu entwirren<br />

versuchen.<br />

im Unterverzeichnis »tests« beiliegen.<br />

Abschließend haben alle Frameworks das<br />

Framework-Buildsystem zu verwenden,<br />

das unter anderem Cmake vorschreibt.<br />

Inqlude<br />

Auf der Website Inqlude [12] sammeln<br />

die KDE-Entwickler neben ihren KDE<br />

Frameworks auch weitere Bibliotheken,<br />

die auf Qt aufbauen. Sie wollen so ein<br />

Verzeichnis schaffen, in dem Qt-Programmierer<br />

nach fertigen Komponenten für<br />

ihre Anwendungen suchen können (Abbildung<br />

5). Inqlude befindet sich derzeit<br />

Anzeige<br />

noch im Aufbau. Ungewiss ist auch, ob<br />

die Qt-Gemeinde das Verzeichnis annehmen<br />

wird.<br />

Das KDE-Team hat die Releasezyklen der<br />

Plasma Workspaces (also des eigentlichen<br />

Desktops), der Frameworks und<br />

der An wendungen entkoppelt [13]. Die<br />

genannten Teile sollen sogar Releases<br />

überspringen dürfen, wenn die zuständigen<br />

Programmierer eine längere Entwicklungszeit<br />

benötigen. Das soll besonders<br />

beim Portieren von Anwendungen auf die<br />

KDE Frameworks 5 helfen.<br />

Die erste Betaversion der KDE Frameworks<br />

5 wird nach den derzeitigen Plä-<br />

KDE Frameworks 04/2014<br />

Software<br />

www.linux-magazin.de<br />

69<br />

Geschäftsbedingungen<br />

Die Überarbeitung der KDE-Bibliotheken<br />

dauert schon fast drei Jahre an. Beteiligt<br />

sind ungefähr 20 Programmierer,<br />

darunter sowohl bezahlte Vollzeit-Entwickler<br />

als auch freiwillige Helfer [6].<br />

Und die haben ganze Arbeit geleistet:<br />

Die Frameworks 5 bestanden zum Redaktionsschluss<br />

aus über 50 einzelnen<br />

Frameworks, darunter 19 Qt-Addons,<br />

die außer zu Qt keine weiteren Abhängigkeiten<br />

aufweisen, <strong>neu</strong>n die ihrerseits<br />

nur unabhängige Bibliotheken benötigen<br />

(Tier 2), und 31 mit komplexeren Abhängigkeiten<br />

(Tier 3 und 4).<br />

Ein aktuelles Abhängigkeitsdiagramm<br />

zeigt Abbildung 4 (siehe auch [9]), eine<br />

Liste mit allen Frameworks und den jeweiligen<br />

Maintainern bietet [10]. Die<br />

Entwicklung läuft strikt nach den vom<br />

KDE-Projekt selbst aufgestellten Frameworks<br />

Policies ab [7].<br />

Dabei folgen die Bibliotheken zunächst<br />

einem einheitlichen Code-Stil, der sich<br />

an den Gepflogenheiten des Qt-Projekts<br />

orientiert [11]. Das soll vor allem Qt-<br />

Programmierern den Einstieg und die<br />

Nutzung der Frameworks erleichtern.<br />

Zudem muss ein Framework eine ganz<br />

bestimmte Verzeichnisstruktur besitzen.<br />

Das Unterverzeichnis »docs« enthält etwa<br />

die Dokumentation, unter »examples«<br />

finden Programmierer Beispielcode.<br />

Um eine hohe Qualität zu garantieren,<br />

müssen Entwickler ihre Frameworks<br />

automatisierten Unit-Tests unterwerfen.<br />

Geeignete Tests müssen dem Framework


Software<br />

www.linux-magazin.de KDE Frameworks 04/2014<br />

70<br />

Abbildung 5: Die Seite Inqlude führt bereits jetzt zahlreiche interessante Bibliotheken für Qt-Programmierer<br />

auf, darunter nicht nur die des KDE-Teams.<br />

nen am 5. April 2014 erscheinen, die erste<br />

stabile Version am 1. Juni. Den aktuellen<br />

Stand aller Bibliotheken finden Interessierte<br />

im Git-Repository [14]. Die Archive<br />

auf dem KDE-Downloadserver enthielten<br />

bei Redaktionsschluss nur die bereits Anfang<br />

Januar veröffentlichte Tech-Preview<br />

[15], doch soll in den nächsten Tagen<br />

eine Alphaversion kommen. In der Preview<br />

tragen die Frameworks noch die<br />

Versionsnummer 4.95.0, die Bibliotheken<br />

basierten auf dem am 12. Dezember 2013<br />

veröffentlichten Qt 5.2.<br />

Später sollen alle überarbeiteten KDE-<br />

Bibliotheken die Versionsnummer 5 erhalten<br />

und sich neben der alten KDE<br />

Platform 4 installieren lassen [16]. Den<br />

aktuellen Entwicklungsstand verrät eine<br />

Seite im KDE-Wiki [17]. Die zu erledigenden<br />

Aufgaben bezeichnen die KDE-<br />

Entwickler darin als Epics. Eine Schrittfür-Schritt-Installationsanleitung<br />

für die<br />

Vorabversionen liefert ebenfalls das KDE-<br />

Wiki [18].<br />

Fertige Pakete von den Alphaversionen<br />

wird es laut Aleix Pol vom KDE-Projekt<br />

vorerst aber wohl nicht geben: „KDE<br />

Frameworks sind genau das, Frameworks.<br />

Ich weiß, es ist nicht aufregend,<br />

aber das geht etwas weiter als Tar-Files.<br />

Eine Alpha ist fast released und es ist zu<br />

erwarten, dass die verschiedenen Distributionen<br />

Pakete erstellen. Ich weiß, dass<br />

Kubuntu und Arch <strong>Linux</strong> bereits welche<br />

bereitstellen, bei den anderen bin ich<br />

nicht sicher. Unser Ziel ist es, die einzelnen<br />

auf Qt basierenden Projekte für die<br />

Frameworks zu interessieren, sodass sie<br />

diese nutzen können. Es ist nicht wirklich<br />

eine Enduser-Geschichte. Ich glaube,<br />

die erste Software, die die KDE Frameworks<br />

5 nutzen wird, ist die erste Alpha<br />

der Plasma Workspaces.“<br />

Fazit<br />

Die Entwickler der KDE Frameworks 5<br />

scheinen auf einem guten Weg: Die Bibliotheken<br />

werden plattformunabhängig,<br />

schlanker und modularer. Programmierer<br />

können sich zudem gezielt die Frameworks<br />

herauspicken, die ihr Programm<br />

benötigt, und müssen keinen dicken<br />

Klumpen mit ungenutzten Bibliotheken<br />

mehr ausliefern. Von der Übereignung<br />

des Quellcodes an das Qt-Projekt profitieren<br />

alle Qt- und KDE-Entwickler. Denen<br />

helfen auch die einheitlichen, an Qt<br />

angelehnten Entwicklungsrichtlinien und<br />

Werkzeuge.<br />

Allerdings bestehen die KDE Frameworks<br />

5 noch immer aus über 50 einzelnen Teilen,<br />

in denen sich Entwickler erst einmal<br />

zurechtfinden müssen. Die Einteilung in<br />

Types und Tiers verwirrt eher, als dass<br />

sie hilft – eine einfache Liste mit allen<br />

vorhandenen Bibliotheken und ihren Abhängigkeiten<br />

wäre übersichtlicher und<br />

auch aussagekräftiger.<br />

Laut Aleix Pol sprechen für diese Einteilungen<br />

jedoch zwei Gründe: „Sie half uns<br />

bei der Kommunikation und gab uns ein<br />

Bild, wohin die Dinge liefen. Darüber hinaus<br />

möchte niemand die Abhängigkeiten<br />

von KIO auflisten“ [19] (siehe auch<br />

KIO in Abbildung 3). (mfe) n<br />

Infos<br />

[1] Stuart Jarvis, „Repositioning the KDE<br />

Brand“: [http:// dot. kde. org/ 2009/ 11/ 24/​<br />

repositioning‐kde‐brand]<br />

[2] KDE-Community-Wiki – Frameworks/​Terminology:<br />

[http:// community. kde. org/​<br />

Frameworks/ Terminology]<br />

[3] Qt Governance Model: [http:// qt‐project.​<br />

org/ wiki/ The_Qt_Governance_Model]<br />

[4] Jos Poortvliet, „Qt 5.2 – Foundation for<br />

KDE Frameworks 5“:<br />

[http:// dot. kde. org/ 2013/ 12/ 17/ qt‐52‐<br />

foundation‐kde‐frameworks‐5]<br />

[5] KDE-Community-Wiki – Contributing to<br />

Qt 5 epic: [http:// community. kde. org/​<br />

Frameworks/ Epics/ Contributions_to_Qt5]<br />

[6] Jos Poortvliet, „Frameworks 5 Tech Preview“:<br />

[http:// dot. kde. org/ 2014/ 01/ 07/​<br />

frameworks‐5‐tech‐preview]<br />

[7] KDE-Community-Wiki – Frameworks/​<br />

Policies: [http:// community. kde. org/​<br />

Frameworks/ Policies]<br />

[8] KIO-API: [http:// api. kde. org/ 4. x‐api/​<br />

kdelibs‐apidocs/ kio/ html/ index. html]<br />

[9] Dependencies Graph der KDE Frameworks<br />

Version 5:<br />

[http:// agateau. com/ tmp/ kf5/ kf5. png]<br />

[10] KDE-Community-Wiki – Frameworks/​List:<br />

[http:// community. kde. org/ Frameworks/​<br />

List]<br />

[11] Jos Poortvliet, „KDE Frameworks 5: A Big<br />

Deal for Free Software“:<br />

[http:// www. linux. com/ news/ software/​<br />

applications/ 755768‐kde‐frameworks‐5‐<br />

a‐big‐deal‐for‐free‐software]<br />

[12] Inqlude: [http:// inqlude. org]<br />

[13] Howard Chan, „KDE Release Structure<br />

Evolves“: [http:// dot. kde. org/ 2013/ 09/​<br />

04/ kde‐release‐structure‐evolves]<br />

[14] Git-Repository: [https:// projects. kde. org/​<br />

projects/ frameworks]<br />

[15] Quellcode der Tech-Preview:<br />

[http:// download. kde. org/ unstable/​<br />

frameworks/ 4. 95. 0/]<br />

[16] KDE-Community-Wiki – Frameworks/​Coinstallability:<br />

[http:// community. kde. org/​<br />

Frameworks/ Coinstallability]<br />

[17] KDE-Community-Wiki – Frameworks/​Epics:<br />

[http:// community. kde. org/ Frameworks/​<br />

Epics]<br />

[18] KDE-Community-Wiki – Frameworks/​<br />

Building: [http:// community. kde. org/​<br />

Frameworks/ Building]<br />

[19] Die Abhängigkeiten von KIO:<br />

[http:// agateau. com/ tmp/ kf5/​<br />

tier3‐kio‐simplified. png]


Software<br />

www.linux-magazin.de Tooltipps 04/2014<br />

72<br />

Werkzeuge im Kurztest<br />

Tooltipps<br />

Ajenti 1.2.17<br />

Web-basiertes Adminpanel<br />

Quelle: [http:// ajenti. org]<br />

Lizenz: LGPLv3<br />

Alternativen: Webmin<br />

Uncsv 0.9.1<br />

CSV-Dateien konvertieren<br />

Quelle: [http:// tamentis. com/ projects/ uncsv]<br />

Lizenz: ISC<br />

Alternativen: keine<br />

Haveged 1.8<br />

Entropie-Daemon<br />

Quelle: [http:// www. issihosts. com/ haveged]<br />

Lizenz: GPLv3<br />

Alternativen: Timer-entropyd, Audio-Entropyd<br />

Die meisten Admins nutzen zur Fernwartung<br />

ihrer <strong>Linux</strong>-Server SSH auf der<br />

Kommandozeile. Wer eine grafische<br />

Schnittstelle bevorzugt, der sollte sich<br />

Ajenti anschauen. Das Python-Programm<br />

stellt ein komfortables Adminpanel per<br />

Webbrowser zur Verfügung. Auf der Projekt-Homepage<br />

gibt es Pakete für aktuelle<br />

Distributionen.<br />

In der Voreinstellung gelangen Nutzer<br />

über Port 8000 zum Ajenti-Dashboard.<br />

Optional läuft das Ganze über HTTPS.<br />

Das Panel zeigt den aktuellen Status an<br />

und blendet die Uptime, CPU- und RAM-<br />

Auslastung sowie die Swap-Nutzung ein.<br />

Über den linken Rand erreichen Admins<br />

allgemeine Systemeinstellungen und die<br />

installierten Dienste. Ajenti unterstützt<br />

Bind, Samba, Cron, DHCP, NFS, IPtables,<br />

MySQL, Apache und mehr.<br />

In der Abteilung »System« fragen die Benutzer<br />

den Festplattenplatz ab, inspizieren<br />

die installierten Pakete, definieren<br />

<strong>neu</strong>e Firewallregeln oder bearbeiten die<br />

Hosts-Datei. Unter »Werkzeuge« finden<br />

sie Dateimanager, einen Texteditor, einen<br />

Scheduler und einen Logviewer.<br />

Über einen eigenen Terminal-Emulator<br />

öffnet das Adminpanel sogar eine Shell<br />

auf dem Server.<br />

★★★★★ Ajenti ist eine komfortable<br />

Oberfläche für die Remote-Administration<br />

von <strong>Linux</strong>-Servern, die selbst Kommandozeilenprofis<br />

gefallen dürfte. n<br />

CSV-Dateien haben sich als gängiges<br />

Austauschformat zwischen Datenbanken<br />

und Tabellenkalkulationen etabliert.<br />

Anführungszeichen begrenzen die Felder<br />

und als Trennzeichen kommt meist das<br />

Komma zum Einsatz.<br />

Um CSV-Dateien mit anderen Programmen<br />

weiterzuverarbeiten, ist oft Handarbeit<br />

nötig. Uncsv übernimmt den Job,<br />

entfernt Escape-Sequenzen sowie Anführungszeichen<br />

und ersetzt den Feldtrenner<br />

durch Pipes. Außerdem löscht das Tool<br />

Zeilenumbrüche und -vorschübe aus den<br />

Feldern oder tauscht sie durch andere,<br />

frei wählbare Symbole aus.<br />

Mit im Paket ist das Tool Csv, das sich für<br />

den Rückweg empfiehlt. Es wechselt das<br />

Pipezeichen wieder aus und fügt Kommata<br />

ein. Bei Bedarf baut es auch Anführungszeichen<br />

und Escape-Sequenzen<br />

ein. Im Gegensatz zu Uncsv kann Csv nur<br />

Zeilen mit maximal 65 536 Zeichen verarbeiten.<br />

Die Zeilenenden selbst tasten<br />

beide Programme nicht an.<br />

Das Ergebnis können Benutzer an Programme<br />

wie Awk oder Cut weiterreichen<br />

oder mit eigenen Skripten automatisiert<br />

verarbeiten, ohne auf die Sonderbehandlung<br />

von Quotas oder anderen Sonderzeichen<br />

Rücksicht nehmen zu müssen.<br />

★★★★★ Wer CSV-Dateien ohne Nachbearbeitung<br />

an weitere Programme aushändigt,<br />

der sollte mit Uncsv und Csv<br />

experimentieren.<br />

n<br />

Zufallszahlen sind die Basis für sichere<br />

Verschlüsselung. Der Daemon Haveged<br />

sorgt mit Hilfe des Havege-Algorithmus<br />

(Hardware Volatile Entropy Gathering<br />

and Expansion) dafür, dass der Entropie-<br />

Pool groß genug ist, und zapft dazu den<br />

Prozessorzustand an. Der Dienst erfordert<br />

Rootrechte, da er seine Daten nach<br />

»/dev/random« beziehungsweise »/dev/<br />

urandom« schreibt.<br />

Will der Anwender eine eigene Datei mit<br />

Zufallswerten erzeugen, so startet er das<br />

Programm mit dem Parameter »‐r« gefolgt<br />

von der Dateigröße in KByte. Hinter »‐f«<br />

gibt er außerdem die Zieldatei an; andernfalls<br />

schreibt Haveged seine Daten<br />

ins File »sample«. In der Voreinstellung<br />

hält das Tool einen Buffer von 512 KByte<br />

mit Zufallswerten vor. Hinter der Aufrufoption<br />

»‐b« beeinflussen Benutzer<br />

diese Buffergröße.<br />

Weitere Konfigurationsparameter und<br />

Anwendungsbeispiele, zum Beispiel zum<br />

Anfertigen von Luks-Schlüsseldateien,<br />

beschreibt die umfangreiche Manpage.<br />

Haveged erhält fortlaufend <strong>neu</strong>e Features.<br />

Neuere Versionen sind sogar auf<br />

Nicht-<strong>Linux</strong>-Systemen lauffähig, enthalten<br />

einen Onlinetest und ermöglichen<br />

es, die PID-Datei an einem anderen Ort<br />

abzulegen.<br />

★★★★★ Haveged eignet sich gut dazu,<br />

komplexe Zufallszahlen auf dem eigenen<br />

<strong>Linux</strong>-System zu erzeugen. n


Software<br />

www.linux-magazin.de Tooltipps 04/2014<br />

74<br />

EDB 0.9.20<br />

Debugger für Binärdateien<br />

Quelle: [http:// codef00. com/ projects#​<br />

debugger]<br />

Lizenz: GPLv2<br />

Alternativen: GDB, Eclipse, Ccdebug<br />

Prun<br />

Jobverwaltung für Cluster<br />

Quelle: [https:// github. com/ abudnik/ prun]<br />

Lizenz: Apache<br />

Alternativen: Task Cruncher<br />

Tcpreplay 4.0.0<br />

Mitgeschnittenen TCP-Datenverkehr wiedergeben<br />

Quelle: [http:// tcpreplay. appneta. com]<br />

Lizenz: GPLv3<br />

Alternativen: Netsniff-ng, Preplay<br />

Funktioniert ein Programm nicht wie gewünscht,<br />

dann unterstützt ein Debugger<br />

bei der Fehlersuche. Kommandozeilenfans<br />

greifen unter <strong>Linux</strong> gerne zum GDB<br />

(GNU Debugger). Wer es lieber grafisch<br />

mag, der sollte Evan’s Debugger, kurz<br />

EDB, eine Chance geben. Das GUI benötigt<br />

Qt 4.6 oder <strong>neu</strong>er und geht vor allem<br />

bei der Diagnose solcher Anwendungen<br />

zur Hand, für die der Quellcode nicht zur<br />

Verfügung steht.<br />

Nachdem der Entwickler das Binärprogramm<br />

in EDB geladen hat, sieht er den<br />

Assembler-Code, eine Liste der CPU-<br />

Register und den aktuellen Inhalt des<br />

Stacks. Die Qt-Anwendung bietet zudem<br />

einen Bookmarks-Bereich, der Codezeilen<br />

präsentiert, die der Nutzer als Lesezeichen<br />

markiert hat. Zu den hier gelisteten<br />

Zeilennummern gelangt er mit einem<br />

Mausklick, um sie zu kommentieren. Im<br />

Assembler-Code setzt er Breakpoints,<br />

springt zu bestimmten Adressen oder<br />

zum Beginn einer Funktion, bearbeitet<br />

Bytes und analysiert zusammenhängende<br />

Bereiche.<br />

EDB ist modular aufgebaut, Plugins<br />

erweitern den Funktionsumfang. Der<br />

Programmierer Evan Teran hat seinem<br />

Debugger bereits zahlreiche Erweiterungen<br />

beigelegt, beispielsweise einen<br />

Breakpoint-Manager, eine Opcode-Suchfunktion<br />

und einen Heap-Analyser.<br />

Wer eigene Plugins beisteuern möchte,<br />

der sollte den Entwickler kontaktieren,<br />

da sich die Dokumentation zu diesem<br />

Thema ausschweigt.<br />

★★★★★ EDB besticht durch seine<br />

Funktionsvielfalt und die übersichtliche<br />

grafische Oberfläche. Der Debugger ist<br />

intuitiv zu bedienen.<br />

n<br />

Prun steuert als Cluster-Job-Scheduler<br />

das parallele Ausführen von Tasks auf<br />

<strong>Linux</strong>- und anderen Unix-Systemen. Das<br />

Python-Tool überwacht die Ressourcen,<br />

verteilt Prioritäten und verwaltet Warteschlangen.<br />

Es besteht aus zwei Komponenten,<br />

dem Worker und dem Master,<br />

die Hand in Hand arbeiten. Während<br />

»pworker« im Hintergrund sich um die<br />

eigentliche Ausführung des Jobs kümmert,<br />

übernimmt »pmaster« die Jobverwaltung<br />

und die Kommunikation mit<br />

dem Anwender. Letztgenanntes Tool behält<br />

den Job immer im Auge und startet<br />

ihn gegebenenfalls auf einem anderen<br />

Rechner <strong>neu</strong>, etwa wenn Hardwareprobleme<br />

auftreten.<br />

Um ein Programm als Job im Cluster zu<br />

behandeln, legt der Admin eine Steuerdatei<br />

mit der Endung ».job« an. Diese Files<br />

folgen der Json-Notation. Sie enthalten<br />

alle notwendigen Metadaten, beispielsweise<br />

den Pfad zur ausführbaren Programmdatei,<br />

die Priorität, eine Liste aller<br />

Clusterhosts sowie verschiedene Timeout-Einstellungen.<br />

Prun nimmt als Jobs<br />

nur Shellskripte, Python-, Java-, Rubyoder<br />

Javascript-Anwendungen entgegen.<br />

Um welchen Dateityp es sich handelt,<br />

definiert der Admin in der ».job«-Datei<br />

hinter dem Parameter »language«.<br />

Detaillierte Informationen zum Aufbau<br />

dieser Files und etliche Beispiele liefert<br />

die Datei »README«. Sie erklärt auch alle<br />

Parameter zur Steuerung der »pworker«-<br />

und »pmaster«-Prozesse.<br />

★★★★★ Prun erleichtert die Jobverwaltung<br />

in High-Availability-Cluster-Umgebungen.<br />

Vor dem ersten Aufruf sollten<br />

Anwender die mitgelieferte Dokumentation<br />

gründlich studieren.<br />

n<br />

Diese Toolsammlung enthält Werkzeuge,<br />

die aufgezeichneten Netzwerktraffic bearbeiten<br />

und abspielen. Als Datenquelle<br />

akzeptieren die Programme Dateien im<br />

Pacp-Format, das gängige Sniffer wie<br />

etwa Tcpdump oder Wireshark zum<br />

Speichern nutzen.<br />

Bei der Wiedergabe kann der Anwender<br />

das Tool Tcpreplay wahlweise im<br />

Client- oder im Servermodus betreiben.<br />

Als Client wiederholt es nur die im Pcap-<br />

Archiv enthaltenen Anfragen, im Servermodus<br />

sendet es auch die Antwortpakete<br />

er<strong>neu</strong>t. In der Voreinstellung läuft alles<br />

in der gleichen Geschwindigkeit wie die<br />

Aufzeichnung ab. Der Parameter »‐‐multiplier«<br />

beschleunigt oder verlangsamt das<br />

Abspielen, und mit »‐‐pps« oder »‐‐oneatatime«<br />

steuern Benutzer das Geschehen<br />

noch gezielter.<br />

Mit im Paket dabei sind die beiden Programme<br />

Tcprewrite, das Pcap-Dateien bearbeitet,<br />

und Tcpreplay-edit, das Datenpakete<br />

während des Einspielens modifiziert.<br />

Beide haben einen ähnlichen Funktionsumfang<br />

und ermöglichen Änderungen<br />

wie etwa das Port-Remapping oder die<br />

Anonymisierung von IP-Adressen.<br />

Der Präprozessor, den Tcpreplay und<br />

Tcprewrite für ihre Anpassungen nutzen,<br />

steht auch als eigenes Tool namens<br />

Tcpprep zur Verfügung. Damit integrieren<br />

Anwender Tcpreplay-Manipulationen in<br />

eigene Skripte. Das Diagnosewerkzeug<br />

Tcpcapinfo hilft dabei, defekte PCAP-<br />

Dateien aufzuspüren.<br />

★★★★★ Die Tcpreplay-Toolsammlung<br />

ist so umfassend, dass sich vor dem Einsatz<br />

ein Besuch im Wiki empfiehlt. Neben<br />

einer Anleitung finden Benutzer hier<br />

auch Beispiele. (U. Vollbracht/​hej) n


Aus dem Alltag eines Sysadmin: Mod_bw für Apache<br />

Die mit den Rüsseln<br />

Einführung 04/2014<br />

Sysadmin<br />

Ein rechenstarker Webserver hilft wenig, wenn sich zu viele Benutzer um die Bandbreite seiner Netzanbindung<br />

balgen. Sysadmin-Kolumnist Charly hat sich entschieden: Große Sauger kriegen an seiner Tränke künftig die<br />

schlechteren Plätze. Charly Kühnast<br />

www.linux-magazin.de<br />

75<br />

Ich habe einen Webserver, der mit 100<br />

MBit/​s angebunden ist und auf dem Dutzende<br />

virtuelle Hosts laufen. Einer davon<br />

bietet ISO-Images von <strong>Linux</strong>-Distributionen<br />

zum Download an, die teils mehrere<br />

GByte groß sind. Wenn genug Leute zeitgleich<br />

daran saugen, gibt es eine Rohrverstopfung<br />

– die Downloads drängen den<br />

rest lichen HTTP-Verkehr an die Wand, die<br />

Apache-Antwortzeiten gehen in die Knie<br />

und die User werden unleidig.<br />

Meine Rettung hört auf den Namen Libapache2-mod-bw<br />

[1] oder ähnlich, je nach<br />

Distribution. Das „bw“ steht für Bandwidth,<br />

und genau deren Verbrauch kann<br />

ich damit steuern. Abbildung 1 zeigt als<br />

Beispiel einen Ausschnitt aus einer Apache-Konfiguration,<br />

das demonstriert, was<br />

mit dem Modul alles machbar ist.<br />

Es kann kaum überraschen, dass »BandwidthModule<br />

On« die Bandbreitenregulierung<br />

für diesen virtuellen Host<br />

einschaltet. Dagegen sieht »ForceBandwidthModule<br />

On« ein wenig doppelt<br />

gemoppelt aus. Die Zeile ist trotzdem<br />

notwendig, denn nur sie zwingt alle Verbindungen<br />

durch Mod_bw und nicht nur<br />

ausgewählte Mime-Types.<br />

Abbildung 1: Apache-Beispielkonfiguration mit Mod_bw-Direktiven.<br />

Die beiden »Bandwidth«-<br />

Zeilen geben die maximale<br />

Geschwindigkeit an, in der<br />

Apache seine Daten an die<br />

definierten Clients sendet.<br />

Hier muss ich die Reihenfolge<br />

beachten, denn es gilt „first<br />

Match“: Die erste auf einen<br />

Client zutreffende Bandwidth-<br />

Regel gewinnt, ich muss also<br />

spezielle Regeln vor allgemeineren<br />

definieren.<br />

Schreibt der Admin als maximale<br />

Geschwindigkeit eine<br />

Null in die Konfiguration wie in der ersten<br />

Bandwidth-Zeile, gibt es keine Begrenzung<br />

– das Netz 10.50.0.0/​16 hat<br />

al so freie Bahn. Für alle anderen Clients<br />

gilt das in der nächsten Zeile festgelegte<br />

Limit von 20 MBit/​s. Achtung, hier liegt<br />

ein Stolperstein im Weg: Die Geschwindigkeit<br />

muss man in Bytes pro Sekunde<br />

einstellen, deshalb der Wert 2 621 440.<br />

Die Großen trifft’s hart<br />

»LargeFileLimit« gibt mir die Möglichkeit,<br />

die Geschwindigkeit beim Download<br />

großer Dateien<br />

zu drosseln, während<br />

der Host kleine mit der<br />

normalen ausliefert.<br />

Drei Parameter muss<br />

ich angeben: Zuerst<br />

kommt der Dateityp,<br />

im Beispiel ».iso«,<br />

Mod_bw würde hier<br />

auch ein Asterisk als<br />

Platzhalter akzeptieren.<br />

Danach kommt<br />

die Dateigröße in Byte,<br />

oberhalb der die Regel<br />

greift – die Angabe<br />

2 097 152 entspricht<br />

2 MByte. Zuletzt lege ich die Geschwindigkeit<br />

für die Schwergewichte fest. Ich<br />

entscheide mich für 5 MBit/​s, in Bytes<br />

pro Sekunde bedeutet das 655 360.<br />

Auch die Zahl gleichzeitiger Verbindungen<br />

darf ich begrenzen. Die Null in der<br />

ersten »Max Connection«-Zeile setzt dem<br />

Netz 10.50.0.0/​16 keine Limits, für alle<br />

anderen gelten 32 Parallelverbindungen<br />

als Obergrenze. Ist sie ausgeschöpft, antwortet<br />

der Apache normalerweise mit<br />

dem Fehlercode 503 (Service unavailable),<br />

was mir reichlich unspezifisch erscheint.<br />

Mod_bw bietet aber die Möglichkeit,<br />

einen anderen Code festzulegen, ich<br />

nehme 510 und lasse eine selbst gestaltete<br />

Fehlerseite zurückgeben. (jk) n<br />

Infos<br />

[1] Mod_bw: [http:// ivn. cl/ category/ apache/<br />

# bandwidth]<br />

Der Autor<br />

Charly Kühnast administriert<br />

Unix-Syste me im Rechenzentrum<br />

Niederrhein. Zu seinen<br />

Aufgaben gehören Sicherheit<br />

und Verfügbarkeit der<br />

Firewalls und der DMZ.


Sysadmin<br />

www.linux-magazin.de ATA over Ethernet 04/2014<br />

76<br />

Ein virtuelles Raid im Netz mit ATA over Ethernet – als Eigenbau<br />

Im Netz gelagert<br />

Wer vom „Speichern im Netz“ spricht, meint oft das Einbinden von Geräten via I-SCSI. Dieser Artikel stellt die<br />

einfache Alternative ATA over Ethernet vor, die sich schnell zu einem Software-Raid ausbauen lässt. Dennis Schreiber<br />

© Olena Bilion, 123RF.com<br />

Ganz ähnlich wie I-SCSI ist auch ATA<br />

over Ethernet (AOE, [1]) ein Protokoll<br />

für den Zugriff auf Datenträger übers<br />

Ethernet. Der Zugriff auf die Datenträger<br />

erfolgt mit ATA-Befehlen, die das Protokoll<br />

zur Übertragung über das Netzwerk<br />

in Datenpakete verpackt und auf der<br />

Gegenseite wieder zusammenbaut (Abbildung<br />

1). Diese Vorgehensweise ermöglicht<br />

einen vergleichsweise Hardware-nahen<br />

Zugriff auf Speichergeräte über das<br />

Netzwerk hinweg.<br />

Die genauen Spezifikationen des Protokolls<br />

lassen sich auf der Webseite [1]<br />

nachlesen: Ganz ähnlich wie bei I-SCSI<br />

bezeichnet die Literatur das System, das<br />

die physikalischen Datenträger bereitstellt,<br />

als Target. Initiator heißt das System,<br />

das die Datenträger einbindet.<br />

Benötigte Komponenten<br />

Für den Betrieb eines AOE-Setups ist nicht<br />

viel Software erforderlich. Auf dem Target<br />

muss der Administrator nur das Paket<br />

»vblade« installieren, auf Debian-Systemen<br />

geht das schnell mit »aptitude install<br />

vblade«. Nicht weniger einfach läuft die<br />

Prozedur auf dem Initiator, nur sind hier<br />

die AOE-Tools erforderlich (»aptitude install<br />

aoe‐tools«). Jetzt steht das Kernelmodul<br />

»aoe« bereit, »modprobe aoe« lädt es.<br />

Soll es beim Start standardmäßig geladen<br />

werden, ist ein entsprechender Eintrag in<br />

der Datei »/etc/modules« erforderlich.<br />

Bereitstellung von<br />

Datenträgern<br />

Das Bereitstellen von Datenträgern oder<br />

Partitionen übernimmt das Programm<br />

Vblade. Es erwartet als Parameter eine<br />

Shelf-Nummer (Shelf steht für Regal oder<br />

Ablage), eine Slot-Nummer (Einschub),<br />

die Netzwerkschnittstelle, über welche<br />

die Bereitstellung erfolgen soll, sowie<br />

die Angabe der Partition oder des Datenträgers.<br />

Auch eine Datei bereitzustellen,<br />

zum Beispiel Raw-Images, ist möglich.<br />

Die Shelf- und die Slot-Nummer oder de-<br />

ren Kombination müssen allerdings im<br />

Netzwerk eindeutig sein.<br />

Neben Optionen für die schreibgeschützte<br />

Bereitstellung und Einstellungen des Puffers<br />

oder der Zugriffsmodi ist auch die<br />

Angabe von MAC-Adressen als kommaseparierte<br />

Liste möglich. Das funktioniert<br />

als Whitelist: Nur Computer mit einer<br />

der angegebenen MAC-Adressen haben<br />

Zugriff auf die Daten.<br />

Zu Testzwecken bietet es sich an, Raw-<br />

Images zu verwenden. Der folgende Befehl<br />

erzeugt ein Abbild mit einer Größe<br />

von 10 GByte:<br />

dd if=/dev/zero of=/test/raw_image.rawU<br />

bs=1M count=10000<br />

Wer es lieber mit realen Datenträgern<br />

probieren möchte, setzt statt des Image<br />

»/test/raw_image.raw« einfach das gewünschte<br />

Device ein, etwa »/dev/sdc1«<br />

für die erste Partition der als »sdc« eingebundenen<br />

Festplatte.<br />

Shelfs und Slots<br />

Um das soeben erzeugte Raw-Image auf<br />

dem Target über Shelf 2 und Slot 1 freizugeben,<br />

reicht ein einfaches:<br />

vblade 2 1 eth0 /test/raw_image.raw<br />

Wenn auf dem Initiator-System alle Voraussetzungen<br />

erfüllt sind, dann wird der<br />

Datenträger sofort sichtbar sein. Ist das<br />

nicht der Fall, dann sollte der Administrator<br />

den Befehl »aoe‐discover« aufrufen.<br />

Welche Datenträger dem System zur<br />

Verfügung stehen, zeigt »ls /dev/etherd«,<br />

DELUG-DVD<br />

Auf der DELUG-DVD finden Leser<br />

jeweils ein Tar-Archiv der zum Redakti-<br />

DELUG-DVD<br />

onsschluss <strong>neu</strong>esten Ausgabe von Vblade und<br />

der AOE-Tools.


Client/Target 1<br />

Client/Target 2<br />

Client/Target 3<br />

detailliertere Angaben erhält der Administrator<br />

durch den Aufruf von »aoe‐stat«<br />

(Abbildung 2).<br />

Vblade zu verwenden reicht für Testzwecke,<br />

wobei der Admin das Programm<br />

im Vordergrund ausführt (Abbruch mit<br />

[Strg]+[C]) und jede Menge Debug-<br />

Informationen erhält. Als Hintergrunddienst<br />

steht »vbladed« zur Verfügung. In<br />

beiden Fällen sind bereitgestellte Daten<br />

nach einem Neustart jedoch erst mal wieder<br />

verschwunden.<br />

Wer das Einbinden von Initiatoren und<br />

Targets automatisieren will, greift auf<br />

»vblade‐persist« zurück. Das Programm<br />

ist jedoch in einem separaten Paket enthalten<br />

und will erst per »aptitude install<br />

vblade‐persist« installiert sein. Um das<br />

oben erzeugte Raw-Image permanent bereitzustellen,<br />

bedarf es im ersten Schritt<br />

eines persistenten Exports:<br />

vblade‐persist setup 2 1 eth0 /test/U<br />

Initiator<br />

Raid<br />

Freigabe:<br />

NFS, Samba, ...<br />

Abbildung 1: Raid-Devices im Netz mit ATA over Ethernet folgen einem ähnlichen<br />

Schema wie beispielsweise I-SCSI: Es gibt Initiatoren und Targets.<br />

ohne Neustart umgehend<br />

bereitzustellen,<br />

kann er es auch mit<br />

»vblade‐persist start<br />

2 1« sofort aktivieren.<br />

Einen Überblick über<br />

alle persistenten AOE-<br />

Exporte sowie deren<br />

Status gibt der Aufruf<br />

»vblade‐persist ls«.<br />

Netzwerk-Raid<br />

Wer im eigenen Netzwerk<br />

mehrere Computer<br />

vorhält, die ohnehin<br />

rund um die Uhr<br />

im Betrieb sind und<br />

außerdem über ungenutzte<br />

Speicherkapazitäten<br />

verfügen, mag<br />

sich wünschen, diese Ressourcen auch<br />

anderen PCs zur Verfügung zu stellen.<br />

Noch etwas weiter gedacht wird daraus<br />

schnell eine Art Raid-System, dessen<br />

Speicher der Admin zentral bereitstellt.<br />

Weil mehrere Computer involviert sind,<br />

bedarf es allerdings auch einiger Abwägungen<br />

hinsichtlich der Ausfallwahrscheinlichkeit,<br />

doch schon die Wahl eines<br />

geeigneten Raid-Levels nimmt der<br />

Thematik die Brisanz.<br />

Das folgende Beispiel erzeugt der Einfachheit<br />

halber einen Raid-5-Verbund.<br />

Im ersten Schritt hat der Admin auf drei<br />

Systemen jeweils ein Raw-Image erzeugt<br />

und zur Verfügung gestellt (vergleiche<br />

Abbildungen 1 und 2). Den Raid-Verbund<br />

erzeugt er einfach mit dem Kommando<br />

»mdadm« (Listing 1). Auf dem <strong>neu</strong> erzeugten<br />

Raid-Verbund lässt sich jetzt<br />

beispielsweise ein Ext-4-Dateisystem erzeugen:<br />

Damit der Administrator bei einem Ausfall<br />

des Initiators ohne großen Zeitverlust<br />

den Raid-Verbund auf einem anderen<br />

System reaktivieren kann, sollte er sich<br />

eine entsprechende Mdadm-Konfigurationsdatei<br />

»mdadm.conf« anlegen und<br />

sicher aufbewahren (Listing 2).<br />

Experimentierfreudige Administratoren<br />

greifen statt zu Mdadm zu Btr-FS, weil<br />

es in der Handhabung deutlich einfacher<br />

als Mdadm ist, dabei aber mehr Möglichkeiten<br />

mitbringt, zum Beispiel Inline-<br />

Komprimierung oder Snapshots. Listing<br />

3 zeigt, wie schnell das Einrichten eines<br />

Raid-Verbunds mit Btr-FS gelingt.<br />

Datensicherung und<br />

Virtualisierung<br />

Wer öfter Datenträger-Sicherungen übers<br />

Netzwerk anfertigen muss (wie das beispielsweise<br />

in der Datenforensik häufig<br />

der Fall ist), wird besonderen Gefallen<br />

an AOE finden: Das Bereitstellen eines<br />

Datenträgers über das Netzwerk ist verglichen<br />

mit I-SCSI deutlich schneller<br />

erledigt. Auch im Vergleich zu einer Sicherung<br />

über Netcat in Verbindung mit<br />

Dd oder Ewfacquire ist AOE wesentlich<br />

komfortabler. Und Forensiker freuen sich,<br />

weil das beliebte Sicherungsprogramm<br />

Guymager [2] AOE-Geräte auf Anhieb<br />

erkennt (Abbildung 3).<br />

Die Freude trübt jedoch ein wenig, dass<br />

Vblade bisher neben Debian lediglich<br />

auf der Grml-CD [3] sowie in Caine [4]<br />

in der Version 5 enthalten ist. Für andere<br />

Distributionen müssen Anwender<br />

bisher auf die Archive von Sourceforge<br />

[5] zurückgreifen. Auf Anfrage an die<br />

Listing 1: Mdadm erzeugt den Raid<br />

01 mdadm ‐‐create /dev/md0 ‐‐auto md ‐‐level=5<br />

‐‐raid‐devices=3 /dev/etherd/e1.1 /dev/etherd/e2.1<br />

/dev/etherd/e3.1<br />

02 <br />

03 mdadm: Defaulting to version 1.2 metadata<br />

04 mdadm: array /dev/md0 started.<br />

ATA over Ethernet 04/2014<br />

Sysadmin<br />

www.linux-magazin.de<br />

77<br />

raw_image.raw<br />

Hierbei muss der Admin absolute Pfade<br />

für den Datenträger oder die Datei verwenden.<br />

Danach markiert er das Device<br />

mit »vblade‐persist auto 2 1« für<br />

den automatischen Start. Um es auch<br />

mkfs.ext4 ‐L nwraid /dev/md0<br />

Listing 2: »mdadm.conf«<br />

01 DEVICE /dev/etherd/e*.*<br />

02 # auto‐create devices with Debian standard<br />

permissions<br />

03 CREATE owner=root group=disk mode=0660 auto=yes<br />

04 # automatically tag new arrays as belonging to the<br />

local system<br />

05 HOMEHOST <br />

06 # instruct the monitoring daemon where to send mail<br />

alerts<br />

07 MAILADDR root<br />

08 # definitions of existing MD arrays<br />

09 ARRAY /dev/md/0 devices=/dev/etherd/e1.1,/dev/etherd/<br />

Abbildung 2: »aoe-stat« zeigt, dass dem Initiator drei Datenträger zur Verfügung stehen.<br />

e2.1,/dev/etherd/e3.1


Sysadmin<br />

www.linux-magazin.de ATA over Ethernet 04/2014<br />

78<br />

einschlägigen Projekte hat bis zum Redaktionsschluss<br />

lediglich das Team von<br />

Deftlinux [6] mit einer Zusage für die<br />

nächste Version reagiert.<br />

Sichergestellte Systeme<br />

virtualisieren<br />

AOE ist auch für Virtualisierungszwecke<br />

ein hilfreiches Werkzeug. In Verbindung<br />

mit Xmount ([7], Listing 4) kann der<br />

Admin schnell ein gesichertes Image als<br />

virtuelle Festplatte ins Netzwerk stellen.<br />

Wie Xmount funktioniert, erklärt ein früherer<br />

Artikel des <strong>Linux</strong>-<strong>Magazin</strong>s [8].<br />

Forensiker, die ein Datenträgerabbild im<br />

Encase-Format mit Schreibsupport bereitstellen<br />

wollen, sollten dieses zunächst<br />

virtuell in ein Raw-Image umwandeln<br />

und das Raw-File anschließend als Datenträger<br />

einbinden.<br />

Auf einem entfernten Rechner kann die<br />

Virtualisierung des Systems beispielsweise<br />

über »qemu‐kvm« erfolgen. Im<br />

einfachsten Falle gelingt das mit<br />

qemu‐kvm ‐m 1024 ‐hda /dev/etherd/e2.3<br />

das bewusst auf mögliche Optimierungen<br />

verzichtet und keine Anpassungen des<br />

Gastsystems an die <strong>neu</strong>e Umgebung berücksichtigt,<br />

dafür aber deutlich klarere<br />

Fehlermeldungen ausgeben wird.<br />

Ausfall eines Targets oder<br />

des Initiators<br />

Fällt ein Target aus, ist dies im Prinzip<br />

nichts anderes als der Ausfall einer Festplatte<br />

in einem normalen Raid-Verbund.<br />

Der Admin braucht nur das defekte Gerät<br />

durch ein funktionstüchtiges auszutauschen,<br />

wobei er beispielsweise auch eine<br />

reale Festplatte durch ein Raw-Image auf<br />

einer anderen Maschine ersetzen kann.<br />

Der <strong>neu</strong>e Datenträger sollte nur der<br />

Größe des ursprünglichen entsprechen<br />

und ist schließlich über Vblade-persist<br />

freizugeben.<br />

Wer zum Beispiel das mit »e2.1« verbundene<br />

und ausgefallene Device lösen will,<br />

ruft den folgenden Befehl auf:<br />

mdadm /dev/md0 ‐‐remove /dev/etherd/e2.1<br />

Anschließend nimmt er das <strong>neu</strong>e Gerät,<br />

hier als »e4.1« dargestellt, in den Raid-<br />

Verbund auf:<br />

mdadm /dev/md0 ‐‐add /dev/etherd/e4.1<br />

Im Hintergrund startet die Software nun<br />

den Rebuild-Prozess, der je nach Größe<br />

des Systems einige Stunden in Anspruch<br />

nehmen kann.<br />

Fällt dagegen ein Initiator aus, dann<br />

lässt sich der Verbund einfach auf einem<br />

01 # mkfs.btrfs ‐d raid5 ‐m raid5 ‐L nwraid /dev/etherd/e1.1 /dev/etherd/e2.1 /dev/etherd/e3.1<br />

02 <br />

03 WARNING! ‐ Btrfs v0.20‐rc1 IS EXPERIMENTAL<br />

04 WARNING! ‐ see http://btrfs.wiki.kernel.org before using<br />

05 <br />

06 adding device /dev/etherd/e2.1 id 2<br />

07 adding device /dev/etherd/e3.1 id 3<br />

08 Setting RAID5/6 feature flag<br />

09 fs created label nwraid on /dev/etherd/e1.1<br />

10 nodesize 4096 leafsize 4096 sectorsize 4096 size 29.30GB<br />

11 Btrfs v0.20‐rc1<br />

Listing 3: Raid-Verbund mit Btr-FS<br />

Listing 4: Xmount<br />

01 # xmount ‐‐in ewf ‐‐out dd ‐‐cache daten.ovl Festplattenabbild.e?? /mnt/analyse<br />

02 # vblade 2 3 eth0 /mnt/analyse/Festplattenabbild.dd<br />

Abbildung 3: Auch das Forensik-Tool Guymager erkennt AOE-Laufwerke auf Anhieb und erlaubt ganze Datenträger<br />

schnell übers Netzwerk zu sichern.<br />

<strong>neu</strong>en System wieder aufbauen. Hierbei<br />

kann der Administrator auf die zuvor gesicherte<br />

Konfiguration zurückgreifen oder<br />

direkt Mdadm verwenden:<br />

mdadm ‐‐assemble /dev/md0 /dev/etherd/e1.1U<br />

/dev/etherd/e2.1 /dev/etherd/e3.1<br />

Im diesem Fall stellt der Befehl das Raid<br />

auf einem anderen System wieder her:<br />

Fazit<br />

ATA over Ethernet ist ein vielversprechendes<br />

Protokoll, das vieles vereinfacht<br />

und eigentlich mehr Beachtung verdient<br />

hat. Der richtige Einsatz kann Administratoren<br />

und Forensikern die Arbeit an<br />

einigen Stellen erleichtern – nicht selten<br />

lassen sich damit sogar Raid-Strukturen<br />

virtualisieren. (mfe)<br />

n<br />

Infos<br />

[1] AOE-Standard: [http:// support. coraid. com/​<br />

documents/ aoer11. txt]<br />

[2] Guymager: [http:// guymager. sf. net]<br />

[3] Grml: [http:// www. grml. org]<br />

[4] Caine: [http:// www. caine‐live. net]<br />

[5] AOE-Tools bei Sourceforge:<br />

[http:// aoetools. sourceforge. net]<br />

[6] Deftlinux: [http:// www. deftlinux. net]<br />

[7] Xmount-Homepage:<br />

[http:// www. pinguin. lu]<br />

[8] Hans-Peter Merkel und Markus Feilner,<br />

„Kreuz und quer“: <strong>Linux</strong>-<strong>Magazin</strong> 10/​09,<br />

S. 90<br />

Der Autor<br />

Dennis Schreiber ist Computer-Forensiker in der<br />

Thüringer Finanzverwaltung. Wenn er nicht gerade<br />

etwas mit Familie und Freunden unternimmt,<br />

beschäftigt er sich mit <strong>Linux</strong> und Computer-Forensik<br />

oder dreht eine Runde mit dem Motorrad.


Forum<br />

www.linux-magazin.de Winterrätsel 04/2014<br />

80<br />

Auflösung des Winterrätsels<br />

Nie sprachlos<br />

Nur wer sich in der Programmiersprachen-Historie auskennt, hatte eine Chance bei den Fragen des Winterrätsels<br />

aus Ausgabe 02/​14. Diesmal gibt’s neben den kniffligen Fragen auch die Antworten – und den Namen des<br />

Rätselkönigs 2014, der neben dem Ruhm auch einen Videorecorder für den Raspberry Pi einstreicht. Nils Magnus<br />

Allein um eine zumindest größtenteils richtige Lösung für die 20 Aufgaben<br />

des Winterrätsels aus dem <strong>Linux</strong>-<strong>Magazin</strong> 02/​2014 zustande<br />

zu bekommen, bedarf es weit überdurchschnittlicher Kenntnisse<br />

der Programmiersprachen-Geschichte. So gesehen darf sich jeder<br />

Teilnehmer als Siegertyp betrachten.<br />

Gewinner des Sachpreises – Videorecorder-Equipment für den<br />

Rasp berry Pi von DVB Link [1] – konnte jedoch nur einer der teilnehmenden<br />

Hobbyhistoriker werden, der Kasten „Lösung und Gewinner“<br />

lüftet das Geheimnis. Der Artikel selbst repetiert die Fragen und<br />

beantwortet sie korrekt – wie gewohnt ausführlich.<br />

1<br />

Akronyme sind für Programmiersprachen durchaus beliebt, rekursive<br />

allemal. Welche Sprache erfand ein Mann mit dänischem<br />

Pass fürs World Wide Web?<br />

Obwohl er heute in den Vereinigten Staaten lebt, ist Rasmus<br />

Lerdorf auf Grönland geboren und damit gebürtiger Däne. Den<br />

„PHP: Hypertext Preprocessor“ schrieb er anfangs als Ersatz<br />

für eine Reihe von Perl-Skripten.<br />

2 ​ Ausnahmebehandlung. Sie gilt als Urahnin einer ganzen Reihe<br />

Ein britischer Turing-Award-Gewinner entwickelte eine der<br />

ersten Sprachen mit polymorpher Typinferenz und typsicherer<br />

Listing 1: Sortierfunktion in Ocaml<br />

01 let rec sort = function<br />

02 | [] ‐> []<br />

03 | x :: l ‐> insert x (sort l)<br />

04 <br />

05 and insert elem = function<br />

06 | [] ‐> [elem]<br />

07 | x :: l ‐><br />

08 if elem < x then elem :: x :: l else x :: insert elem l;;<br />

von Abkömmlingen. Wie heißt jener, der objektorientierte Ansätze<br />

einbrachte und so mehrere Programmierwettbewerbe gewann?<br />

Robin Milner hat ML geschaffen, was er als Abkürzung für<br />

Meta Language verwendete. Zur weiteren Verwandschaft der<br />

Sprachfamilie gehören beispielsweise SML, Miranda, Haskell<br />

und Ocaml, das in sehr kompakter Schreibweise hocheffizienten<br />

Code formulieren hilft. Die in Listing 1 per Ocaml kodierte<br />

Sortierfunktion, die auf beliebigen Typen funktioniert, ist ein<br />

schönes Beispiel dafür.<br />

Der Legende nach motivierte den ursprünglichen Autor zur<br />

Namenswahl seiner Skriptsprache ein Gleichnis aus dem Matt-<br />

3​ häus-Evangelium. Darin sucht ein Händler nach Preziosen. Was<br />

durchschreitet im selben Bibeltext das Wappentier der Sprache?<br />

Der Urvater Abraham des Perl-Universums, Larry Wall, ist kalifornischer<br />

Programmierer und bekennender Christ. Er beruft<br />

sich bei der Namenswahl seiner Skriptsprache gerne auf Matthäus<br />

13, 46: „Als er eine besonders wertvolle Perle fand, verkaufte<br />

er al les, was er besaß, und kaufte sie.“ Inspiriert vom<br />

Umschlag ei nes frühen Perl-Buches reüssierte das Kamel zum<br />

Sinnbild für Perl. Der zitierte Evangelist wusste auch dazu einen<br />

Vers, nämlich 19, 24: „Nochmals sage ich euch: Eher geht ein<br />

Kamel durch ein Nadelöhr, als dass ein Reicher in das Reich<br />

Gottes gelangt.“<br />

4​Das Einrücken von Code als syntaktisches Element ist bei Programmierern<br />

umstritten. Python-Fans beispielsweise preisen<br />

diese Form der Blockmarkierung, andere bleiben skeptisch.<br />

Die Entwickler welcher Sprache mussten zumindest in deren Urform<br />

manche Codefragmente auf bestimmte Spalten einrücken?<br />

Bis zur Version Fortran 77 schrieb die Sprache vor, dass normaler<br />

Code ab Spalte 8 zu beginnen habe. Kommentare hingegen<br />

bedurften in Spalte 1 eines »C«. Diese Richtlinien stammten<br />

noch aus der Zeit der Lochkarten – Programmierer konnten so<br />

Zeilen, die sich als fehlerhaft herausstellten, noch nachträglich<br />

das Muster für den Kommentar hinzustanzen.<br />

5​ entworfene die größte Verbreitung gefunden hat. Später war<br />

Ein eidgenössischer Compiler-Erfinder schuf eine ganze<br />

Kaskade an Sprachen, wovon die erste und von ihm allein<br />

ihm eine Sprache nicht genug und er entwarf mit Kollegen an einer<br />

europäischen Hochschule noch ein dazu passendes Betriebssystem<br />

und einen zugehörigen Rechner. Wie lautet das germanische Äquivalent<br />

der Programmierumgebung?<br />

© Vichaya Kiatying-Angsulee, 123RF.com


Antworten<br />

1 P PHP<br />

2 O Ocaml<br />

3 N Nadelöhr<br />

4 F Fortran<br />

5 A Alberich<br />

6 O Oak<br />

7 Pike<br />

8 W<br />

9 B BCPL<br />

10 E Esperanto<br />

11 I Iverson<br />

12 M Mascitti<br />

13 M Mono<br />

14 R Ramey<br />

15 H Hopper<br />

16 L Logo<br />

17 S Snobol<br />

18 P Prolog<br />

19 O Object<br />

20 A Algol<br />

Niklaus Wirth entwarf neben seiner bekanntesten Kreation<br />

Pascal auch noch Modula, Modula-2 sowie Oberon. Die Sprache<br />

brachte eine Entwicklungs- und Laufzeitumgebung mit.<br />

An der ETH Zürich schuf Wirth mit seinem Team dafür die<br />

Systemplattform Ceres. Oberon ist ein anderer Name für den<br />

Hüter des Nibelungeschatzes, Alberich, einen Zwerg der nordischen<br />

Mythologie.<br />

Ein Entwickler benannte seine Sprache eines Tages nach<br />

der Geschmacksrichtung eines Löschwasser-Sudes um. Ur-<br />

6​ sprünglich taufte der in seinem Heimatland mit einem Orden<br />

ausgezeichnete Entwickler die Sprache aber nach einem soliden<br />

Laubbaum. Welchem?<br />

James Gosling, Officer of the Order of Canada, hat sich zwar<br />

um den Emacs verdient gemacht, entwarf aber – wohl um das<br />

Gleichgewicht der Macht wiederherzustellen – ebenfalls Java.<br />

Ursprünglich jedoch sollte die Kaffee-Sprache Oak heißen, wie<br />

das englische Wort für Eiche.<br />

Viele Programmiersprachen haben eine wechselhafte Entwicklung<br />

hinter sich. Die hier gesuchte Sprache zeigt sich be-<br />

7​ sonders vielgesichtig, denn sie startete als objektorientierte<br />

C-Variante, verlebte ihre Kindheit in einem vernetzten Rollenspiel,<br />

um schließlich als Implementierungssprache eines mittlerweile fast<br />

vergessenen Webservers zu reüssieren.<br />

Der schwedische Spiele-Entwickler Lars Pensjö entwickelte<br />

1989 eine virtuelle Maschine für ein textbasiertes Online-Rollenspiel.<br />

Da sich Pensjö die Spielewelt nicht komplett selbst<br />

ausdenken wollte, ermöglichte er erfahrenen Spielern, diese in<br />

der objektorientierten Sprache LPC zu erweitern. Auf diesem<br />

Sprachentwurf setzten die Entwickler des Roxen Challenger auf<br />

und nannten ihre Neufassung Pike.<br />

8​ eine besondere Zeichenklasse, die zwar keine Bedeutung hat,<br />

Die meisten Compiler oder Interpreter zerlegen den Quellcode<br />

in Tokens – und akzeptieren an vielen Stellen rund um diese<br />

jedoch das Code-Studium vereinfacht. Die hier gesuchte Sprache<br />

bildet eine Ausnahme, weil sie diese Symbole zum einzigen Prinzip<br />

erhebt und praktisch unsichtbar bleibt. Wie heißt die Sprache?<br />

Die Programmiersprache Whitespace besteht nur aus – genau!<br />

– Whitespaces, also aus Leerzeichen, Tabulatoren und<br />

Zeilenumbrüchen. Das macht sie relativ schwer ausdruckbar.<br />

Dennoch ist die Sprache, die nach dem Stack-Prinzip arbeitet,<br />

in der Lage, beliebige Berechnungen auszuführen.<br />

P Whitespace<br />

Der US-Amerikaner Martin Richards entwickelte 1969 mit BCPL<br />

eine plattformunabhängige, aber sehr systemnahe Programmiersprache,<br />

die zwar relativ wenig Komfort und Sicherheitsmechanismen<br />

enthielt, aber zugleich die zentralen Sprachkonstrukte<br />

einer imperativen Sprache umsetzte. Die Idee von<br />

Objektcode stammt in Teilen aus diesem Sprachkonzept. Über<br />

den Umweg von B, das kaum produktiv zum Einsatz kam,<br />

entwickelte sich daraus C. Auch später blieb BCPL in Mode,<br />

beispielsweise in Teilen des Amiga OS.<br />

er sehr früh das Konzept der höheren Programmiersprache<br />

einführte, benötigte der Entwurf eines Hardware-Entwicklers<br />

geschlagene 29 Jahre bis zur ersten<br />

10Obwohl<br />

Implementierung. Welche Sprache hatte ihr Schöpfer ursprünglich<br />

ins Auge gefasst, um seine Rechner zu programmieren?<br />

Nach dem Ende des Zweiten Weltkriegs konnte der Computerpionier<br />

Konrad Zuse praktisch kaum an seinem damals<br />

aktuellen Hardware-Entwurf, der Z4, arbeiten. Der elektromechanische<br />

Rechner verwendete Relais und war zwar konzeptionell<br />

frei programmierbar, allerdings nur in einer mühsamen<br />

Maschinensprache.<br />

Zuse suchte daher nach Ideen, um Programme abstrakter formulieren<br />

zu können. Die Sprache Plankalkül avancierte dabei<br />

zwar zur ersten Hochsprache, kam jedoch mangels passender<br />

Hardware praktisch nicht zum Einsatz. Erst 1975 implementierte<br />

Joachim Hohmann in Darmstadt die Sprache im Zuge seiner<br />

Dissertation. Bevor Zuse sich Plankalkül zuwandte, spielte<br />

er mit dem Gedanken, seine Rechenmaschine in Esperanto zu<br />

programmieren, verwarf den Gedanken aber schnell.<br />

immer stellen krude Syntax oder besonders abstrakte<br />

Sprachkonstrukte die größten Hürden auf. Ein exotischer<br />

11Nicht<br />

Sprachentwurf erwartete ursprünglich entweder einen Fernschreiber<br />

mit einer Hardware-Backspace-Implementierung oder<br />

eine Latex-Klasse, um allein den Code anzuzeigen. Welcher Turing-<br />

Award-Gewinner entwickelte sie?<br />

Winterrätsel 04/2014<br />

Forum<br />

www.linux-magazin.de<br />

81<br />

9​<br />

Die gesuchte Sprache trat als Verbindungsglied zwischen<br />

Hoch- und Maschinensprache auf, inspirierte den heutigen<br />

Quasi-Standard für die Systemprogrammierung und legte eine<br />

Grundlage für Objektcode.<br />

© Micro APL<br />

Abbildung 1: APL benutzt für seinen Quellcode Zeichen außerhalb der gewöhnlichen<br />

ISO-8859-15-Symbole. In den 1960er Jahren erreichte man das durch das<br />

Übereinanderdrucken von zwei Zeichen auf einem Fernschreiber.


Forum<br />

www.linux-magazin.de Winterrätsel 04/2014<br />

82<br />

APL (A Programming Language) ist recht einfach aufgebaut<br />

und kann gut mit Vektoren und Matrizen umgehen. Sie macht<br />

es leicht, schnell zu Ergebnissen zu kommen. Wäre da nicht<br />

die Syntax: Gerade die Operatoren bestehen oft aus mehrfach<br />

übereinandergedruckten Symbolen (Abbildung 1).<br />

Um etwa einen Kommentar einzuleiten, tippten Programmierer<br />

ein großes A ein, bewegte den Cursor ein Zeichen zurück und<br />

überdruckten es mit einem kleinen O. Als Eingabefolge würde<br />

man diese etwa mit »A\bo« umschreiben. Das klappt natürlich<br />

nur auf einem Fernschreiber. Um diese Limitierungen moderner<br />

Monitore zu umgehen, gibt es <strong>neu</strong>erdings Fonts [2] und<br />

sogar Unicode-Zeichen [3] für die wichtigsten APL-Operatoren.<br />

Kenneth Iverson hatte die Sprache erfunden.<br />

sein Sprachentwurf Klasse(n) haben würde, wollte<br />

der in Skandinavien geborener Entwickler eigentlich in<br />

12Dass<br />

ihrem Namen verankern. Wie hieß der Mitarbeiter des<br />

Erfinders, der für den tatsächlichen, schnöde auf die Vorgängerin<br />

verweisenden Namen verantwortlich zeichnet?<br />

Bjarne Stroustrup vermisste in C die Objektorientierung und<br />

insbesondere ein Klassensystem und nannte somit seine zunächst<br />

als Erweiterung gedachte Programmiersprache intern<br />

„C with Classes“. Der Legende nach wollte sein Mitarbeiter<br />

Rick Mascitti augenzwinkernd den <strong>neu</strong>en Evolutionsschritt der<br />

Sprache betonen und schuf so den Namen C++.<br />

ein populäres, spektakulärerweise nicht in Sonatenhauptsatz-Form<br />

verfasstes und nächtliche Lichteffekte<br />

13Ob<br />

thematisierendes Klavierstück eines deutschen Komponisten<br />

Inspiration für den Namen einer Programmierumgebung war, ist<br />

nicht überliefert. Die Tonart seines ersten Satzes weist aber auf die<br />

Sprache hin. Wie heißt deren Open-Source-Implementierung?<br />

Klaviersonaten sollen mit einem schnellen, schnittigen Satz<br />

beginnen, das war die unumstößliche Lehrmeinung zu Beethovens<br />

Zeit. Der Maestro setzte sich souverän über diese<br />

wie über manch andere Konvention hinweg und begann die<br />

„Mondscheinsonate“ kurzerhand mit langsamen, fast schon<br />

betörend-manischen Arpeggien in Cis-Moll (Abbildung 2).<br />

Im anglo-amerikanischen Sprachraum nennt man das Kreuz<br />

für die chromatische Erhöhung eines Tons „Sharp“, was C#-<br />

Erfinder Microsoft wohl für einen gelungenen Scherz und<br />

Seitenhieb auf C++ hielt. Wer bei Microsoft Beethoven hört, ist<br />

leider nicht überliefert. <strong>Linux</strong>-Entwickler greifen zu Mono, um<br />

in der objektorientierten Sprache zu programmieren.<br />

Steuersprache des Unix-Urvaters war einem Briten<br />

zu oll. Er entwickelte daraufhin seine eigene Fassung,<br />

14Eine<br />

die syntaktisch auf jedem aktuellen <strong>Linux</strong>-System große<br />

Bedeutung besitzt. Welcher Entwickler hat seit über 20 Jahren den<br />

Posten inne, sich um ihren interaktionsfreudigen Wiedergänger zu<br />

kümmern?<br />

Nicht die von Stephen Bourne 1977 programmierte Bourne<br />

Shell war Unix’ erster Kommandointerpreter, sondern die von<br />

Thompson selbst verfasste, später nur noch „Old Shell“ genannte<br />

Osh, die unter anderem die Pipes mitbrachte. Bourne<br />

fügte unter anderem die Steuerung von Hintergrundprozessen<br />

(»&«, [Strl]+[Z], »fg« und »bg«) hinzu und machte den Interpreter<br />

programmierfähig.<br />

Für den täglichen Einsatz fehlte es jedoch an einer Eingabehistorie<br />

und anderen nützlichen Hilfen, die erst die Bash ab<br />

etwa 1990 mitbrachte. Seit der Zeit betreut Chet Ramey den<br />

heutigen Quasi-Standard für <strong>Linux</strong>-Kommando-Eingaben.<br />

Pionierin wirkte maßgeblich an der Entwicklung<br />

einer frühen Hochsprache mit, die zu beherrschen heute<br />

15Welche<br />

fast einer Beschäftigungsgarantie gleichkommt? Die Mathematikerin<br />

war bei US-Präsidenten und -Showmastern zu Gast.<br />

Die US-Amerikanerin Grace Hopper hatte für die US-Marine<br />

und mehrere Computerhersteller gearbeitet und dabei an der<br />

Spezifikation für Cobol mitgewirkt. Gleichzeitig erfand sie<br />

praktisch das Debugging und dokumentierte 1947 in ihrem<br />

Logbuch den ersten Fix in Form einer aufgeklebten Motte<br />

(siehe Abbildung 3).<br />

© Public Domain<br />

Abbildung 2: Beethoven Klaviersonate Nr. 14 op. 27 Nr. 2 beginnt mit aufgebrochenen<br />

Akkorden in der Tonart des ersten Satzes Cis-Moll.<br />

Abbildung 3: Computerpionierin Grace Hopper erfand nicht nur Cobol, sondern<br />

auch das Debugging. Das Changelog von 1947 mit ihrem ersten gefunden Bug ist<br />

erhalten geblieben und steht heute im Archiv der US-Marine.


der Wappengestaltung mal abgesehen, spielen Tiere<br />

nur in wenigen Programmiersprachen eine nennenswerte<br />

16Von<br />

Rolle. Bei welcher Sprache, gerne auch in der Bildung<br />

eingesetzt, bleibt ein possierliches Reptil dagegen unabdingbar?<br />

Um Kindern den Zugang zum Programmieren zu erleichtern,<br />

erdachte der Südafrikaner Seymour Papert die Programmiersprache<br />

Logo, die dank Lisp-Anleihen und Rekursionen mächtige<br />

Programmierkonzepte einfach handhabbar machte. In<br />

Erinnerung geblieben ist jedoch eine stilisierte, steuerbare<br />

Schildkröte, die eine Farbspur hinter sich herzieht.<br />

verbreitetsten Datentypen bei Programmiersprachen<br />

sind Repräsentationen für Zahlen und Zeichenfolgen. Welche<br />

Sprache macht hier eine Ausnahme, da sie erstmals<br />

17Die<br />

Vorformen von regulären Ausdrücken in den Mittelpunkt rückte?<br />

Mit ihren normalen Funktionen vermochte Snobol nicht viele<br />

Entwickler hinter dem Ofen hervorzulocken. Die Möglichkeit<br />

hingegen, Texte zu zerlegen und nach Mustern zu suchen, bescherten<br />

der Sprache in den 1970er und 1980er Jahren eine gewisse<br />

Beliebtheit. Weil Snobol jedoch meist nach Rechnern der<br />

Mainframe-Kampfklasse verlangte, liefen ihr Unix-Werkzeuge<br />

wie Grep, Sed und später Perl den Rang ab.<br />

Vererbungspfaden von einer Superklasse erben. Dieses Problem<br />

gibt es bei Einfachvererbung nicht. Da in Smalltalk jede Instanz<br />

ein Objekt ist, heißt ihre Metaklasse folgerichtig Object.<br />

das Who’s who von Compilerbau-Experten liest sich<br />

die Liste der Entwickler einer frühen Sprache, die schon<br />

20Wie<br />

in den 1960er Jahren das strukturierte Programmieren<br />

ermöglichte. Da Entwickler sie gerade in ihren I/​O-Operationen uneinheitlich<br />

implementierten, kam die gesuchte Sprachfamilie kaum<br />

zum Einsatz, beeinflusste aber ihre Nachfolger konzeptionell.<br />

Als Frucht internationaler Zusammenarbeit entstand in den<br />

1960er Jahren Algol: Der Amerikaner John W. Backus und<br />

der Däne Peter Naur hatten die Backus-Naur-Form zur Syntax-<br />

Beschreibung erdacht. Der Deutsche Friedrich L. Bauer begründete<br />

den Studiengang Informatik in Deutschland.<br />

Als KI-Experte und Lisp-Erfinder war der Amerikaner John<br />

McCarthy dabei. Auch Alan J. Perlis stammte aus den USA,<br />

Heinz Rutishauser aus der Schweiz und Klaus Samelson aus<br />

Deutschland. Gemeinsam legten sie den Grundstein der strukturierten<br />

Programmierung, die auf Algorithmen baut statt auf<br />

die Implementierung. Die Arbeit des multinationalen Teams<br />

beeinflusste nachfolgende Spachen stark. (jk) <br />

n<br />

Winterrätsel 04/2014<br />

Forum<br />

www.linux-magazin.de<br />

83<br />

alles, was nicht belegbar ist, keine Wahrheit darstellt,<br />

nennen Logiker die Closed-World-Assumption. Welche<br />

18Dass<br />

Sprache baut darauf auf? Der Entwickler beschreibt in ihr<br />

zwar das Problem, nicht aber den Lösungsweg.<br />

Anders als viele andere Programmiersprachen legt Prolog nicht<br />

fest, wie der ausführende Computer zu einem Ergebnis kommen<br />

oder wie er sich verhalten soll. Stattdessen notiert der<br />

Programmierer bekannte Fakten und Regeln im Sinne der Prädikatenlogik.<br />

Der Sprachinterpreter prüft dann, ob sich davon<br />

ausgehend eine Hypothese bestätigen lässt und ob und wie sie<br />

der Anwender parametrisieren muss.<br />

angehende Mathematikerin neigte in ihrer Jugend<br />

zu Schüchternheit. Nachdem sie in einem renommierten<br />

19Eine<br />

Forschungszentrum angeheuert hatte, benannte sie – der<br />

Überlieferung nach – die dort mit ihrem Team entwickelte Sprache<br />

selbstironisch nach unverbindlichen Partygesprächen. Von welcher<br />

Klasse erbt jede Instanz innerhalb dieser Sprache?<br />

An der Ideenschmiede Palo Alto Research Center entwickelte<br />

Adele Goldberg mit ihrem Team Smalltalk, die das objektorientierte<br />

Modell sehr konsequent umsetzte. Entwickler arbeiteten<br />

auf einem persistenten Desktop, der seinerseits ebenso wie<br />

Compiler und Editor weitgehend in Smalltalk geschrieben war<br />

und die sich alle zur Laufzeit modifizieren ließen.<br />

Klassen können und müssen in Smalltalk nur von einer Oberklasse<br />

erben. Auf diese Weise vermeiden sie das so genannte<br />

Diamond-Problem, bei dem ein Objekt auf zwei verschiedenen<br />

Infos<br />

[1] DVB Link für Raspberry PI:<br />

[http://dvblogic.com/en/software/raspberry-pi/]<br />

[2] Phil Chastney, „An APL Unicode Font“:<br />

[http:// archive. vector. org. uk/ art10002160]<br />

[3] APL Syntax and Symbols:<br />

[http:// en. wikipedia. org/ wiki/ APL_syntax_and_symbols]<br />

Lösung und Gewinner<br />

Die Abbildung auf der zweiten Seite oben verrät<br />

alle korrekten Einzelantworten. Wer sie in<br />

das im vorletzten Heft beschriebenen Schema<br />

einfütterte, kam auf den Lösungssatz „A Plea<br />

for lean Software“ und konnte diesen bis zum<br />

15. Februar an [winter@linux-magazin.de] schicken.<br />

Alle 100-prozentig richtigen Antworten,<br />

es waren 14, haben an der anschließenden Verlosung<br />

teilgenommen.<br />

Die ausgeklügelte Videorecorder- und TV-<br />

Soft ware von DVB Link für den<br />

Raspberry Pi [1] – inklusive<br />

eines kompatiblem USB-Empfängers<br />

– gewonnen hat der<br />

<strong>Linux</strong>-<strong>Magazin</strong>-Leser Valentin<br />

Puls.<br />

Herzlichen Glückwunsch!


Forum<br />

www.linux-magazin.de Recht 04/2014<br />

84<br />

Die Pro-Sieben-Sat1-Tochter Myvideo siegt vor Gericht gegen eine OSS-Firma<br />

Haftungsfragen<br />

Die Community eines Open-Source-Downloadprogramms hat ein Modul programmiert, das geltende Kopierschutzbestimmungen<br />

verletzt. Also geht die Pro-Sieben-Sat1-Tochter Myvideo vor Gericht – und gewinnt<br />

gegen die Firma hinter der OSS-Software. Ein Urteil mit Konsequenzen. Christopher De Nicolo, Markus Feilner<br />

© bellagee, photocase.com<br />

Im Open-Source-Umfeld sind Abmahnungen<br />

keine Seltenheit, auch hier sind<br />

typischerweise Urheberrechtsverletzungen<br />

oft Gegenstand des Streits. Wie die<br />

Geschichte des Projekts GPL-Violations<br />

[1] zeigt, stammen die Abmahnungen<br />

häufig aus der Open-Source-Community<br />

selbst. Allerdings gibt es auch welche von<br />

außen, die sich gegen freie Software richten<br />

und bisweilen drastische Konsequenzen<br />

haben können. Ein Fall, der kürzlich<br />

gegen die Open-Source-Gemeinschaft<br />

ausgetragen wurde, dreht sich um das in<br />

Java geschriebene Jdownloader 2 und die<br />

Firma Appwork [2].<br />

Jdownloader 2 als Beispiel<br />

Der beliebte Open-Source-Downloadmanager<br />

erleichtert das Herunterladen und<br />

dauerhafte Speichern von zum Beispiel<br />

gestreamten Inhalten aus dem Internet<br />

ungemein (Abbildungen 1 und 2). Dank<br />

Java läuft er auf allen gängigen Betriebssystemen<br />

und Plattformen, er bringt<br />

zahlreiche komfortable Funktionen mit,<br />

beispielsweise Remote-Steuerung via<br />

CLI, Android und Webinterface. Die<br />

abgemahnte Appwork GmbH hatte ihn<br />

unter der URL [3] zum Download angeboten<br />

(bei Redaktionsschluss hatte sich<br />

allerdings der Eintrag im Impressum der<br />

Webseite geändert).<br />

Eskaliert der Streit um eine Abmahnung<br />

und meinen es beide Seiten ernst, dann<br />

trifft man sich früher oder später vor<br />

Gericht. Dort wird dann mit schnell<br />

wachsenden Kosten und Risiken über<br />

Rechtsfragen gestritten, die für die OSS-<br />

Gemeinschaft allgemein von Interesse<br />

sind: Kopierschutz, die Bedeutung von<br />

„technisch wirksam“, Störer- und Geschäftsführerhaftung<br />

und wer überhaupt<br />

für ein OSS-Projekt haftet.<br />

Nachdem sich die Appwork GmbH als<br />

Betreiberin der Webseite Jdownloader.<br />

org auf eine Abmahnung mit der Aufforderung<br />

zur Abgabe einer Unterlassungserklärung<br />

nicht eingelassen hatte,<br />

erzwang der Abmahner, die Pro-Sieben-<br />

Sat1-Gruppe [4], gegen den Geschäftsführer<br />

und seine Firma Appwork eine<br />

einstweilige Verfügung [5] auf „Unterlassung<br />

der Herstellung, des Vertriebs und<br />

des Besitzes (zu gewerblichen Zwecken)<br />

der Software Jdownloader 2“.<br />

Als Begründung stand darin, die Software<br />

ermögliche es Anwendern illegalerweise,<br />

geschützte Videostreams herunterzuladen<br />

und zu speichern, selbst wenn diese<br />

durch „die technischen Maßnahmen Encrypted<br />

Real-Time Messaging Protocol<br />

(RTMPE, [6]) und durch Token-URLs<br />

geschützt waren“.<br />

Hinzu kommt sicherlich auch, dass den<br />

Klägern die komfortable Bedienung des<br />

Download-Helpers ein Dorn im Auge war,<br />

der die Zwischenablage des Anwenders<br />

überwacht und vorauseilend gehorsam<br />

HTTP- und FTP-Links nach herunterladbaren<br />

Inhalten wie Videodateien oder<br />

Flash-Videos scannt. Anwender können<br />

so mit wenigen Mausklicks Inhalte auf<br />

die Festplatte speichern, im vorliegenden<br />

Fall auch verbotenes, weil kopiergeschütztes<br />

Material aus der Mediathek<br />

der Klägerin.<br />

Um dies dem Gericht glaubhaft zu machen,<br />

hatte ein Rechtsanwalt des Musikverlages<br />

Myvideo vor dem Verfahren eine<br />

Version von Jdownloader 2 heruntergeladen<br />

und auf seinem Rechner installiert.<br />

Damit war es ihm ein Leichtes, von der<br />

Webseite der Pro-Sieben-Sat1-Tochter<br />

Myvideo.de ([7], Abbildung 3) ein geschütztes<br />

Video herunterzuladen und<br />

dauerhaft zu speichern. Danach konnte<br />

er das Video mit einem herkömmlichen<br />

Mediaplayer beliebig oft abspielen.<br />

Ausstiegsszenario<br />

In einem solchermaßen umstrittenen Abmahnfall<br />

gehen die Kosten schnell in die<br />

Höhe. Wie hoch, darüber entscheiden


Abbildung 1: Jdownloader 2 unterstützt viele Plugins und kann Videodateien aus Weblinks extrahieren, doch<br />

hier ist Vorsicht geboten: Nicht immer ist das legal.<br />

der gerichtliche Streitwert und der anwaltliche<br />

Gegenstandswert. Das Gericht<br />

hatte im Verfahren einen Streitwert von<br />

200 000 Euro festgesetzt – Streitwerte<br />

über 25 000 Euro sind in gewerblichen<br />

Urheberrechtsstreitigkeiten fast schon die<br />

Regel (Abbildung 4). Eine Deckelung des<br />

Gegenstandswerts auf 1000 Euro nach §<br />

97a Abs. 3 UrhG kommt nur bei nicht gewerblichen<br />

Rechtsverletzungen und auch<br />

nur bei Erst-Tätern in Betracht.<br />

Dass der vorliegende Streitwert möglicherweise<br />

doch zu hoch angesetzt war,<br />

mag die Gegenseite dazu bewogen haben,<br />

Beschwerde gegen den Streitwertbeschluss<br />

einzulegen. Legt man den Betrag<br />

von 200 000 Euro auch für das anwaltliche<br />

Abmahnschreiben zu Grunde, so belaufen<br />

sich die mittleren Anwaltsgebühren<br />

für dieses Schreiben allein auf mehr<br />

als 3000 Euro. Durch Unterzeichnung der<br />

Unterlassungserklärung wäre die abgemahnte<br />

GmbH und deren Geschäftsführer<br />

vermutlich noch mit diesem Betrag<br />

davongekommen.<br />

Gerichts- und<br />

Anwaltskosten<br />

legte die Beklagte Widerspruch ein, was<br />

weitere Gerichtsgebühren und Anwaltskosten<br />

hinzukommen ließ.<br />

Dass nur der Geschäftsführer Widerspruch<br />

einlegte und nur er sich anwaltlich<br />

vertreten ließ, begrenzte die Folgekosten<br />

einigermaßen. Hätten sowohl Antragstellerin<br />

als auch die beiden Antragsgegner –<br />

anwaltlich vertreten, vor dem Landgericht<br />

herrscht Anwaltszwang – gemeinsam Widerruf<br />

eingelegt, wäre das zu erwartende<br />

Prozesskostenrisko bei einem Streitwert<br />

von 200 000 Euro für das einstweilige<br />

Verfügungsverfahren auf nahezu 20 000<br />

Euro angewachsen.<br />

Ein etwaiges Berufungsverfahren würde<br />

das Kostenrisiko sogar mehr als verdoppeln.<br />

Derartige Summen können für<br />

kleine Gesellschaften, zum Beispiel eine<br />

haftungsbeschränkte Unternehmergesellschaft,<br />

ein hohes Risiko bedeuten, im<br />

schlimmsten Fall gar bis zur Insolvenz.<br />

Und dabei ist von Schadenersatzansprüchen<br />

noch gar nicht die Rede. Keine guten<br />

Aussichten für kleine Unternehmen,<br />

möchte man meinen.<br />

Aber hätte man den Unterlassungsanspruch<br />

und die Kosten früher abwehren<br />

können? Wenn die GmbH die Unterlassungserklärung<br />

unterzeichnet hätte, wären<br />

wohl nur die vorgerichtlichen Kosten<br />

angefallen und die Angelegenheit wäre<br />

zunächst erledigt gewesen. Abgesehen<br />

davon, dass man wegen der weitreichenden<br />

Folgen einer Unterlassungserklärung<br />

diese nicht ungeprüft unterschreiben<br />

sollte, gab es wohl aus Sicht der Abgemahnten<br />

rechtliche Zweifel an der Rechtmäßigkeit,<br />

sodass man sich entschied,<br />

die einstweilige Verfügung zumindest in<br />

Kauf zu nehmen.<br />

Was bedeutet eigentlich<br />

„technisch wirksam“?<br />

Einer der Knackpunkte im Verfahren war<br />

die Frage, ob es sich bei der verwendeten<br />

RTMPE-Verschlüsselung überhaupt<br />

um eine wirksame Schutzmaßnahme gemäß<br />

§ 95a UrhG handelt. Die Beklagte<br />

meinte, das technische Verfahren nutze<br />

eher eine Art Verschlüsselung der Daten<br />

dazu, Man-in-the-Middle-Attacken, also<br />

Recht 04/2014<br />

Forum<br />

www.linux-magazin.de<br />

85<br />

Da Appworks die Erklärung nicht abgab,<br />

erwirkte der Musikverlag im Frühjahr<br />

2013 eine einstweilige Verfügung vor Gericht.<br />

Hier fielen zunächst mehr als 2600<br />

Euro Gerichts- und weitere Anwaltsgebühren<br />

an. Bisher entstanden für den<br />

Erlass der einstweiligen Verfügung daher<br />

schon Kosten in Höhe von nahezu 7500<br />

Euro. Gegen die einstweilige Verfügung<br />

Abbildung 2: In einem Nightly Build von Jdownloader 2 war der umstrittene Videodecoder-Hack enthalten.


Forum<br />

www.linux-magazin.de Recht 04/2014<br />

86<br />

Abbildung 3: Videos aus dem Fundus von Pro Sieben Sat1 TV auf Myvideo sind nur scheinbar frei.<br />

ein Mitstreamen Dritter bei der Übertragung<br />

des Streams zu verhindern. RTMPE<br />

sei somit kein Kopierschutz.<br />

Das Urheberrechtsgesetz sagt dazu:<br />

„Gemäß § 95a UrhG sind technische<br />

Maßnahmen Technologien, Vorrichtungen<br />

und Bestandteile, die im normalen<br />

Betrieb dazu bestimmt sind, geschützte<br />

Werke oder andere nach diesem Gesetz<br />

geschützte Schutzgegenstände betreffende<br />

Handlungen, die vom Rechtsinhaber<br />

nicht genehmigt sind, zu verhindern<br />

oder einzuschränken. Technische<br />

Maßnahmen im Sinne des § 95a UrhG<br />

sind wirksam, soweit sie durch die Nutzung<br />

eines geschützten Werkes oder<br />

eines anderen nach diesem Gesetz geschützten<br />

Schutzgegenstandes von dem<br />

Rechtsinhaber durch eine Zugangskontrolle,<br />

einen Schutzmechanismus wie Verschlüsselung,<br />

Verzerrung oder sonstige<br />

Umwandlung oder einen Mechanismus<br />

zur Kontrolle der Vervielfältigung, die die<br />

Erreichung des Schutzziels sicherstellen,<br />

unter Kontrolle gehalten wird.“<br />

Wirksam ist, was umgangen<br />

werden muss<br />

Das Landgericht Hamburg bejahte die<br />

wirksame technische Schutzmaßnahme<br />

und bestätigte zugleich die Tendenz in<br />

der Rechtsprechung, keine allzu hohen<br />

Anforderungen an die Wirksamkeit des<br />

Schutzes zu stellen. Er müsse keinen absoluten<br />

Schutz bieten, sondern nur eine<br />

Hürde sein, die ein normaler Nutzer nicht<br />

ohne Weiteres überwinden könne. Keine<br />

Hürde würde vorliegen, wenn sich der<br />

Schutz mit allgemein verfügbaren legalen<br />

Programmwerkzeugen umgehen ließe.<br />

Letztlich verhindere RTMPE erfolgreich,<br />

so das Gericht, dass der Stream zu irgendeinem<br />

Zeitpunkt als vollständige Videodatei<br />

auf dem Computer vorliegt und<br />

so eine urheberrechtliche Vervielfältigung<br />

mittels Download eintritt. Das Argument<br />

der Gegenseite, dass es sich dabei lediglich<br />

um eine Verschlüsselung handle, die<br />

den Übertragungsweg betreffe, spielte für<br />

das Gericht keine Rolle, sondern nur das<br />

Ergebnis: die Erschwerung des vollständigen<br />

Downloads.<br />

Zu dieser Überzeugung des Gerichts trug<br />

auch die Produktbeschreibung der benutzten<br />

Streamingsoftware von Adobe<br />

bei. In ihr beschreibt und vermarktet der<br />

Hersteller selbst RTMPE als „Copy Protection<br />

Mechanism“ ([8], Abbildung 5).<br />

Aber das ist doch ein Open-<br />

Source-Projekt?<br />

Die gegnerische Partei brachte vor, dass<br />

die Software als Open-Source-Produkt<br />

entstanden sei, deren Entwicklung von<br />

einer Gemeinschaft<br />

unabhängiger Entwickler<br />

vorangetrieben<br />

werde. Diese Entwickler<br />

handeln nicht<br />

im Auftrag der GmbH,<br />

die Webseite Jdownloader.org<br />

stelle lediglich<br />

eine Plattform für<br />

die Entwicklung zur<br />

Verfügung.<br />

Außerdem sei in der<br />

offiziellen Programmversion<br />

der GmbH die<br />

RTMPE-Funktionalität<br />

nie implementiert ge-<br />

wesen. Nur eine Betaversion, kompiliert<br />

als Nightly Build, habe ein RTMPE-Plug in<br />

enthalten. Dies aber habe ein Open-<br />

Source-Entwickler implementiert, ohne<br />

dass die GmbH oder ihr Geschäftsführer<br />

davon Kenntnis erlangt hätten.<br />

Beide beriefen sich deshalb auf die Haftungserleichterung<br />

nach §§ 7 Abs. 2, 10<br />

TMG. Dementsprechend wären diejenigen<br />

haftungsrechtlich privilegiert, die nur<br />

fremde Informationen in einem Kommunikationsnetz<br />

übermitteln oder die den<br />

Zugang zur Nutzung dieser Informationen<br />

vermitteln.<br />

Das Landgericht Hamburg machte deutlich,<br />

dass die Haftungsprivilegierung<br />

grundsätzlich für eine Open-Source-<br />

Plattform gelten könne, lehnte jedoch<br />

eine Haftungserleichterung in diesem Fall<br />

ab, weil sich die GmbH die Entwicklung<br />

der Software zu eigen gemacht habe. Für<br />

das Gericht war entscheidend, dass die<br />

GmbH als Herausgeberin der Software<br />

auftrat und das Open-Source-Projekt nur<br />

am Rande erwähnte.<br />

Die Haftung des<br />

Geschäfts führers<br />

So war beispielsweise in einem Informationsfenster<br />

ein Copyright-Vermerk<br />

angebracht, der die GmbH als Rechte-<br />

Inhaberin auswies. Was das Gericht jedoch<br />

nicht diskutiert hat, ist die Frage, ob<br />

die Haftungsprivilegierung nicht eigentlich<br />

von vornherein ausscheidet, da sie<br />

bei Unterlassungsansprüchen nach der<br />

herrschenden Rechtsprechung nicht anwendbar<br />

ist. Ein Unterlassungsanspruch<br />

hätte damit trotz Haftungsprivilegierung<br />

weiterhin Bestand.<br />

Abbildung 4: Streitwerte jenseits von 25 000 Euro sind im gewerblichen<br />

Urheberrechtsstreit keine Seltenheit.<br />

© pakhnyushchyy, 123RF.com


© Simon Alvinge, 123RF.com<br />

Abbildung 5: Nach Fehlern oder Lücken bei der Implementierung eines<br />

Kopierschutzes fragt der Gesetzgeber nicht.<br />

Da der Geschäftsführer der GmbH die<br />

RTMPE-Funktionalität nicht selbst hinzugefügt<br />

hatte, prüfte das Gericht zunächst<br />

die Haftung des Geschäftsführers<br />

als Störer (also als der, der willentlich<br />

und adäquat kausal eine Rechtsverletzung<br />

herbeigeführt hat, ohne selbst Täter<br />

oder Teilnehmer zu sein – vergleichbar<br />

offenen WLAN-Hotspots) und führte aus,<br />

dass nach ständiger Rechtsprechung neben<br />

der Haftung der GmbH als Störer im<br />

Normalfall keine Haftung des Geschäftsführers<br />

besteht, soweit Letzterer nicht an<br />

der Rechtsverletzung teilgenommen und<br />

nicht von ihr gewusst hat.<br />

Sorgfalts pflicht ungeklärt<br />

Nicht diskutiert hat das Gericht die umstrittene<br />

Frage, ob die Grundsätze der<br />

Störerhaftung überhaupt auf § 95a UrhG<br />

anwendbar sind und möglicherweise ohnehin<br />

nur eine Haftung als Täter oder<br />

Teilnehmer in Betracht zu ziehen ist. Das<br />

Landgericht begründete schließlich in bemerkenswerter<br />

Weise eine Haftung des<br />

Geschäftsführers als Täter. Als Geschäftsführer<br />

habe er dafür gesorgt, dass die<br />

Entwicklerplattform entstehen und dass<br />

das Programm mit RTMPE-Funktionalität<br />

heruntergeladen werden konnte.<br />

Auf der anderen Seite habe er keine Vorkehrungen<br />

getroffen, die verhindern,<br />

dass das Programm einer breiten Masse<br />

zu Verfügung gestellt wird. Eine Kontrolle<br />

war nicht vorgesehen.<br />

Dass ein unabhängiger Entwickler den<br />

RTMPE-Hack früher oder später implementieren<br />

und als Nightly Build der<br />

ganzen Internetgemeinde zur Verfügung<br />

stellen würde, sei für den Geschäftsführer<br />

abzusehen gewesen, zumal dies auf den<br />

eigenen Foren bereits<br />

diskutiert wurde.<br />

Die Folgen<br />

Im Ergebnis läuft die<br />

Argumentation des<br />

Gerichts auf eine urheberrechtliche<br />

Verkehrssicherungspflicht<br />

hinaus: Jeder, der in<br />

seinem Verantwortungsbereich<br />

eine Gefahrenquelle<br />

schafft,<br />

muss die ihm zumutbaren<br />

Maßnahmen zur Abwendung von<br />

Gefahren treffen, die für Dritte entstehen<br />

könnten. Eine solche Verkehrssicherungspflicht<br />

hat der BGH bereits im Wettbewerbsrecht<br />

statuiert, bislang wurde aber<br />

davon ausgegangen, dass es im Urheberrecht<br />

eine solche Pflicht neben der<br />

Störerhaftung nicht gebe.<br />

Für die Open-Source-Welt bedeutet dies<br />

eine aktive Prüfpflicht, jedenfalls für Software,<br />

die sie in eigenen Produkten einsetzt.<br />

Die gilt umso mehr, wenn Rechtsverletzungen<br />

auf der Hand liegen, beispielsweise<br />

wenn auf eigenen Foren die<br />

Implementierung bereits diskutiert wird.<br />

Unklar ist, ob eine solche Prüfpflicht auch<br />

reine OSS-Plattformen wie Sourceforge,<br />

Github oder einzelne Entwickler betrifft.<br />

Hier hilft möglicherweise, dass die Software<br />

als Sourcecode normalerweise nicht<br />

lauffähig und für den normalen Benutzer<br />

ohne Zusatzkenntnisse nicht zu benutzen<br />

ist. Anders mag das bei Binärprogrammen<br />

aussehen.<br />

Fazit<br />

Auch wenn Hoster von OSS-Projekten<br />

sich hier möglicherweise auf eine Haftungsprivilegierung<br />

berufen können und<br />

Schadenersatzansprüche nicht bestehen,<br />

können dennoch (kostenintensive) Unterlassungsansprüche<br />

bleiben. Es bleibt abzuwarten,<br />

ob sich diese Rechtsprechung<br />

durchsetzt. Das Gericht ist auch nicht<br />

näher darauf eingegangen, welche Vorkehrungen<br />

und Kontrollen der Geschäftsführer<br />

hätte treffen müssen. Inwieweit<br />

bei größeren Projekten die verdachtsunabhängige<br />

und ständige (automatisierte)<br />

Analyse jeder Codezeile machbar und<br />

zumutbar sein kann, bleibt unklar.<br />

Das erst im Dezember veröffentlichte Urteil<br />

vom 7.11.2013 [9] lässt folgende fünf<br />

grundlegende Schlussfolgerungen zu:<br />

n Die Anforderungen an wirksame technische<br />

Schutzmaßnahmen sind nicht<br />

hoch, es reicht, wenn der normale Benutzer<br />

diese nicht umgehen kann.<br />

n Die urheberrechtliche Abmahnung<br />

mit anschließender einstweiliger Verfügung<br />

ist ein scharfes und kostenintensives<br />

Schwert, das den Rechte-<br />

Inhabern an die Hand gegeben wird.<br />

n Die Abwehr einer solchen gestaltet<br />

sich schwierig und ist meist mit einem<br />

hohen Kostenrisiko verbunden.<br />

n Durch die Störerhaftung kann eine<br />

Haftung für die Teilnehmer an einem<br />

OSS-Projekt entstehen, ohne dass eigenes<br />

Verschulden notwendig ist.<br />

n Es gibt Tendenzen in der Rechtsprechung,<br />

durch die eine urheberrechtliche<br />

Verkehrssicherungspflicht statuiert<br />

wird, die auch den Geschäftsführer<br />

treffen kann.<br />

Vor allem die beiden letzten Punkte<br />

können ein beträchtliches Risiko für die<br />

Open-Source-Branche darstellen. Die<br />

kann nur hoffen, dass weitere Instanzen<br />

dem Hamburger Urteil nicht folgen. n<br />

Infos<br />

[1] GPL-Violations: [http:// gpl‐violations. org]<br />

[2] Appwork: [http:// wemakeyourappwork. com]<br />

[3] Jdownloader: [http:// jdownloader. org]<br />

[4] Pro Sieben Sat1:<br />

[http:// www. Pro‐Sieben‐Sat1. com]<br />

[5] Einstweilige Verfügung (Az.: 310 O 144/​13:<br />

[http:// raschlegal. de/ uploads/ media/ LG_<br />

HH__B. v. _25. 04. 13__Az. _310_O_144‐13. pdf]<br />

[6] RTMPE:<br />

[http:// blogs. adobe. com/ ams/ tag/ rtmpe]<br />

[7] Myvideo: [http:// www. myvideo. de]<br />

[8] Adobe zu RTMPE: [http:// blogs. adobe. com/​<br />

digitalmedia/ 2009/ 07/ new_rtmpe_<br />

content_protection_w_1/]<br />

[9] Das Urteil (Az. 310 O 144/​13): [http://​<br />

raschlegal. de/ uploads/ media/ LG_Hamburg_<br />

Urt__v__29_11_2013__AZ__310_O_144‐13. pdf]<br />

Der Autor<br />

Rechtsanwalt Dr. Christopher<br />

De Nicolo ist Mitglied<br />

der Rechtsanwaltskammer<br />

Nürnberg und berät eine<br />

Vielzahl von Open-Source-<br />

Firmen.<br />

Recht 04/2014<br />

Forum<br />

www.linux-magazin.de<br />

87


Forum<br />

www.linux-magazin.de Bücher 04/2014<br />

88<br />

Ein Informatik-Buch sowie ein Programmier-Ratgeber<br />

Tux liest<br />

Die Bücherseite beschäftigt sich diesmal sowohl mit Theorie als auch mit Praxis: Der erste Titel macht deterministische<br />

Automaten und Turing-Maschinen anschaulich, der zweite verhilft ganz pragmatisch zu besserem<br />

Code beim alltäglichen Programmieren. Tim Schürmann<br />

Welche Probleme lassen sich mit Computern<br />

überhaupt in endlicher Zeit lösen?<br />

Dieser Frage geht nicht nur die theoretische<br />

Informatik nach, sondern auch Tom<br />

Stuart in seinem englischsprachigen Buch<br />

„Understanding Computation“.<br />

Verstehen ohne Mathe<br />

Dabei verzichtet der Autor auf mathematische<br />

Formeln und dröge Beweise.<br />

Stattdessen setzt er durchgehend auf<br />

anschauliche Beispiele und liefert dazu<br />

gleich passenden Ruby-Code. Nach einer<br />

Schnelleinführung in Ruby geht Stuart<br />

auf den Unterschied zwischen Syntax<br />

und Semantik ein. Anschließend baut er<br />

einfache endliche Automaten und zeigt,<br />

wie diese reguläre Ausdrücke auswerten.<br />

Es folgen Kellerautomaten, die als Parser<br />

Verwendung finden, sowie im fünften Kapitel<br />

die erstaunlich universellen Turing-<br />

Maschinen.<br />

Im zweiten Buchteil dreht sich zunächst<br />

alles um den Lambda-Kalkül und seine<br />

Implementierung. Danach stellt Stuart<br />

ein paar einfache Systeme vor, die überraschenderweise<br />

eine Turing-Maschine<br />

simulieren und somit beliebige Programme<br />

ausführen können – darunter<br />

sogar Conway’s Game of Life. Das achte<br />

Kapitel kümmert sich um unmögliche<br />

Info<br />

Tom Stuart:<br />

Understanding<br />

Computation<br />

O’Reilly, 2013<br />

330 Seiten<br />

29 Euro<br />

(E-Book 23 Euro)<br />

ISBN 978-1-4493-2927-3<br />

Programme. Dort stellt Stuart auch den<br />

Begriff der Entscheidbarkeit und das<br />

Halte problem vor. Im letzten Kapitel zeigt<br />

der Autor noch, wie sich Probleme durch<br />

Abstraktionen lösen lassen – zumindest<br />

annähernd – und geht auf die Vorzüge<br />

einer statischen Semantik ein.<br />

Tom Stuart schafft es, das komplexe und<br />

schwierige Thema leicht verdaulich aufzubereiten.<br />

Allerdings endet sein Buch<br />

genau dort, wo es spannend wird. Viele<br />

Bereiche der theoretischen Informatik<br />

streift er nur oder lässt sie sogar ganz<br />

aus, etwa die NP-Vollständigkeit oder<br />

Chomsky-Grammatiken. Dennoch eignet<br />

sich das Buch für Programmierer, die<br />

ein wenig in die Berechenbarkeit hineinschnuppern<br />

möchten, sowie für Informatikstudenten<br />

als Ergänzung zu einem<br />

umfassenderen Lehrbuch.<br />

Code-Besserung<br />

Das vor einem Monat geschriebene<br />

Pro gramm macht, was es will, und der<br />

damals eindeutige Quelltext scheint zu<br />

Spaghetticode mutiert: Solche Situationen<br />

wollen Kathrin Passig und Johannes<br />

Jander mit ihrem Buch „Weniger schlecht<br />

programmieren“ verhindern. Auf knapp<br />

430 Seiten erhalten Entwickler Ratschläge<br />

für besseren Programmcode mit weniger<br />

Fehlern. Die Tipps beruhen auf den<br />

Praxis erfahrungen zahlreicher professioneller<br />

Programmierer. Die wenigen enthaltenen<br />

Codezeilen sind in Java, C++,<br />

C und PHP geschrieben.<br />

Zu Beginn verraten die Autoren, warum<br />

Entwickler sich an Style Guides halten<br />

sollten, wie man Variablen benennt, was<br />

verständliche Kommentare ausmacht, wo<br />

und wie man um Hilfe bittet und wie der<br />

Einzelne im Team überlebt. Anschließend<br />

erfährt der Leser, wie er Fehler aufspürt,<br />

Diagnosewerkzeuge einsetzt, wann Refactoring<br />

nützlich ist und wie er sein Werk<br />

testet. Als Bonus liefern die Autoren eine<br />

Liste mit typischen Fehlerquellen.<br />

Im letzten Drittel geht es um die Wahl der<br />

richtigen Werkzeuge. Entwickler erfahren<br />

hier, warum sich der Griff zu Bibliotheken<br />

und der Einsatz einer Versionskontrolle<br />

lohnen. Zudem gibt es Ratschläge<br />

zur Arbeit auf der Kommandozeile, zur<br />

objektorientierten Programmierung und<br />

zur Sicherheit, darunter etwa Tipps zum<br />

richtigen Umgang mit Passwörtern.<br />

Kathrin Passig und Johannes Jander<br />

verwenden einen lockeren, witzigen<br />

Schreibstil. Tragikkomische Beispiele<br />

aus der Praxis verdeutlichen, wie wichtig<br />

die vorgestellten Ratschläge sind. Insbesondere<br />

im ersten Drittel arbeiten die<br />

Autoren jedoch immer wieder mit recht<br />

ausufernden bildhaften Vergleichen, bei<br />

denen man sich wünscht, sie mögen<br />

doch endlich zum Punkt kommen.<br />

Die Verfasser richten sich zwar primär an<br />

Anfänger, Hobby-Entwickler und „nicht<br />

so erfahrene Programmierer“, ihr Buch<br />

liefert aber auch professionellen Entwicklern<br />

noch wertvolle Tipps. „Weniger<br />

schlecht programmieren“ macht sich<br />

damit gut auf dem Tisch jedes Programmierers.<br />

(mhu)<br />

n<br />

Info<br />

Kathrin Passig,<br />

Johannes Jander:<br />

Weniger schlecht<br />

programmieren<br />

O’Reilly, 2013<br />

460 Seiten<br />

25 Euro<br />

(E-Book 20 Euro)<br />

ISBN 978-3-89721-567-2


Forum<br />

www.linux-magazin.de Leserbriefe 04/2014<br />

90<br />

Auf den Punkt gebracht<br />

Leserbriefe<br />

Haben Sie Anregungen, Statements oder Kommentare? Dann schreiben Sie an [redaktion@linux-­magazin.­de].<br />

Die Redaktion behält es sich vor, die Zuschriften und Leserbriefe zu kürzen. Sie veröffentlicht alle Beiträge mit<br />

Namen, sofern der Autor nicht ausdrücklich Anonymität wünscht.<br />

Makefiles im Bild<br />

02/​14, S. 98: Zu Michael Schillis Auswahl<br />

von Perl-Modulen: Auch mein Modul,<br />

unter [http://​­makepp.​­sf.​­net] zu finden,<br />

verwandelt Makefiles in Graphen.<br />

Daniel Pfeiffer per E-Mail<br />

TÜV für IT<br />

03/​14, S. 24: Im Beitrag „Beinharter Erfolg“<br />

habe ich einen kleinen Fehler entdeckt.<br />

Dort ist von einem „TÜV Deutschland“<br />

die Rede, den es aber gar nicht gibt.<br />

Es existieren mehrere TÜV-Konzerne, die<br />

Deutschland mehr oder weniger regional<br />

(Süd, Nord, Rheinland und so weiter)<br />

aufgeteilt haben. In der Quelle ist tatsächlich<br />

nur vom TÜV IT die Rede, der zum<br />

TÜV Nord gehört.<br />

Christian Seip, per E-Mail<br />

Big Memory<br />

03/​14, S. 92: Der Artikel „Speicherfresser“<br />

hat mich angeregt, einem mir wohlbekannten<br />

Problem nachzugehen. Mein<br />

Anwendungsfall: Die von einem Backup-<br />

Programm gelesenen Daten landen im<br />

Cache, obwohl sie dort eigentlich nichts<br />

zu suchen haben. Die gelesenen Daten<br />

werden nicht in den nächsten Minuten<br />

er<strong>neu</strong>t benötigt.<br />

Während der (sehr gute) Artikel sich<br />

mit den Auswirkungen beschäftigt, kann<br />

man auch das Problem bei der Wurzel<br />

packen: Vom Backup-Programm gelesenen<br />

Daten gehören nicht in den Cache.<br />

Dafür gibt es »posix_fadvise()« und »PO-<br />

SIX_FADV_DONTNEED«. Für Rsync ist<br />

das – soweit ich weiß – mit der Option<br />

-»‐drop‐cache« möglich. Daneben gibt<br />

es ein Tool namens Nocache, das man<br />

anderen Kommandos voranstellen kann:<br />

[https://​­github.​­com/​­Feh/​­nocache]<br />

Thomas Güttler per E-Mail<br />

Bei aller Ähnlichkeit funktioniert »posix_<br />

fadvise()« in der Tat etwas anders als das<br />

erwähnte »O_DIRECT«. Allerdings sehen<br />

wir in vielerlei Hinsicht ähnliche Probleme:<br />

Man muss selbst programmieren<br />

und genau wissen, was man tut, sonst<br />

schießt man sich schnell ins eigene Bein.<br />

Eine Anwendung, die sich nicht daran<br />

hält, zerstört unter Umständen das gesamte<br />

System. (Willi Nüßer) n<br />

Errata<br />

03/​14, S. 50: Im Kasten „So haben wir getestet“<br />

hatte sich ein Fehler eingeschlichen.<br />

Dort ist an drei Stellen die Gesamtgröße<br />

mit der Einheit Byte angeben, es muss aber<br />

KByte heißen.


Know-how<br />

www.linux-magazin.de Kern-Technik 04/2014<br />

92<br />

Kernel- und Treiberprogrammierung mit dem <strong>Linux</strong>-Kernel – Folge 73<br />

Kern-Technik<br />

Das Tracing-Werkzeug Ktap hilft Admins und Kernelentwicklern bei Tuning und Fehlersuche. Diese Kern-Technik<br />

zeigt die ersten Schritte mit dem Interpreter im Kernel. Jürgen Quade, Eva-Katharina Kunst<br />

© psdesign1, Fotolia<br />

73<br />

<strong>Linux</strong> bietet schon seit Kernel 2.6.9 vom<br />

Oktober 2004 Kernel-Tracing, also die<br />

Möglichkeit, Informationen über Kernelinterne<br />

Abläufe nachzuverfolgen. Bereits<br />

2005 stellte die „Kern-Technik“ die damals<br />

aktuellen Kernel-Interfaces Kprobe<br />

und Jprobe vor [1]. Da diese in der Handhabung<br />

jedoch kompliziert sind, haben<br />

sie nur eine sehr kleine Anwenderbasis<br />

für sich gewonnen.<br />

Mit Systemtap und Dtrace ist in den letzten<br />

Jahren ein Werkzeugkasten entstanden,<br />

mit dem sich das Tracing-Interface<br />

programmgesteuert nutzen lässt. Damit<br />

können Admins und Entwickler komplexe<br />

Fehlersuchen realisieren oder Performance-Bottlenecks<br />

aufspüren.<br />

Allerdings stehen diese Werkzeugkästen<br />

nicht allen offen. Das hängt zum einen<br />

mit lizenzrechtlichen Problemen, zum<br />

anderen mit den technischen Lösungen<br />

als solchen zusammen. Die Dtrace-Lizenz<br />

beispielsweise<br />

verhindert eine Aufnahme<br />

des Codes in<br />

den Standard-<strong>Linux</strong>-<br />

Kernel, auch erlauben<br />

die Komplexität<br />

und die Fixierung<br />

der Lösung auf eine<br />

einzelne Plattform<br />

keinen Einsatz in den<br />

kleineren eingebetteten<br />

Systemen. Außerdem<br />

kann Dtrace das<br />

System „einfrieren“<br />

lassen – bei produktiven<br />

Systemen lässt<br />

der Systemadministrator<br />

also lieber die<br />

Finger davon.<br />

Mit entsprechender<br />

Euphorie haben im<br />

Mai 2013 Admins und<br />

Kernelentwickler den <strong>neu</strong>en Ansatz Ktap<br />

[2] aufgenommen. Als schlanke Lösung<br />

erlaubt Ktap das Tracing auf Embedded-<br />

Systemen genauso wie auf Servern. Eine<br />

eingebaute Skriptsprache zur Definition<br />

der zu messenden Abläufe (Tracing), die<br />

in Bytecode übersetzt auf einer virtuellen<br />

Maschine (VM) im Kernel läuft,<br />

bietet nicht nur Flexibilität, sondern auch<br />

weitgehende Unabhängigkeit von der zugrunde<br />

liegenden Hardware.<br />

Ob auf einer x86-Plattform oder einem<br />

System mit ARM-Prozessor (Tablet,<br />

Smartphone): Der Code läuft gleichermaßen<br />

und vor allem auch in gemischten,<br />

verteilten Umgebungen.<br />

Vorbild Minecraft<br />

Beim Skripting hat sich der Ktap-Entwickler<br />

Jovi Zhangwei für Lua entschieden,<br />

eine Sprache, die speziell zur ein-<br />

fachen Funktionserweiterung von Programmen<br />

geschrieben wurde. Als eingebettete<br />

Skriptsprache findet Lua sich<br />

beispielsweise im Spiel Minecraft, im<br />

Netzwerkanalysator Wireshark, in Nmap<br />

und im Mediaplayer VLC. Der Interpreter<br />

beziehungsweise die zur Abarbeitung<br />

notwendige virtuelle Maschine umfasst<br />

nur wenige Hundert KByte, der Bytecode<br />

selbst besteht aus gerade mal 38 Befehlen.<br />

Die Sprache ist ein Mischmasch aus<br />

C und Pascal und nicht typisiert. Der Typ<br />

einer Variablen, ob Integer oder String,<br />

ergibt sich aus dem Kontext.<br />

Ende 2013 hat Linus Torvalds auf Vorschlag<br />

von Greg Kroah-Hartman den<br />

Ktap-Kerneltreiber in sein Standard-<strong>Linux</strong><br />

übernommen. Allerdings hagelte es<br />

stante pede kräftig Kritik, die Torvalds<br />

zwang den Commit wieder rückgängig zu<br />

machen. Die Kernelentwickler kritisierten<br />

allerdings nicht Ktap selbst, sondern die<br />

Geschwindigkeit, mit der ein so umfangreiches<br />

und auch sicherheitskritisches<br />

Subsystem ohne ausgiebige kritische<br />

Kontrolle übernommen werden sollte.<br />

Jetzt ist die Aufnahme des Subsystems<br />

für einen der nächsten Kernel, vielleicht<br />

3.15, vorgesehen. Dennoch lässt sich<br />

Ktap bereits heute sinnvoll einsetzen.<br />

Interpreter im Kernel<br />

Ktap besteht aus zwei Teilen: zum einen<br />

aus der zumeist als Modul realisierten<br />

Kernelerweiterung »ktapvm.ko« und zum<br />

anderen aus der Applikation »ktap«. Bei<br />

der Kernelerweiterung handelt es sich<br />

um den Interpreter, die VM und die Anbindung<br />

an die Kernelfunktionen, die so<br />

genannte Runtime-Library. Die Ktap-Applikation<br />

lädt Lua-Programme, übersetzt<br />

sie in Bytecode und übergibt diesen dem<br />

Kernel. Sie initiiert die Abarbeitung, holt


Applikation<br />

Bytecode<br />

Ktap<br />

Lua-Interpreter<br />

VM<br />

Output<br />

Ktap-Runtime-Library<br />

Ktap-Skript (Lua)<br />

Userland<br />

Kernel<br />

Kernelmodul<br />

»ktapvm.ko«<br />

»uprobe« »kprobe« »ftrace« »perf«<br />

Abbildung 1: Ktap besteht aus einem Kernelmodul<br />

und einer Applikation.<br />

die Ergebnisse ab und stellt sie auf dem<br />

Bildschirm dar (Abbildung 1).<br />

Die Installation von Ktap gestaltet sich<br />

unter Ubuntu 12.04 LTS erfreulich problemlos.<br />

Der mitgelieferte Betriebssystemkern<br />

ist bereits mit den benötigten<br />

Optionen »CONFIG_EVENT_TRACING«,<br />

»CONFIG_PERF_EVENTS«, »CONFIG_<br />

DEBUG_FS« und »CONFIG_FTRACE_SYS-<br />

CALLS« kom piliert. Damit braucht man<br />

nur noch den Ktap-Quellcode per Git auf<br />

den Rechner zu holen und per »make« zu<br />

übersetzen. Es empfiehlt sich, zuvor noch<br />

die Pakete »elfutils« und »libelf‐dev« zu<br />

installieren. Mit Hilfe dieser Werkzeuge<br />

beziehungsweise Bibliotheken verarbeitet<br />

Ktap ELF-Dateien (Executable and Linkable<br />

Format) sowie die in Programmdateien<br />

hinterlegten Meta-Informationen<br />

und löst Adressen auf. Damit ist es Ktap<br />

auch möglich, Applikationen zu überwachen.<br />

Listing 1 zeigt die Kommandos zum<br />

Installieren im Detail [3].<br />

Nach dem erfolgreichen »make load«<br />

aus dem Quellcode-Verzeichnis heraus<br />

ist Ktap einsatzbereit. Optional kann der<br />

Admin noch »sudo make install« sowie<br />

danach »depmod« aufrufen. Damit installiert<br />

er Kernelmodul und Applikation<br />

für den systemweiten Zugriff. Allerdings<br />

wird das Kernelmodul beim nächsten Update<br />

des <strong>Linux</strong>-Kernels nicht automatisch<br />

<strong>neu</strong> generiert. Für alle Freunde des Editors<br />

Vim installiert »make install« gleich<br />

Syntaxdateien mit, die die Schlüsselwörter<br />

im Editor farblich hervorheben.<br />

Einzeiler<br />

Ein erster Test mit Ktap ist schnell<br />

durchgeführt. Dazu gibt der Anwender<br />

im Ktap-Quellcodeverzeichnis (hier hat<br />

»make« den Applikationsteil abgelegt)<br />

auf der Kommandozeile den Einzeiler<br />

sudo ./ktap ‐e 'printf("Hello World\n")'<br />

ein. Verständlicherweise benötigt Ktap<br />

bei der Ausführung Rootrechte, sodass<br />

man es mit vorangestelltem »sudo« auf-<br />

Listing 1: Ktap installieren<br />

01 $ sudo apt‐get install elfutils libelf‐dev<br />

02 $ git clone http://github.com/ktap/ktap.git<br />

03 $ cd ktap<br />

04 $ make<br />

05 $ sudo make load<br />

Kern-Technik 04/2014<br />

Know-how<br />

www.linux-magazin.de<br />

93


Know-how<br />

www.linux-magazin.de Kern-Technik 04/2014<br />

94<br />

01 # ktap ‐e<br />

Ein weiteres Beispiel zeigt Listing 3. Hier<br />

listet Ktap fortlaufend jene Programme<br />

auf, die den Systemcall »open()« aufrufen.<br />

Dabei gibt es neben dem Programmnamen<br />

auch den Name der Dateien aus,<br />

auf die die Anwendungen zugreifen.<br />

Besonders interessant ist die Fähigkeit<br />

der Programmiersprache Lua, mit Tabellen<br />

in Kombination mit Histogrammen<br />

umzugehen. Tabellen dürfen in ihren Zeiruft.<br />

Auf die Eingabe des Passworts reagiert<br />

die Anwendung mit dem bekannten<br />

Erstlingswerk „Hello World“.<br />

Die Option »‐e« erlaubt es, ein Kommando<br />

direkt anzugeben, ohne sie erwartet Ktap<br />

eine Skriptdatei. Innerhalb der Hochkommata<br />

folgen die auszuführenden Befehle<br />

in der Programmiersprache Lua. Im obigen<br />

Fall ist das nur ein »printf()«. Das in<br />

der Programmiersprache C übliche Semikolon<br />

kann, muss aber nicht folgen. Eine<br />

»main()«-Funktion wie in C-Programmen<br />

gibt es nicht.<br />

Die so genannte Runtime-Library erweitert<br />

Lua unter anderem um Funktionen<br />

zum Kernel-Tracing. Wesentlich<br />

ist »trace«, gefolgt von der Angabe eines<br />

Funktionsbereichs und – durch Doppelpunkt<br />

getrennt – eines Funktionsnamens,<br />

durchaus auch in Form eines regulären<br />

'trace sched:sched_process_exec<br />

{ print("cpu pid name: ", cpu(), pid(),<br />

execname()); }'<br />

Listing 2: Aktive Rechenprozesse<br />

ausgeben<br />

02 Tracing... Hit Ctrl‐C to end.<br />

03 cpu pid name: 2 20990 sh<br />

04 cpu pid name: 1 20991 ps<br />

05 cpu pid name: 3 20992 grep<br />

06 cpu pid name: 3 20993 sh<br />

07 cpu pid name: 2 20994 sh<br />

08 cpu pid name: 3 20995 w<br />

09 cpu pid name: 1 20996 grep<br />

10 cpu pid name: 2 20998 grep<br />

Listing 3: Ktap überwacht das<br />

Öffnen von Dateien<br />

01 sudo ./ktap ‐e 'trace syscalls:sys_enter_open<br />

{ print( execname(), user_string(arg2)) }'<br />

02 <br />

03 Tracing... Hit Ctrl‐C to end.<br />

04 ktap /sys/kernel/debug/ktap/trace_pipe_6976<br />

05 sh /etc/ld.so.cache<br />

06 sh /lib/x86_64‐linux‐gnu/libc.so.6<br />

07 sh /tmp/numLogin.txt<br />

08 sh /etc/ld.so.cache<br />

09 sh /lib/x86_64‐linux‐gnu/libc.so.6<br />

10 w /etc/ld.so.cache<br />

11 w /lib/libproc‐3.2.8.so<br />

12 w /lib/x86_64‐linux‐gnu/libc.so.6<br />

13 grep /etc/ld.so.cache<br />

14 grep /lib/x86_64‐linux‐gnu/libdl.so.2<br />

15 grep /lib/x86_64‐linux‐gnu/libc.so.6<br />

16 w /proc/version<br />

17 w<br />

18 w /proc/1/stat<br />

19 [...]<br />

Ausdrucks. Außerdem folgt noch eine<br />

durch geschweifte Klammern eingefasste<br />

Codesequenz. Immer wenn die hinter<br />

»trace« definierte Kernelfunktion ausgeführt<br />

wird, arbeitet der Lua-Interpreter<br />

die Codesequenz ab (Abbildung 2).<br />

Prozesse beobachten<br />

Listing 2 zeigt einen Ktap-Befehl samt<br />

Ergebnis, der die gerade aktiven Rechenprozesse<br />

ausgibt, und zwar mit deren<br />

PID, Namen und der CPU, auf der der<br />

Job läuft. Die in der Befehlszeile verwendeten<br />

Funktionsaufrufe »cpu()«, »pid()«<br />

und »execname()« sind fest in Ktap eingebaut.<br />

Weitere Standardfunktionen listet<br />

Tabelle 1 auf.<br />

Auf das Kommando »./ktap ‐le« gibt Ktap<br />

die Namen der Funktionen aus, die man<br />

mit dem Befehl »trace« verwenden und<br />

überwachen kann. Bei Kernel 3.5.0 sind<br />

das immerhin 1254. Es gibt noch viele<br />

weitere Routinen, auf die Ktap über das<br />

Ftrace-Subsystem zugreift. Der Befehl<br />

»ktap ‐lf Programm« listet Funktionen<br />

auf, die man zusätzlich in der Anwendung<br />

»Programm« tracen kann.<br />

Wie sich damit ein in C geschriebenes<br />

„Hello World“-Programm überwachen<br />

lässt, zeigt Abbildung 3. Dort ist ebenfalls<br />

zu sehen, wie unter der Kontrolle<br />

Funktionsname<br />

print()<br />

printf(fmt, […])<br />

pairs(t)<br />

len(s)<br />

len(t)<br />

in_interrupt()<br />

exit()<br />

pid()<br />

tid()<br />

uid()<br />

execname()<br />

cpu()<br />

arch()<br />

kernel_v()<br />

user_string(addr)<br />

histogram(t)<br />

curr_task_info(offset,<br />

fetch_bytes)<br />

print_backtrace()<br />

Kernelsubsystem<br />

»trace fbereich:fname<br />

{<br />

Codesequenz<br />

} «<br />

»trace_end<br />

{<br />

Codesequenz<br />

} «<br />

von Ktap die mit »‐‐ Programm« angehängte<br />

zu tracende Applikation startet.<br />

Bereits laufende Programme lassen sich<br />

übrigens unter Angabe ihrer Prozess-ID<br />

mit »‐p PID« überwachen.<br />

Systemcalls<br />

Tabelle 1: Funktionen der Ktap-Runtime-Library [3]<br />

Funktionsname<br />

Wird mit jedem Auftreten<br />

der Funktion<br />

»fbereich:fname«<br />

abgearbeitet.<br />

Aufruf erfolgt nach<br />

[Strg] + [C]<br />

Abbildung 2: Per »trace« setzt der Anwender Überwachungspunkte.<br />

Bedeutung<br />

Schnelle, unformatierte Ausgabe von Daten<br />

Formatierte Ausgabe von Daten<br />

Funktion, um über alle Schlüssel-Wert-Paare einer Tabelle zu iterieren<br />

Falls das Argument ein String ist, wird die Länge des Strings zurückgegeben;<br />

ist das Argument eine Tabelle, ist das Ergebnis die Anzahl der<br />

Tabellenelemente<br />

Falls sich das System gerade im Interrupt-Kontext befindet, gibt die Funktion<br />

»true« zurück<br />

Beendet Ktap<br />

Gibt die PID des gerade aktiven Jobs zurück<br />

Gibt die Thread-ID (TID) des aktuell ausgeführten Jobs zurück<br />

Liefert die UID des aktuell ausgeführten Jobs<br />

Gibt den Namen des aktuell ausgeführten Jobs zurück<br />

Gibt die ID der CPU an, die für die Abarbeitung zuständig ist<br />

Gibt in Kurzform die Architektur der Maschine zurück (»x86«, »arm«, …)<br />

Liefert die Kernelversion<br />

Liefert den zu einer Adresse aus dem Userspace gehörenden String<br />

Stellt die als Parameter übergebene Tabelle als Histogramm dar<br />

Liefert einzelne 4 oder 8 Byte breite Werte aus dem Task-Control-Block<br />

des gerade aktiven Jobs zurück<br />

Gibt den Stack-Trace des aktuell ausgeführten Jobs aus


Abbildung 3: Ktap überwacht auch Applikationen.<br />

len beliebig viele Elemente enthalten, die<br />

sogar noch unterschiedlichen Datentyps<br />

sind. Sie lassen sich in Lua wie Felder<br />

über Indizes, aber auch in Form so genannter<br />

assoziativer Felder ansprechen.<br />

Ein solches Feld speichert einen Schlüssel-Wert-Verbund<br />

(Key-Value). Der Index<br />

des Feldes ist ein Name (String). Damit<br />

lässt sich etwa zählen, wie oft einzelne<br />

Systemcalls aufgerufen werden.<br />

Das Kommando »histogram()« stellt<br />

das Ergebnis übersichtlich dar. So zeigt<br />

Listing 4, wie Ktap die Häufigkeit von<br />

Systemcalls zählt, die an ihrem Namensvorsatz<br />

»sys_enter_« zu erkennen sind.<br />

Der Name des Systemcalls (»argname«)<br />

dient als Index (Schlüssel) für die Tabelle<br />

»s«. Mit jedem Auftreten zählt der zugehörige<br />

Tabelleneintrag hoch. Sobald der<br />

Anwender Ktap per [Strg]+[C] abbricht,<br />

ruft es die Funktion »trace_end()« auf<br />

(siehe Abbildung 2). Diese gibt die Tabelle<br />

»s« als Histogramm aus.<br />

Ausblick<br />

Auf seiner Homepage [4] nennt der<br />

Kernelentwickler Brendan D. Gregg weitere<br />

Beispiele, die belegen, welches Potenzial<br />

der Interpreter im Kernel hat. Der<br />

Overhead hält sich dabei nach Angaben<br />

Die Autoren<br />

Eva-Katharina Kunst, Journalistin, und Jürgen<br />

Quade, Professor an der Hochschule Niederrhein,<br />

sind seit den Anfängen von <strong>Linux</strong> Fans von Open<br />

Source. Mit „Embedded <strong>Linux</strong> lernen mit dem<br />

Raspberry Pi“ veröffentlicht Jürgen Quade demnächst<br />

sein drittes <strong>Linux</strong>-Buch.<br />

der Entwickler mit knapp 10 Prozent in<br />

Grenzen. Sie arbeiten derzeit daran, ihn<br />

weiter zu reduzieren.<br />

Allerdings sollte niemand vergessen, dass<br />

ein Interpreter im Kernel sicherheitstechnisch<br />

betrachtet ein Desaster darstellt,<br />

oder anders formuliert: ein Freudenfest<br />

für jeden ambitionierten Hacker. Ein Systemadministrator<br />

sollte das Ktap-Modul<br />

also nur vorübergehend bei Bedarf laden.<br />

Dann allerdings kann er selbst komplexe<br />

Fragestellungen tracen, zumindest dann,<br />

wenn er ausreichend Wissen über den<br />

Kernel, Lua und die Ktap-Runtime-Library<br />

besitzt.<br />

Weitere Informationen<br />

über die Programmiersprache<br />

Lua und die<br />

Ktap-Library vermittelt<br />

die nächste Folge<br />

der Kern-Technik. Daneben<br />

beschreibt sie<br />

das Foreign Function<br />

Interface (FFI) von<br />

Ktap. Mit ihm lassen<br />

sich direkt aus dem<br />

Lua-Skript Funktionen<br />

des <strong>Linux</strong>-Kernels aufrufen,<br />

beispielsweise<br />

»printk()«.<br />

Als Zugabe demonstriert<br />

die nächste Folge<br />

außerdem, wie man mit Ktap ein einfaches<br />

Tetris spielen kann (siehe Abbildung<br />

4). Alles im Betriebssystemkern,<br />

versteht sich. (mhu) n<br />

Infos<br />

[1] Quade, Kunst, „Kern-Technik, Folge<br />

22 – Debugging mit Kernel-Probes“:<br />

<strong>Linux</strong>-<strong>Magazin</strong> 08/​05, S. 82<br />

[2] Ktap: [http:// www. ktap. org]<br />

[3] Ktap-Tutorial:<br />

[http:// www. ktap. org/ doc/ tutorial. html]<br />

[4] Brendan D. Gregg, „Ktap Examples“:<br />

[http:// www. brendangregg. com/ ktap. html]<br />

Listing 4: Histogramm der am meisten verwendeten Systemcalls<br />

01 # ktap ‐e 's={} trace syscalls:sys_enter_* { s[argname]+=1 } trace_end { histogram(s) }'<br />

02 Tracing... Hit Ctrl‐C to end.<br />

03 ^C<br />

04 value ‐‐‐‐‐‐‐‐‐‐‐‐‐ Distribution ‐‐‐‐‐‐‐‐‐‐‐‐‐ count<br />

05 sys_enter_read |@@@@@@@@@@ 13677<br />

06 sys_enter_close |@@@@@ 7034<br />

07 sys_enter_open |@@@@@ 6922<br />

08 sys_enter_recvfrom |@@@ 4160<br />

09 sys_enter_newstat |@@ 3279<br />

10 sys_enter_poll |@ 2642<br />

11 sys_enter_setitimer |@ 2499<br />

12 sys_enter_writev |@ 2484<br />

13 sys_enter_ioctl |@ 2301<br />

14 sys_enter_select | 1271<br />

15 sys_enter_mmap | 1208<br />

16 sys_enter_rt_sigaction | 874<br />

17 sys_enter_newfstat | 666<br />

18 sys_enter_alarm | 660<br />

19 sys_enter_mprotect | 559<br />

20 sys_enter_fcntl | 510<br />

21 sys_enter_access | 372<br />

22 sys_enter_munmap | 287<br />

23 sys_enter_lseek | 260<br />

24 [...]<br />

Abbildung 4: Tetris im Kernel? Ktap und die nächste<br />

Kern-Technik machen’s möglich.<br />

Kern-Technik 04/2014<br />

Know-how<br />

www.linux-magazin.de<br />

95


Programmieren<br />

www.linux-magazin.de Clojure 04/2014<br />

96<br />

Webanwendungen in Clojure schreiben<br />

Web funktional<br />

Clojure sieht aus wie Lisp und läuft überall, wo Java installiert ist. Dank praktischer Tools und ausgereifter<br />

Bibliotheken ist mit der Sprache auch rasch eine moderne Webanwendung programmiert. Jan Stepien<br />

© Galina Peshkova, 123RF.com<br />

Im Jahr 2007 tauchte Clojure [1] in der<br />

Softwarelandschaft auf. Die funktionale<br />

Programmiersprache vereint Lisp-artige<br />

Syntax mit einer Implementierung auf<br />

der Java Virtual Machine (JVM). Binnen<br />

weniger Jahre hat sich eine Clojure-<br />

Community mit Usergroups [2] und<br />

Konferenzen wie der Euro Clojure [3]<br />

gebildet.<br />

Für die unter der Eclipse Public License<br />

stehende Sprache ist ein umfangreiches<br />

Ökosystem von Bibliotheken entstanden.<br />

Zudem profitiert sie von ihrer Java-Basis,<br />

dank der sie sich die VM mit Java und<br />

JRuby teilen kann. Auf Multiprozessorsystemen<br />

glänzt sie durch Nebenläufigkeit<br />

[4]. Für Java steht auch das „j“ im<br />

Namen, der sich sonst an das Programmierkonzept<br />

Closure anlehnt.<br />

Clojure-Verfechter loben die überdurchschnittliche<br />

Produktivität, die die ausdrucksstarke<br />

Sprache erlaubt, und beziehen<br />

sich gerne auf einen Aufsatz des<br />

Lisp-Verfechters und Unternehmers Paul<br />

Graham [5]. Das alles hat mittlerweile einige<br />

Internet-Startups dazu bewogen, auf<br />

die Sprache zu setzen, sie verwenden sie<br />

in großen Webanwendungen. Dieser Artikel<br />

zeigt, wie man Clojure nutzt, um einen<br />

einfachen Chat für den Webbrowser<br />

umzusetzen (Abbildung 1).<br />

Bauen mit Leiningen<br />

Die meisten Clojure-Nutzer setzen das<br />

Buildsystem Leiningen [6] ein, das sich<br />

auch um das Einspielen benötigter Bibliotheken<br />

kümmert. Wer es nicht in seinem<br />

Paketmanager findet, installiert es gemäß<br />

der Readme-Datei aus dem Quelltext. Das<br />

Kommando »lein ‐v« gibt die Leiningen-<br />

Version aus, beim ersten Aufruf lädt das<br />

Buildsystem noch ein paar Bibliotheken<br />

herunter und arbeitet eine Weile. Für<br />

diesen Artikel kam Version 2.3.4 zum<br />

Einsatz, daneben die jüngste stabile Clojure-Release<br />

1.5.1 sowie Open JDK 7 als<br />

Java-Implementierung.<br />

Das Projektverzeichnis für den Webchat<br />

legt das Kommando »lein new webapp«<br />

an und füllt es gleich mit einem Gerüst<br />

für die Anwendung. Abbildung 2 zeigt<br />

den Inhalt von »webapp«: Die Datei<br />

»project.clj« enthält Informationen über<br />

das Projekt und die Komponenten, die<br />

es benötigt – derzeit nur die aktuelle<br />

Clojure-Release.<br />

Das Verzeichnis »src/« enthält den ersten<br />

Name space der Anwendung »webapp.<br />

core«. Namespaces sind das wichtigste<br />

Mittel des Clojure-Programmierers, um<br />

Module mit unterschiedlichen Zuständigkeiten<br />

voneinander zu trennen. Dabei<br />

darf jeder Namespace alle oder einzelne<br />

Objekte in anderen referenzieren. Allerdings<br />

kann ein Namespace die Sichtbarkeit<br />

von Objekten nach außen durch<br />

»private« unterbinden.<br />

Interaktiv: REPL<br />

Die Datei »src/webapp/core.clj« enthält<br />

bereits eine Funktion. Sie lässt sich am<br />

interaktiven Kommandoprompt aufrufen,<br />

mit dem ein Clojure-Entwickler typischerweise<br />

neben dem Editor arbeitet. Wie in<br />

der Lisp-Familie üblich heißt die Eingabeaufforderung<br />

REPL (Read Eval Print<br />

Loop). Auf dem Terminal wechselt der<br />

Entwickler mit »cd« ins Projektverzeichnis<br />

und ruft dort »lein repl« auf.<br />

Die folgende REPL-Sitzung nutzt die<br />

Funktion »require«, um den Code aus<br />

»src/webapp/core.clj« zu laden, und »inns«,<br />

um in den Namespace zu wechseln.<br />

Schließlich ruft sie die Funktion »foo« mit<br />

dem Argument »"It works!"« auf:<br />

user=> (require 'webapp.core)<br />

nil<br />

user=> (in‐ns 'webapp.core)<br />

#<br />

webapp.core=> (foo "It works!")<br />

It works! Hello, World!<br />

nil<br />

Eine einfache Änderung an der Quelltextdatei<br />

demonstriert, wie die REPL auf


Die Funktion »http/run‐server« startet die<br />

Anwendung, »def« bindet den Rückgabewert<br />

an »srv«. Im Browser ist die Anwendung<br />

nun unter »http://localhost:8080«<br />

erreichbar. Die Funktion zum Starten des<br />

Webservers hat wiederum eine Funktion<br />

zurückgegeben. Das lässt sich in der<br />

REPL mit dem Prädikat »fn?« überprüfen.<br />

Ruft man die Funktion selbst auf, fährt<br />

der Server herunter:<br />

webapp.core=> (fn? srv)<br />

true<br />

webapp.core=> (srv)<br />

nil<br />

Clojure 04/2014<br />

Programmieren<br />

www.linux-magazin.de<br />

97<br />

Abbildung 1: Diese Chat-Anwendung lässt sich mit<br />

Clojure und Javascript umsetzen.<br />

geänderten Code reagiert. In Listing 1<br />

ist die Reihenfolge der Argumente in der<br />

»println«-Funktion vertauscht. Nach dem<br />

Abspeichern im Editor lädt man in derselben<br />

REPL nur den Namespace <strong>neu</strong>, um<br />

die geänderte Ausgabe zu erhalten:<br />

webapp.core=> (require 'webapp.core :reload)<br />

nil<br />

webapp.core=> (foo "It works!")<br />

Hello, World! It works!<br />

nil<br />

Diese Fähigkeit der REPL ermöglicht es<br />

dem Entwickler, fortlaufend seine Änderungen<br />

am Code auszuprobieren. Viele<br />

Editoren wie Vim oder Emacs können<br />

eine REPL integrieren.<br />

Gebündelte Bibliotheken<br />

Abbildung 2: Das Buildsystem Leiningen hat das<br />

Gerüst der Anwendung erzeugt.<br />

Die Clojure-Welt kennt kaum große, monolithische<br />

Frameworks. Die meisten Anwendungen<br />

verwenden eine Sammlung<br />

kleiner Bibliotheken, von denen jede einem<br />

klar eingegrenzten Zweck dient. Typische<br />

Clojure-Webanwendungen setzen<br />

auf die Bibliothek Ring, die eine Abstraktion<br />

des HTTP-Protokolls darstellt. Die<br />

Beispielanwendung wird allerdings nicht<br />

direkt Ring benutzen, sondern Compojure<br />

[7], das auf Ring aufsetzt. Dazu<br />

kommen einige weitere Libraries, die die<br />

Datei »project.clj« als Abhängigkeiten definiert<br />

(Listing 2).<br />

Das Hinzufügen einer <strong>neu</strong>en Bibliothek<br />

ist eine der wenigen Gelegenheiten, bei<br />

denen der Entwickler seine REPL <strong>neu</strong><br />

startet. Dafür gibt es zwar auch Tools,<br />

doch ein einfaches [Strg]+[D] und die<br />

er<strong>neu</strong>te Eingabe von »lein repl« tun es<br />

ebenso. Anschließend lädt Leiningen die<br />

erforderlichen Dateien automatisch herunter.<br />

Nun folgen weitere Änderungen<br />

an der Datei »core.clj« im Editor. Diese<br />

Zeilen holen Code aus der Compojure-<br />

Bibliothek in den aktuellen Namespace:<br />

(ns webapp.core<br />

(:require [compojure.core :refer U<br />

[defroutes GET]]))<br />

Dies importiert »defroutes« und »GET«<br />

aus dem Namespace »compojure.core«<br />

und macht sie nutzbar für eine erste einfache<br />

Anwendung:<br />

(defroutes app<br />

(GET "/" [] "Hello World"))<br />

Hier definiert »app« einen Ring-Handler.<br />

Er begrüßt Websurfer, die per HTTP-<br />

GET die Adresse »/« abrufen, mit „Hello<br />

World“. Damit das funktioniert, benötigt<br />

die Anwendung aber einen HTTP-Server.<br />

Den liefert Httpkit [8], das zu dem<br />

erforderlichen Namespace in »core.clj«<br />

hinzukommt:<br />

(ns webapp.core<br />

(:require [compojure.core :referU<br />

[defroutes GET]]<br />

[org.httpkit.server :as http]))<br />

Nun stehen alle Funktionen aus »org.<br />

httpkit.server« unter dem Präfix »http/«<br />

zur Verfügung. Damit lässt sich der Webserver<br />

in der REPL ausprobieren:<br />

user=> (require 'webapp.core :reload)<br />

nil<br />

user=> (ns webapp.core)<br />

nil<br />

webapp.core=> (def srv (http/run‐server appU<br />

{:port 8080}))<br />

#'webapp.core/srv<br />

Der Server lässt sich mit »(http/run‐server<br />

app {:port 8080}))« wieder starten,<br />

ohne einen Neustart der REPL. Man kann<br />

sogar mehrere Instanzen an unterschiedlichen<br />

Ports betreiben.<br />

Templating<br />

Die Datei »project.clj« nennt mit Hiccup<br />

[9] und Enlive [10] noch zwei weitere<br />

Abhängigkeiten. Beide sind Templating-<br />

Bibliotheken, jede verfolgt aber einen<br />

anderen Ansatz.<br />

Listing 3 macht Hiccup verfügbar und<br />

»app« hat sich geändert: Die Anwendung<br />

verwendet nicht mehr die Zeichenkette<br />

„Hello, World!“, sondern ruft die Funktion<br />

»root« auf, die in den Zeilen darüber<br />

definiert ist. Die verwendet Hiccup, um<br />

Listing 1: »src/webapp/core.clj«<br />

01 (defn foo<br />

02 "I don't do a whole lot."<br />

03 [x]<br />

04 (println "Hello, World!" x))<br />

Listing 2: »project.clj«<br />

01 :dependencies [[org.clojure/clojure "1.5.1"]<br />

02 [compojure "1.1.6"]<br />

03 [hiccup "1.0.4"]<br />

04 [enlive "1.1.5"]<br />

05 [http‐kit "2.1.16"]]<br />

Listing 3: »src/webapp/core.clj«<br />

01 (ns webapp.core<br />

02 (:require [compojure.core :refer [defroutes GET]]<br />

03 [org.httpkit.server :as http]<br />

04 [hiccup.core :as hiccup]))<br />

05 <br />

06 (defn root<br />

07 []<br />

08 (hiccup/html [:h1 "Hello, Hiccup!"]))<br />

09 <br />

10 (defroutes app<br />

11 (GET "/" [] (root)))


Programmieren<br />

www.linux-magazin.de Clojure 04/2014<br />

98<br />

01 <br />

02 <br />

03 <br />

01 (ns webapp.core<br />

HTML auszugeben. Eines der interessantesten<br />

Features von Clojure besteht darin,<br />

dass der Entwickler Teile des Codes ändern<br />

kann, ohne den Rest der virtuellen<br />

Maschine anzutasten. Da das Erzeugen<br />

des HTML-Codes in eine eigene Funktion<br />

ausgelagert ist, darf der Entwickler sie<br />

verändern und sieht sofort die Auswirkung<br />

auf die Anwendung.<br />

Guten Tag!<br />

Beispielsweise könnte man den Gruß<br />

abändern, etwa in „Guten Tag“. Befindet<br />

sich die REPL bereits im Namespace<br />

»webapp.core«, stehen die definierten<br />

Aliase zur Verfügung:<br />

webapp.core=> (hiccup/html [:h1 [:em "GutenU<br />

Tag"] ", Hiccup!"])<br />

"Guten Tag,, Hiccup!"<br />

Der Rückgabewert sieht gut aus – folgender<br />

Code hält die Änderung in »src/<br />

webapp/core.clj« fest:<br />

(defn root<br />

[]<br />

(hiccup/html [:h1 [:em "Guten Tag"] ",U<br />

Hiccup!"]))<br />

04 <br />

06 <br />

07 <br />

08 <br />

Listing 5: »src/webapp/core.clj«<br />

02 (:require [compojure.core :refer [defroutes<br />

GET]]<br />

03 [org.httpkit.server :as http]<br />

04 [hiccup.core :as hiccup]<br />

05 [net.cgrand.enlive‐html :refer<br />

[deftemplate]<br />

06 :as enlive]))<br />

01 webapp.core=> (clojure.repl/doc foo)<br />

02 ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐<br />

03 webapp.core/foo<br />

04 ([x])<br />

05 I don't do a whole lot.<br />

06 nil<br />

Listing 4: »resources/templates/<br />

index.html«<br />

07 <br />

Die nächste Eingabe lädt nach dem Speichern<br />

der Datei den Namespace <strong>neu</strong>:<br />

webapp.core=> (require 'webapp.core :reload)<br />

nil<br />

Den Server braucht der Entwickler dabei<br />

nicht <strong>neu</strong> zu starten. Das <strong>neu</strong>e Verhalten<br />

der Funktion »root« sollte schon<br />

nach dem Neuladen der Seite im Browser<br />

sichtbar sein.<br />

Hiccup verwendet einen Clojure-typischen<br />

Ansatz, um HTML zu erzeugen, indem<br />

es die Daten in einfachen Strukturen<br />

abbildet. Da die gebräuchlichen Typen<br />

wie Listen, Vektoren, Maps und Sets eine<br />

gemeinsame Programmierschnittstelle<br />

besitzen, lassen sich Hiccup-Templates<br />

praktischerweise mit den üblichen Clojure-Mitteln<br />

verarbeiten.<br />

Wer mit Webdesignern zusammenarbeitet,<br />

die den Umgang mit HTML gewohnt<br />

sind, hat mit Hiccup allerdings nicht viel<br />

Freude. Für dieses Szenario bietet sich<br />

besser die Templating-Bibliothek Enlive<br />

an. Ein simples Template, als Datei »resources/templates/index.html«<br />

gespeichert,<br />

zeigt Listing 4.<br />

Die <strong>neu</strong>e Version von »src/webapp/core.<br />

clj« in Listing 5 verwendet »:require«,<br />

um die Bibliothek Enlive einzubinden.<br />

Die Funktion »deftemplate« ersetzt die<br />

vorige Definition von »root« und wendet<br />

das Template an. Sie nimmt keine<br />

Argumente entgegen und setzt einfach<br />

»Hello, Enlive!« in das HTML-Element<br />

»« des Template ein. Um die Änderung<br />

sichtbar zu machen, reicht es, den<br />

Namespace in der REPL sowie die Seite<br />

im Browser <strong>neu</strong> zu laden.<br />

08 (deftemplate root "templates/index.html"<br />

09 []<br />

10 [:h1] (enlive/append "Hello, Enlive!"))<br />

11 <br />

Listing 6: Dokumentation und Quelltext<br />

12 (defroutes app<br />

13 (GET "/" [] (root)))<br />

07 webapp.core=> (clojure.repl/source foo)<br />

08 (defn foo<br />

09 "I don't do a whole lot."<br />

10 [x]<br />

11 (println "Hello, World!" x))<br />

12 nil<br />

Wer will, kann diese Experimente auf<br />

der REPL auf eigene Faust fortsetzen,<br />

eine Kleinigkeit ändern, vielleicht etwas<br />

kaputt machen und wieder reparieren.<br />

Als nützlich erweist sich dabei, dass sich<br />

in der REPL Dokumentation und Quelltext<br />

zu Funktionen nachschlagen lassen.<br />

Dazu dienen die Kommandos »clojure.<br />

repl/doc« und »clojure.repl/source«, wie<br />

die Beispielsitzung in Listing 6 zeigt.<br />

Eine Chat-Anwendung<br />

Aus den ersten Gehversuchen mit Clojure<br />

soll nun ein Webchat werden, der Websockets<br />

verwendet. Die Beispielanwendung<br />

besteht aus nur vier Dateien. In<br />

»project.clj« (Listing 7) findet sich die bereits<br />

bekannte Liste der Abhängigkeiten:<br />

Clojure selbst und drei Bibliotheken. Daneben<br />

macht aber der Schlüssel »:main«<br />

das folgende »webapp.main« zum Haupt-<br />

Namespace der Anwendung.<br />

Die verschachtelte Map neben »:profiles«<br />

gibt an, dass Leiningen alle Namespaces<br />

vor dem Ausführen (»:aot«, „ahead of<br />

time“) zu Java-Class-Dateien kompilieren<br />

soll. Diese beiden Einstellungen machen<br />

es möglich, die Anwendung später als<br />

Jar-Archiv zu exportieren.<br />

Der Namespace »webapp.core«, wie ihn<br />

Listing 8 zeigt, hat sich allerdings merklich<br />

verändert. Unter den erforderlichen<br />

Namespaces (»:require«) findet sich nun<br />

auch die Funktion »wrap‐params« aus<br />

»ring.middleware.params«. Mit ihrer<br />

Hilfe kann die Anwendung auf Parameter<br />

aus HTTP-Anfragen in Form eines Hash<br />

zugreifen.<br />

Auch das »root«-Template in Zeile 7 sieht<br />

anders aus. Es nimmt nun »request« als<br />

einziges Argument entgegen. Wird das<br />

Template aufgerufen, sucht es im HTML-<br />

Objektbaum nach dem CSS-Selektor<br />

»#name«. Wird es fündig, setzt es den<br />

passenden Wert aus dem Hash »request«<br />

ein, der folgende Struktur besitzt:<br />

{:params {"name" "gesuchter Wert"}}<br />

Ab Zeile 27 definiert das Listing die Funktion<br />

»app«. Diese legt zunächst ein Atom<br />

an, das ein leeres Set enthält und an das<br />

Symbol »channels« gebunden ist. Dieses<br />

Atom wird Verweise auf alle Verbindungen<br />

zum Chatroom speichern. Bei einem<br />

Atom handelt es sich in Clojure um einen<br />

Container, der andere Objekte aufnimmt.


Sie lassen sich dann nur mittels atomarer<br />

Transaktionen verändern. Das heißt, eine<br />

Änderung gelingt entweder vollständig<br />

oder Clojure versucht es noch einmal, sie<br />

durchzuführen.<br />

Clojure 04/2014<br />

Programmieren<br />

Veränderlich<br />

Das Atom vollbringt noch ein weiteres<br />

Kunststück: Mit seiner Hilfe lassen sich<br />

die in funktionalen Sprachen eigentlich<br />

unveränderbaren Datenstrukturen in<br />

Clojure dennoch ändern. Normalerweise<br />

geben Funktion nämlich nur aktualisierte<br />

Kopien einer Datenstruktur zurück, etwa<br />

beim Vektor »v« in der folgenden interaktiven<br />

Sitzung. Die Funktion »conj« fügt<br />

ihm ein zusätzliches Element hinzu –<br />

eigentlich nur der ausgegebenen Kopie<br />

– und der ursprüngliche Vektor bleibt<br />

unverändert:<br />

webapp.core=> (def v [1 2])<br />

#'webapp.core/v<br />

webapp.core=> v<br />

[1 2]<br />

webapp.core=> (conj v 3)<br />

[1 2 3]<br />

webapp.core=> v<br />

[1 2]<br />

Schließt der Clojure-Programmierer aber<br />

einen Vektor oder ein Set in ein Atom<br />

ein, kann er es als veränderliche Datensammlung<br />

benutzen, dazu mit garantiert<br />

exklusivem Zugriff:<br />

Abbildung 3: Der Pfad »/ws« ist für Websockets reserviert, andernfalls beschwert sich die Chat-Anwendung.<br />

webapp.core=> (def a (atom [1 2]))<br />

#'webapp.core/a<br />

webapp.core=> a<br />

#<br />

webapp.core=> (swap! a conj 3)<br />

[1 2 3]<br />

webapp.core=> a<br />

#<br />

Der Code innerhalb des »let«-Ausdrucks<br />

(Listing 8, Zeilen 38 bis 42) ruft die<br />

Funktion »wrap‐params« mit dem Rückgabewert<br />

eines »routes«-Aufrufs auf. Innerhalb<br />

von »routes« sind zwei Routen zu<br />

sehen. Die erste ist übrigens kein Aufruf<br />

der Funktion »root«, denn der hieße in<br />

Clojure »(root)«. Sie wird stattdessen als<br />

Wert übergeben. Um das Aufrufen kümmert<br />

sich Ring und übergibt dabei den<br />

HTTP-Request als Argument.<br />

Neu ist die zweite Route, die den Pfad<br />

»"/ws"« bedient. Sie ist als Rückgabewert<br />

der Funktion »websocket« mit dem<br />

Argument »channels« definiert. Wie im<br />

Funktionskörper (Zeilen 26 bis 35) zu sehen<br />

ist, gibt sie eine Funktion zurück, die<br />

Listing 7: »project.clj«<br />

01 (defproject webapp "0.1.0‐SNAPSHOT"<br />

02 :main webapp.main<br />

03 :profiles {:uberjar {:aot :all}}<br />

04 :dependencies [[org.clojure/clojure "1.5.1"]<br />

05 [http‐kit "2.1.16"]<br />

06 [compojure "1.1.6"]<br />

07 [enlive "1.1.5"]])<br />

www.linux-magazin.de<br />

99<br />

Listing 8: »src/webapp/core.clj«<br />

01 (ns webapp.core<br />

02 (:require [compojure.core :refer [routes GET]]<br />

03 [org.httpkit.server :as http]<br />

04 [net.cgrand.enlive‐html :as enlive]<br />

05 [ring.middleware.params :refer [wrap‐params]]))<br />

06 <br />

07 (enlive/deftemplate root "templates/index.html"<br />

08 [request]<br />

09 [:#name] (enlive/set‐attr :value (get‐in request [:params "name"])))<br />

10 <br />

11 (defn broadcast<br />

12 [channels message]<br />

13 (doseq [channel (deref channels)]<br />

14 (http/send! channel message)))<br />

15 <br />

16 (defn new‐client<br />

17 [channels channel name]<br />

18 (swap! channels conj channel)<br />

19 (doto channel<br />

20 (http/on‐close (fn [_]<br />

21 (swap! channels disj channel)<br />

22 (broadcast channels (str name " has left"))))<br />

23 (http/on‐receive (fn [msg] (broadcast channels (str name ": "<br />

msg)))))<br />

24 (broadcast channels (str name " joined")))<br />

25 <br />

26 (defn websocket<br />

27 [channels]<br />

28 (fn [request]<br />

29 (let [name (get‐in request [:params "name"])]<br />

30 (http/with‐channel request channel<br />

31 (if (http/websocket? channel)<br />

32 (new‐client channels channel name)<br />

33 (http/send! channel {:status 426<br />

34 :headers {"Content‐Type" "text/plain"}<br />

35 :body "You need WebSockets!"}))))))<br />

36 <br />

37 (def app<br />

38 (let [channels (atom #{})]<br />

39 (wrap‐params<br />

40 (routes<br />

41 (GET "/" [] root)<br />

42 (GET "/ws" [] (websocket channels))))))


Programmieren<br />

www.linux-magazin.de Clojure 04/2014<br />

100<br />

01 (ns webapp.main<br />

als Argument einen eingehenden HTTP-<br />

Request entgegennimmt. Aus dessen<br />

Parameterliste extrahiert sie »name«. Im<br />

nächsten Schritt bindet »http/with‐channel«<br />

das Symbol »channel« an einen<br />

asynchronen Kanal, der eine Websocket-<br />

Verbindung sein sollte. Ist er es nicht,<br />

meldet die Anwendung einen Fehler und<br />

setzt den HTTP-Status »426 Upgrade Required«<br />

(Abbildung 3).<br />

Im Erfolgsfall aber gibt der Code den Kanal<br />

an die Funktion »new‐client« weiter,<br />

zusammen mit dem Parameter »name«<br />

und dem Atom »channels«. Wie der<br />

Name andeutet, ist »new‐client« (Zeilen<br />

16 bis 24) für <strong>neu</strong> aufgenommene Verbindungen<br />

zuständig. Die Funktion ruft<br />

zunächst »swap!« mit dem Atom »channels«<br />

als Argument auf. »swap!« wendet<br />

die restlichen Argumente auf die Werte<br />

im Atom an und ersetzt dessen Inhalt mit<br />

dem Ergebnis.<br />

Der <strong>neu</strong>e Wert im Atom ist »(conj previous‐value<br />

channel)«, also das Set der<br />

existierenden Verbindungen zuzüglich<br />

der <strong>neu</strong>en. Darauf folgt der »doto«-Block,<br />

02 (:require [webapp.core :refer [app]]<br />

03 [org.httpkit.server :as http])<br />

04 (:gen‐class))<br />

05 <br />

06 (defn ‐main []<br />

Listing 9: »src/webapp/main.clj«<br />

07 (http/run‐server app {:port 8080})<br />

08 (println "The server is up!"))<br />

Abbildung 4: Leiningen packt die komplette Anwendung samt Bibliotheken in ein lauffähiges Jar-Archiv.<br />

der zwei Handler für den Kanal definiert.<br />

Beim Schließen des Kanals (»http/<br />

on‐close«) kommt wieder »swap!« zum<br />

Einsatz, aber diesmal mit »disj«, das im<br />

Gegensatz zu »conj« ein Element aus dem<br />

Set »channels« entfernt. Dann sendet die<br />

Anwendung einen Broad cast an die restlichen<br />

Kanäle, dass ein Gesprächsteilnehmer<br />

ausgestiegen ist.<br />

Durchsage an alle<br />

Beim Empfang (»http/on‐receive«) einer<br />

<strong>neu</strong>en Nachricht schickt das Programm<br />

sie einfach an alle Clients. Im letzten<br />

Schritt meldet »new‐client« die Ankunft<br />

eines <strong>neu</strong>en Teilnehmers.<br />

Die »broadcast«-Funktion selbst ist ebenfalls<br />

einen Blick wert (Listing 8, Zeilen<br />

11 bis 14). Sie nimmt zwei Argumente<br />

entgegen, das Atom mit allen Kanälen<br />

und eine Zeichenkette, die als Nachricht<br />

verschickt werden soll. Mit »deref« extrahiert<br />

sie aus dem »channels«-Atom das<br />

Set mit den Kanälen. Dann iteriert sie<br />

über alle Kanäle und verwendet die Funk-<br />

tion »http/send!«, um die Nachricht an<br />

jeden einzelnen zu übermitteln.<br />

Wer langsam unruhig wird und die Anwendung<br />

starten möchte, sollte sich noch<br />

kurz gedulden und die restlichen zwei<br />

Dateien ansehen: »src/webapp/main.clj«<br />

(Listing 9) enthält einen kleinen Namespace,<br />

der beim Starten der Anwendung<br />

hilft. Er bindet den HTTP-Server sowie<br />

die »app« aus »webapp.core« ein.<br />

Die Funktion »‐main« entspricht der<br />

»main«-Methode aus der Java-Welt – sie<br />

tritt in Aktion, wenn man die Anwendung<br />

auf der Kommandozeile aufruft. Sie startet<br />

den Server und gibt eine kurze Statusmeldung<br />

aus. Das Keyword »:gen‐class«<br />

im Namespace veranlasst den Compiler,<br />

»webapp.main« zu einer Java-Klasse zu<br />

kompilieren.<br />

Listing 10 schließlich ist das Enlive-<br />

Template. Es enthält HTML sowie etwas<br />

Javascript, um die Websocket-Verbindungen<br />

im Browser zu öffnen und HTML-<br />

Sonderzeichen zu maskieren.<br />

Startet der Entwickler die Anwendung<br />

nun mit »lein run«, ruft dies die »‐main«-<br />

Listing 10: »resources/templates/index.html«<br />

01 <br />

02 <br />

03 <br />

04 <br />

05 Chat<br />

06 <br />

07 <br />

08 <br />

09 <br />

10 <br />

11 function init() {<br />

12 var log = document.getElementById("log");<br />

13 var input = document.getElementById(<br />

"input");<br />

14 var name = document.getElementById(<br />

"name").value;<br />

15 var set_callback = function (fn) {<br />

16 document.getElementById("button").<br />

addEventListener("click", fn, false);<br />

17 input.addEventListener("keydown",<br />

function (event) {<br />

18 if (event.keyCode == 13) { fn(); }<br />

19 });<br />

20 }<br />

21 if (name) {<br />

22 var host = document.location.host;<br />

23 var websocket = new WebSocket("ws://" +<br />

host + "/ws?name=" + name);<br />

24 websocket.onmessage = function (event) {<br />

25 var pre = document.createElement(<br />

"pre");<br />

26 pre.innerHTML = event.data<br />

27 .replace(/&/g,'&amp;')<br />

28 .replace(//g,'&gt;');<br />

30 log.appendChild(pre);<br />

31 window.scrollTo(0, document.<br />

body.scrollHeight);<br />

32 };<br />

33 set_callback(function () {<br />

34 websocket.send(input.value);<br />

35 input.value = "";<br />

36 });<br />

37 } else {<br />

38 log.innerHTML = "What's your name?<br />

";<br />

39 set_callback(function () {<br />

40 window.location = "?name=" +<br />

input.value;<br />

41 });<br />

42 }<br />

43 }<br />

44 window.addEventListener("load", init, false);<br />

45 <br />

46 <br />

47


Funktion im Namespace »main« auf. Statt<br />

den Server aus dem Projektverzeichnis<br />

heraus aufzurufen, kann man die ganze<br />

Anwendung auch in ein Jar-Archiv packen,<br />

das sich fürs Deployment oder die<br />

Weitergabe an Kunden eignet. Es enthält<br />

alles, was der Webchat benötigt. Dafür<br />

gibt es das Leiningen-Kommando »lein<br />

uberjar«. Das resultierende Jar-Archiv erfordert<br />

nur eine Java-Runtime und lässt<br />

sich per »java ‐jar Archivname.jar« in Betrieb<br />

nehmen (Abbildung 4).<br />

Ausblick<br />

Hat man sich an die Clojure-Syntax und<br />

das Arbeiten auf der REPL gewöhnt, lassen<br />

sich mit Leiningen und einer Handvoll<br />

Bibliotheken rasch Webanwendungen<br />

umsetzen. Für den Webentwickler<br />

sind dabei Templating-Systeme wie Hiccup<br />

[9] und Enlive [10] von Bedeutung,<br />

sie stellen aber nur einen Bruchteil des<br />

Clojure-Ökosystems dar. Wer mehr über<br />

Clojure wissen möchte, findet eine Reihe<br />

von Büchern über die Programmiersprache<br />

auf dem Markt [11], vornehmlich<br />

allerdings in englischer Sprache. Wer<br />

Übung braucht, findet auf der Website<br />

4clojure.com [12] eine große Sammlung<br />

von Programmieraufgaben. Der Blog-Aggregator<br />

Planet Clojure [13] schließlich<br />

trägt zusammen, was es in der Clojure-<br />

Community Neues gibt. (mhu) n<br />

Infos<br />

[1] Clojure: [http:// clojure. org]<br />

[2] Clojure-Usergroups:<br />

[http:// dev. clojure. org/ display/​<br />

community/ Clojure+User+Groups]<br />

[3] Euro Clojure: [http:// euroclojure. com]<br />

[4] Stefan Kamphausen, „Nebenläufig“:<br />

<strong>Linux</strong>-<strong>Magazin</strong> 01/​10, S. 112;<br />

[http:// www. linux‐magazin. de/ Ausgaben/​<br />

2010/ 01/ Nebenlaeufig]<br />

[5] Paul Graham, „Beating the Averages“:<br />

[http:// www. paulgraham. com/ avg. html]<br />

[6] Leiningen: [https:// github. com/​<br />

technomancy/ leiningen]<br />

[7] Compojure: [https:// github. com/​<br />

weavejester/ compojure]<br />

[8] Httpkit: [http:// http‐kit. org]<br />

[9] Hiccup:<br />

[https:// github. com/ weavejester/ hiccup]<br />

[10] Enlive:<br />

[https:// github. com/ cgrand/ enlive]<br />

[11] Bücher über Clojure:<br />

[http:// clojure. org/ books]<br />

[12] Programmieraufgaben:<br />

[http:// 4clojure. com]<br />

[13] Planet Clojure: [http:// planet. clojure. in]<br />

[14] Listings zu diesem Artikel:<br />

[http:// www. linux‐magazin. de/ static/​<br />

listings/ magazin/ 2014/ 04/ clojure]<br />

Der Autor<br />

Jan Stepien arbeitet als Entwickler bei Stylefruits.<br />

de und betätigt sich als Coach bei Clojureworkshop.de.<br />

Er hat an der Technischen Universität<br />

Warschau studiert, begeistert sich für Clojure und<br />

Haskell und geht gerne zum Bergsteigen.<br />

Clojure 04/2014<br />

Programmieren<br />

www.linux-magazin.de<br />

101


Programmieren<br />

www.linux-magazin.de C++11 04/2014<br />

102<br />

Modernes C++ in der Praxis – Folge 15<br />

C++11 + 3 = C++14<br />

2014 ist ein besonderes Jahr für C++. Drei Jahre nach C++11 erfährt der Sprachstandard mit C++14 den letzten<br />

Feinschliff. Neben generischen Lambda-Funktionen und der vereinfachten Ermittlung des Rückgabetyps<br />

kann C++14 vor allem mit einem Feature punkten: Reader-Writer-Locks. Rainer Grimm<br />

Zugegeben, C++ ist nicht mehr das, was<br />

es einmal war. Mit C++11, C++14 und<br />

C++17 muss sich die Programmiersprache<br />

immer wieder mit Veränderungen<br />

auseinandersetzen. Der Zeitstrahl zu den<br />

Standards in Abbildung 1 soll das Zahlenspiel<br />

entwirren: Während C++98, C++11<br />

und C++17 (oben) vollwertige Standards<br />

für die Sprache sind, stellen C++03 und<br />

C++14 (unten) Überarbeitungen der zu<br />

diesem Zeitpunkt gültigen Norm dar. Sie<br />

beseitigen im Wesentlichen Bugs und<br />

bringen kleine Verbesserungen.<br />

Auch wenn C++17 suggeriert, dass genau<br />

im Jahr 2017 der nächste große Wurf<br />

ansteht, so ist das keine zuverlässige Da-<br />

tumsangabe, sondern eine Arbeitshypothese.<br />

Einen Einblick in den laufenden<br />

Standardisierungsprozess gibt [1].<br />

Redundanz beseitigt<br />

Gerade mal zwei Monate ist es her, da<br />

stellte ein Artikel [2] dieser Serie die automatische<br />

Ermittlung des Rückgabetyps<br />

eines Funktionstemplates vor. Bereits mit<br />

C++14 (Listing 1) wird das einfacher.<br />

Das Funktionstemplate »add« in Zeile<br />

4 ermittelt den Rückgabetyp automatisch<br />

aus dem Ergebnis des Ausdrucks<br />

»decltype(fir + sec)« in Zeile 5. Dabei<br />

leitet das Schlüsselwort »auto« den verzögerten<br />

Rückgabetyp ein. Ein scharfer<br />

Blick auf das Funktionstemplate offenbart<br />

die Redundanz: Der Ausdruck »fir<br />

+ sec« muss in C++11 sowohl bei der<br />

Definition des Rückgabetyps (Zeile 5) als<br />

auch bei der Berechnung des Rückgabewerts<br />

(Zeile 6) stehen.<br />

Das ist in C++14 beim Funktionstemplate<br />

»add14« (Zeile 9) nicht mehr erforderlich.<br />

Die Sprache ermittelt nun automatisch<br />

den Rückgabetyp aus dem Rückgabe-<br />

Listing 1: Vereinfachte automatische Rückgabetypen<br />

01 #include <br />

02 #include <br />

03 <br />

04 template <br />

05 auto add(T1 fir, T2 sec) ‐> decltype(fir +<br />

sec){<br />

06 return fir + sec;<br />

07 }<br />

08 <br />

09 template <br />

10 auto add14(T1 fir, T2 sec){<br />

11 return fir + sec;<br />

12 }<br />

13 <br />

14 int main(){<br />

15 <br />

16 std::cout


C++98<br />

C++03<br />

C++11<br />

C++14<br />

C++17<br />

C++11 04/2014<br />

Programmieren<br />

Abbildung 1: Die C++-Standards: Oben die maßgeblichen Neuauflagen, unten die<br />

Nachbesserungen der Sprachversionen.<br />

wert. Wie das Ausführen des Programms<br />

in Abbildung 2 zeigt, sind die mit unterschiedlicher<br />

Notation automatisch ermittelten<br />

Rückgabetypen identisch. So ergibt<br />

»int + int« den Typ »int« (Zeilen 22 und<br />

28), »long + int« den Typ »long« (Zeilen<br />

19 und 29) und »double + int« den Typ<br />

»double« (Zeilen 20 und 30).<br />

Generische Lambda-<br />

Funktionen<br />

Lambda-Funktionen sind eines der wichtigsten<br />

Features von C++11. Mit ihnen<br />

drückt der Programmierer Funktionalität<br />

kurz und genau an der Stelle aus, an der<br />

er sie benötigt. Bessere Lesbarkeit und<br />

höhere Flexibilität des Codes sind zwei<br />

der vielen Punkte, die für Lambda-Funktionen<br />

sprechen. Die Details zu diesem<br />

funktionalen Baustein in C++11 lassen<br />

sich in den zwei ersten Artikeln dieser<br />

Serie nachlesen ([3], [4]).<br />

Was fehlt den Lambda-Funktionen in<br />

C++11, das C++14 bietet? In C++11 muss<br />

der Entwickler den Typ der Argumente<br />

explizit angeben<br />

– das verhindert<br />

ihren generischen<br />

Einsatz. Den feinen<br />

Unterschied zwischen Lambda-Funktionen<br />

und generischen Lambda-Funktionen<br />

machen die zwei Funktionen »add()«<br />

und »add14()« in den Zeilen 7 und 8 von<br />

Listing 2 anschaulich. Während die erste<br />

nur Argumente vom Typ »int« akzeptiert,<br />

nimmt die zweite Argumente beliebigen<br />

Typs an. Kleiner Unterschied, große Auswirkungen:<br />

In Zeile 14 lassen sich mit<br />

»add()« lediglich zwei »int«-Werte zusammenzählen.<br />

Im Gegensatz dazu addiert<br />

»add14()« in den Zeilen 16 bis 22 Werte<br />

der Typen »int«, »long«, »double« und<br />

»std::string«.<br />

Besonders praktisch sind generische<br />

Lambda-Funktionen beim Einsatz in der<br />

Standard Template Library. Sie machen es<br />

möglich, Algorithmen ohne die Angabe<br />

eines Typs zu formulieren. Der subtile<br />

Unterschied zwischen »std::accumulate«<br />

in Zeile 27 und »std::accumulate« in den<br />

Zeilen 30 und 34 ist, dass die generische<br />

Abbildung 2: Automatisches Bestimmen des Rückgabetyps mit C++11 und C++14.<br />

Lambda-Funktion »add14()« sowohl für<br />

Vektoren vom Typ »int« als auch solche<br />

vom Typ »std::string« geeignet ist. Diese<br />

Flexibilität fehlt der Lambda-Funktion »[]<br />

(int i, int j){ return i+j; }« in Zeile 27.<br />

Sie lässt sich nur auf »int«-Typen anwenden.<br />

In Abbildung 3 ist das Programm in<br />

Aktion zu sehen.<br />

Viele <strong>neu</strong>e Literale<br />

Literale in C++ repräsentieren einen expliziten<br />

Wert. Beispielsweise steht »1« für<br />

den Integer-Wert 1, »1L« für den Long-<br />

Wert 1. C++14 bringt eine Vielzahl <strong>neu</strong>er<br />

Literale. Mit Ausnahme des binären Literals<br />

»0b10«, das durch das Präfix »0b«<br />

definiert ist, besitzen alle anderen <strong>neu</strong>en<br />

Literale in C++11 ein Suffix, das hinten<br />

angehängt wird. So wird »"Hello"s« durch<br />

»s« zum String-Literal. Neben binären Literalen<br />

führt C++14 Literale für Strings,<br />

www.linux-magazin.de<br />

103<br />

Listing 2: Generische Lambda-Funktionen<br />

01 #include <br />

02 #include <br />

03 #include <br />

04 <br />

05 using namespace std::literals;<br />

06 <br />

07 auto add=[](int i,int i2){ return i + i2; };<br />

08 auto add14=[](auto i,auto i2){ return i + i2; };<br />

09 <br />

10 int main(){<br />

11 <br />

12 std::cout


Programmieren<br />

www.linux-magazin.de C++11 04/2014<br />

104<br />

Abbildung 3: Lambda-Funktionen versus generische Lambda-Funktionen.<br />

Zeitangaben und komplexe Zahlen ein.<br />

Tabelle 1 stellt die Neuzugänge mit ihrem<br />

Typ und einem Beispiel vor.<br />

Neben der Lesbarkeit bieten die <strong>neu</strong>en Literale<br />

besonders einen großen Vorteil: Da<br />

ihre Einheit direkt im Literal ausgedrückt<br />

ist, gewährleistet der Compiler die Typsicherheit.<br />

Das Rechnen mit Zeitangaben<br />

gerät damit zum Kinderspiel. Listing 3<br />

als Beispiel berechnet, wie viel zeitlichen<br />

Aufwand ein gewöhnlicher Schultag benötigt.<br />

Die Antwort gibt das Programm in<br />

unterschiedlichen Zeiteinheiten.<br />

Sekundenbruchteile<br />

Damit er die Zeitliterale verwenden kann,<br />

macht der Programmierer sie in Zeile 4<br />

durch »using« bekannt. Per Definition besteht<br />

der Zeitaufwand für einen Schultag<br />

aus der Dauer von Hin- und Rückweg,<br />

sechs Schulstunden, vier kurzen Pausen,<br />

einer langen Pause und der Zeit für die<br />

Hausaufgaben (Zeile 20).<br />

Die entsprechenden Zeitliterale definieren<br />

die Zeilen 14 bis 18. Das Zeitliteral für<br />

eine Schulstunde, »45min«, ist in Zeile 12<br />

auskommentiert. Statt dessen kommt das<br />

Objekt »schoolHour« in Zeile 11 zum Einsatz.<br />

»schoolHour« ist vom Typ »shour«.<br />

Dabei entspricht »shour« einer Zeitdauer<br />

von 2700 Sekunden, im Typ »long long«<br />

gespeichert (Zeile 10).<br />

Da C++ als Auflösung für Zeitangaben<br />

Sekunden verwendet, entspricht dies ge-<br />

Compiler für C++14<br />

Die Version 3.4 des Clang-Compilers [5]<br />

unterstützt als erste vollständig den C++14-<br />

Standard. Aber auch der aktuelle GCC 4.9<br />

[6] bietet die meisten Features von C++14.<br />

Mit »std=c++1y« als Flag übersetzt er alle<br />

Beispiele dieses Artikels. Genaueres zur<br />

Compiler-Unterstützung von C++14 ist im<br />

<strong>neu</strong>en C++-FAQ-Wiki [7] nachzulesen.<br />

nau 45 Minuten (2700= 45 * 60). Der<br />

umständlichen Definition einer Schulstunde<br />

in C++11 in den Zeilen 10 und 11<br />

steht die einfache durch das Zeitliteral<br />

»45min« (Zeile 12) in C++14 gegenüber.<br />

Abbildung 4 zeigt das Resultat des Programms<br />

und gibt aus, der Schultag sei<br />

27 300 Sekunden lang (Zeile 22). Dies<br />

entspricht 7,58333 Stunden (Zeile 28),<br />

455 Minuten (Zeile 29) oder 2.73*10 7 Millisekunden<br />

(Zeile 30).<br />

Die Brüche »std::ratio« in den Zeilen 24<br />

bis 26 geben die Relation zu Sekunden<br />

wieder. So steht »std::ratio«<br />

für das 3600-Fache einer Sekunde,<br />

»std::ratio« für das 1/​1000-Fache<br />

einer Sekunde. Um die Brüche exakt<br />

darzustellen, speichert der Code sie jeweils<br />

in »double«-Typen.<br />

Kritische Wettläufe und<br />

Verklemmungen<br />

Um die Problematik von Locks in C++11<br />

und deren Lösung in C++14 einander<br />

gegenüberzustellen, ist ein wenig Theorie<br />

erforderlich: Ein kritischer Wettlauf<br />

um einen Datenbereich entsteht, wenn<br />

mehrere Threads gleichzeitig lesend und<br />

schreibend auf dessen Variablen zugreifen<br />

wollen. Entscheidend<br />

ist, dass mindestens<br />

einer der Threads<br />

die Variable verändern<br />

möchte.<br />

Der Einfachheit halber<br />

geht dieser Artikel<br />

im weiteren Verlauf<br />

davon aus, dass der<br />

kritische Bereich aus<br />

einer einzigen Variablen<br />

besteht. Durch das<br />

gleichzeitige Lesen<br />

und Schreiben ist deren<br />

Wert undefiniert.<br />

Abbildung 4: Der Zeitaufwand für einen Schultag, in verschiedenen<br />

Auflösungen dargestellt.<br />

Zu ihrem Schutz benutzen C++11-Programmierer<br />

typischerweise einen Mutex<br />

(Mutual Exclusion). Dieser stellt sicher,<br />

dass ein Thread nur exklusiv, also als<br />

Einziger, auf die Variable zugreifen darf.<br />

In C++11 verpackt man Mutexe in Locks,<br />

um zu gewährleisten, dass der Mutex die<br />

Variable wieder freigibt.<br />

Geschieht dies nicht, kann ein vergessener<br />

Mutex zu einer so genannten Verklemmung<br />

führen. Im Englischen ist der<br />

Begriff Deadlock dafür gebräuchlich. In<br />

diesem Zustand wartet ein Thread auf<br />

Zugang zu dem kritischen Bereich, erhält<br />

aber nie den Zugriff. Das Programm ist<br />

blockiert und als einzige Rettung bleibt,<br />

das Programm mit [Strg]+[C] abzubrechen.<br />

Details zum Zusammenspiel von<br />

Mutexen und deren Abstraktion in Locks<br />

lassen sich in dem Artikel „Gemeinsam<br />

ins Ziel“ [8] genau nachlesen.<br />

Grobe Locks<br />

Tabelle 1: Literal-Suffixe<br />

Das Problem bei C++11-Locks besteht<br />

darin, dass sie zu grob vorgehen: Auch<br />

wenn alle Threads nur lesend auf die<br />

gemeinsame Variable zugreifen wollen,<br />

müssen sie unnötigerweise Schlange<br />

stehen und warten, bis sie zum Zuge<br />

Präfix/​Suffix Typ Beispiel<br />

0b bool 0b10<br />

s std::string "Hello"s<br />

i complex 5i<br />

il complex 5il<br />

if omplex 5if<br />

h std::chrono::hours 5h<br />

min std::chrono::minutes 5min<br />

s std::chrono::seconds 5s<br />

ms std::chrono::milliseconds 5ms<br />

us std::chrono::microseconds 5us<br />

ns std::chrono::nanoseconds 5ns


kommen. Dabei wäre es nur erforderlich,<br />

dass der Thread, der die Variable<br />

verändern will, ein exklusives Lock<br />

auf die Variable erhält. C++14 löst<br />

das Problem mit einer besonderen Art<br />

von Locking.<br />

Lesen erlaubt<br />

Reader-Writer-Locks [9] erlauben es<br />

einerseits, mit Threads zu programmieren,<br />

die eine Variable nur gleichzeitig<br />

lesen, andererseits mit Threads<br />

zu arbeiten, die eine Variable exklusiv<br />

modifizieren. Listing 4 gibt ein<br />

Beispiel dafür. Die gemeinsame Variable,<br />

die es dort zu schützen gilt, ist<br />

ein Telefonbuch. Da der lesende Zugriff<br />

auf das Telefonbuch viel häufiger<br />

stattfindet als der schreibende, bietet<br />

es sich an, die <strong>neu</strong>en Reader-Writer-<br />

Locks einzusetzen.<br />

Als Telefonbuch kommt in Zeile 9 eine<br />

Map zum Einsatz. Diese bildet Strings<br />

auf natürliche Zahlen ab, beziehungsweise<br />

Namen auf Telefonnummern. Die<br />

Zeilen 30 bis 39 sind dabei der Dreh- und<br />

Angelpunkt. Zehn verschiedene Threads<br />

möchten gleichzeitig das Telefonbuch<br />

verwenden. Aber nur zwei davon, »w1«<br />

und »w2« (Zeilen 32 und 35), wollen das<br />

Telefonbuch modifizieren, die restlichen<br />

Threads geben nur die Telefonnummer<br />

auf der Konsole aus. Alle Threads erhalten<br />

ihre Arbeitspakete als Lambda-<br />

Abbildung 5: Gemeinsames Lesen und Schreiben eines Telefonbuchs<br />

mit Reader-Writer-Locks.<br />

Funktionen, die die globalen Funktionen<br />

»printNumber« (Zeile 21) oder »addToTeleBook()«<br />

(Zeile 13) aufrufen.<br />

Das Entscheidende an der Funktion<br />

»printNumber()« zum Ausgeben<br />

der Telefonnummer ist der Ausdruck<br />

»std::shared_lock<br />

readerLock(teleBookMutex)« in Zeile 22.<br />

Er stellt durch das Shared Lock auf den<br />

Shared Mutex »teleBookMutex« sicher,<br />

dass die lesenden Threads beim Zugreifen<br />

auf die Map »teleBook[na]« in der<br />

folgenden Zeile gemeinsam den Mutex<br />

verwenden. Beim Verlassen der Funktion<br />

wird das Shared Lock und damit<br />

auch der Shared Mutex automatisch<br />

freigegeben.<br />

Im Gegensatz dazu steht der Ausdruck<br />

»std::lock_guard writerLock(teleBookMutex)«<br />

(Zeile 14) in der Funktion »addToTele-<br />

Book()«. Er benutzt für den synchronisierten<br />

Zugriff exklusiv den gleichen<br />

Mutex »teleBookMutex«. Durch<br />

»std::lock_guard« in Kombination mit<br />

»std::shared_mutex« ist der Zugriff<br />

auf die Variable »teleBook[na]« exklusiv,<br />

während »std::shared_lock« in<br />

Kombination mit »std::shared_mutex«<br />

den gemeinsamen Zugriff erlaubt.<br />

Mutex plus Lock<br />

Aus den Sprachfeatures Shared<br />

Mutex und Shared Lock entstehen<br />

so die Reader-Writer-Locks. Je nachdem,<br />

wie der Programmierer den Mutex<br />

anwendet, gewährt er einem einzigen<br />

Thread exklusiven Zugriff (»lock_<br />

guard«) oder mehreren<br />

Threads gemeinsam lesenden (»shared_<br />

lock«).<br />

Der Rest des Programms ist schnell erklärt:<br />

Die Funktion »addToTeleBook«<br />

schreibt die zwei Statusmeldungen (Zeilen<br />

15 und 18) auf die Konsole und schläft<br />

für eine halbe Sekunde, während sie exklusiv<br />

das Lock hält. Zum Abschluss ge-<br />

C++11 04/2014<br />

Programmieren<br />

www.linux-magazin.de<br />

105<br />

Listing 3: Rechnen mit Zeitliteralen<br />

01 #include <br />

02 #include <br />

03 <br />

04 using namespace std::literals::chrono_literals;<br />

05 <br />

06 int main(){<br />

07 <br />

08 std::cout


Programmieren<br />

www.linux-magazin.de C++11 04/2014<br />

106<br />

ben die Zeilen 55 bis 57 den Inhalt des<br />

Telefonbuchs aus.<br />

Wer sich die Ausgabe des Programms in<br />

Abbildung 5 genau ansieht, wird sich<br />

vermutlich wundern. Nur der Aufruf der<br />

Funktion »addToTeleBook()« mit den Statusmeldungen<br />

»STARTING UPDATE […]<br />

ENDING UPDATE« für Scott und Bjarne<br />

wird geschützt ausgeführt, sodass der<br />

Inhalt des Telefonbuchs die definierten<br />

Werte besitzt. Die lesenden Threads dagegen<br />

schreiben unkoordiniert auf die Konsole.<br />

Das ist aber nicht verwunderlich,<br />

denn die Konsole ist eine gemeinsame<br />

Der Autor<br />

Rainer Grimm arbeitet<br />

als Software-Architekt<br />

und Gruppenleiter bei der<br />

Metrax GmbH in Rottweil.<br />

Insbesondere die Software<br />

der hauseigenen Defibrillatoren<br />

ist ihm eine Herzensangelegenheit. Seine<br />

Bücher „C++11 für Programmierer“ und „C++ kurz<br />

& gut“ sind beim Verlag O’Reilly erschienen.<br />

Variable, die lesenden Threads greifen<br />

gleichzeitig schreibend auf sie zu. Das<br />

Ergebnis ist der abgebildete Textsalat.<br />

Wer wissen möchte, was C++14 noch<br />

zu bieten hat, dem sei der gelungene<br />

Wikipedia-Artikel [10] empfohlen.<br />

Wie geht’s weiter?<br />

Der nächste Artikel dieser Reihe wird in<br />

die Tiefen des C++11-Memory-Modells<br />

eintauchen und die Antwort auf den Leserbrief<br />

von Jörg Böhme [11] geben. Das<br />

C++11-Memory-Modell basiert auf den<br />

Erfahrungen des Java-Memory-Modells<br />

und definiert unter anderem Zusicherungen,<br />

wann eine Aktion eines Thread<br />

für andere Threads sichtbar ist. Überraschungen<br />

– und nicht nur für den C++-<br />

Guru – gibt es in der nächsten Folge<br />

inklusive. (mhu) <br />

n<br />

Infos<br />

[1] Status der C++-Standardisierung:<br />

[http:// isocpp. org/ std/ status]<br />

[2] Rainer Grimm, „Neue Ausdruckskraft“:<br />

<strong>Linux</strong>-<strong>Magazin</strong> 02/​14, S. 104<br />

[3] Rainer Grimm, „Die Elf spielt auf“:<br />

<strong>Linux</strong>-<strong>Magazin</strong> 12/​11, S. 94<br />

[4] Rainer Grimm, „Kurz und knackig“:<br />

<strong>Linux</strong>-<strong>Magazin</strong> 02/​12, S. 92<br />

[5] Clang 3.4: [http:// llvm. org/ releases/ 3. 4/​<br />

tools/ clang/ docs/ ReleaseNotes. html]<br />

[6] GCC 4.9: [http:// gcc. gnu. org/ gcc‐4. 9/​<br />

changes. html]<br />

[7] „When will compilers implement C++14?“:<br />

[http:// isocpp. org/ wiki/ faq/ cpp14#​<br />

cpp14‐compilers]<br />

[8] Rainer Grimm, „Gemeinsam ins Ziel“:<br />

<strong>Linux</strong> <strong>Magazin</strong> 06/​12, S. 90<br />

[9] Howard Hinnant, Detlef Vollmann,<br />

Hans Boehm, „Shared locking in C++“:<br />

[http:// isocpp. org/ blog/ 2013/ 04/​<br />

n3659‐shared‐locking]<br />

[10] C++14: [http:// en. wikipedia. org/ wiki/​<br />

C%2B%2B14]<br />

[11] Jörg Böhme, Leserbrief zum Memory Management:<br />

<strong>Linux</strong> <strong>Magazin</strong> 01/​14, S. 82<br />

[12] Listings zum Artikel:<br />

[http:// www. linux‐magazin. de/ static/​<br />

listings/ magazin/ 2014/ 04/ cpp/]<br />

Listing 4: Reader-Writer-Locks<br />

01 #include <br />

02 #include <br />

03 #include <br />

04 #include <br />

05 #include <br />

06 #include <br />

07 #include <br />

08 <br />

09 std::map teleBook{{"Dijkstra",1972},{"Scott",1976},<br />

{"Ritchie",1983}};<br />

10 <br />

11 std::shared_mutex teleBookMutex;<br />

12 <br />

13 void addToTeleBook(const std::string& na, int tele){<br />

14 std::lock_guard writerLock(teleBookMutex);<br />

15 std::cout


Programmieren<br />

www.linux-magazin.de Perl-Snapshot 04/2014<br />

108<br />

Big-Data-Suchmaschine für Strings sowie Fotos mit Umkreissuche<br />

Elastische Treffer<br />

Die auf Apache Lucene basierende Volltext-Suchengine Elasticsearch findet zügig Ausdrücke selbst in enorm<br />

großen Textsammlungen. Anhand eines Referenzbildes wühlt sie mit ein paar Tricks sogar Fotos aus der<br />

Kiste, die jemand in der Gegend geschossen hat. Michael Schilli<br />

Home verzeichnis, das Skript in Listing<br />

1 übermittelt alle rekursiv gefundenen<br />

Textdateien über die REST-Schnittstelle<br />

an den laufenden Elasticsearch-Server<br />

zur Indizierung. Der Aufruf<br />

$ fs‐index ~/git/articles<br />

dauerte erst einige Minuten, ein zweiter<br />

Aufruf mit angewärmtem Plattencache<br />

lief dann innerhalb von 30 Sekunden<br />

durch. Eine anschließende Suche nach<br />

dem Wort „Balkon“ zeigt Ergebnisse in<br />

Bruchteilen einer Sekunde:<br />

© Ivan Kmit, 123RF.com<br />

Auf der Suche nach einer Suchmaschine<br />

zum schnellen Durchforsten von Logdateien<br />

stieß ich <strong>neu</strong>lich auf Elasticsearch<br />

[2], eine auf Apache Lucene basierende<br />

Volltextsuche mit allerhand Extras. Auf<br />

der Downloadseite bietet das Open-<br />

Source-Projekt neben dem üblichen Tarball<br />

auch ein Debian-Paket an. Die bei<br />

Redaktionsschluss aktuelle Pre-Release-<br />

Version 1.0.0.RC2 findet mit »sudo dpkg<br />

‐‐install *.deb« ohne Probleme den Weg<br />

in jedes Ubuntu. Praktischerweise liegt<br />

dem Debian-Paket ein Bootskript bei, mit<br />

dem Root von der Kommandozeile per<br />

# /etc/init.d/elasticsearch start<br />

den Elasticsearch-Server auf dem voreingestellten<br />

Port 9200 in Gang setzt.<br />

Polyglott oder Perl<br />

Die meisten Praxis-Tutorials aus dem<br />

Web nutzen die REST-Schnittstelle, um<br />

mit dem Server über HTTP zu kommunizieren.<br />

Abbildung 1 zeigt einen »GET«-<br />

Request auf den laufenden Server, der<br />

den Status anzeigt.<br />

Zum Einfüttern von Daten und fürs spätere<br />

Abfragen gibt es eine Reihe von REST-<br />

Clients in mehreren Sprachen. Offizieller<br />

Perl-Client darf sich das CPAN-Modul<br />

Elasticsearch nennen. Zu beachten ist<br />

allerdings, dass Elasticsearch (aktuelle<br />

Version 1.03, [3]) der Nachfolger des<br />

veralteten Moduls »ElasticSearch« (großes<br />

S, [4]) ist. Zweifellos eine äußerst<br />

unglückliche Namenswahl des CPAN-<br />

Autors, schon allein weil die alte Version<br />

auf dem CPAN liegen geblieben ist und<br />

bei Suchabfragen auf [search. cpan. org]<br />

vor der <strong>neu</strong>en hochploppt.<br />

Als nutzbringende Beispielanwendung<br />

für eine Elasticsearch-Volltextsuche identifiziere<br />

ich die Stichwortsuche in allen<br />

bislang im <strong>Linux</strong>-<strong>Magazin</strong> erschienenen<br />

Perl-Snapshots. Die Manuskripte der<br />

über 200 Artikel dieser Reihe finden sich<br />

in einem Git-Repository unter meinem<br />

$ fs‐search balkon<br />

/home/mschilli/git/articles/water/t.pnd<br />

/home/mschilli/git/articles/gimp/t.pnd<br />

Die im Index gefundenen Dateien offenbaren,<br />

dass ich das Wort „Balkon“ bislang<br />

nur in zwei Ausgaben verwendet habe:<br />

Einmal im Juli 2008 in einem Artikel über<br />

Perls Schnittstelle zum Foto-Editor Gimp,<br />

der ein von meinem Balkon aus geschossenes<br />

Foto manipulierte [5], und einmal<br />

im März 2007, als der Perl-Snapshot<br />

die automatische Bewässerungsanlage<br />

für meine Balkonpflanzen ins gleißende<br />

Licht der Öffentlichkeit rückte [6].<br />

Stets unscharfe Suche per<br />

Stemming<br />

Es zeigt sich weiter, dass Elasticsearch<br />

Groß- und Kleinschreibung ignoriert und<br />

von sich aus Begriffe einer Stammform-<br />

Re duktion unterzieht (Stemming): Eine<br />

Suche nach „Pflanze“ liefert nämlich die<br />

Online PLUS<br />

In einem Screencast demonstriert<br />

Michael Schilli das Beispiel: [http://​<br />

www.linux-magazin.de/​2014/04/​plus]


Abbildung 1: Nach dem Starten des Daemon antwortet dieser auf dem Port<br />

9200 auf API-Anfragen.<br />

gleichen Ergebnisse wie oben, obwohl in<br />

den Textdateien ausschließlich von „Balkonpflanzen“<br />

die Rede ist. Allerdings begreift<br />

das Analysetool nicht, dass „Balkone“<br />

die Mehrzahl von „Balkon“ ist,<br />

und liefert in diesem Fall keine Treffer.<br />

Leider treibt es Elasticsearch manchmal<br />

zu weit mit der unscharfen Suche und<br />

präsentiert Fundstücke, die keine sind,<br />

weil Wörter mit der gleichen Zeichenfolge<br />

beginnen. Abgesehen<br />

davon findet die<br />

Suchfunktion jede Nadel<br />

im Heuhaufen,<br />

und das zügig.<br />

Das »fs‐index«-Skript<br />

in Listing 1 nimmt in<br />

Zeile 9 das ihm von<br />

der Kommandozeile<br />

übergebene Suchverzeichnis<br />

entgegen und<br />

ruft den Konstruktor<br />

der Klasse »Elasticsearch«<br />

auf. Falls Suchabfragen einmal<br />

nicht das gewünschte Ergebnis bringen,<br />

lässt sich der Konstruktor mit<br />

my $es = Elasticsearch‐>new(<br />

trace_to => ['File','log']<br />

);<br />

dazu überreden, in der Logdatei »log« alle<br />

an den Elasticsearch-Server abgesetzten<br />

Befehle im Curl-Format auszuspucken.<br />

Per Cut & Paste kann der davon überraschte<br />

Entwickler den Vorgang Schritt<br />

für Schritt nachvollziehen.<br />

Elasticsearch speichert die Daten einer<br />

Applikation unter einem Index, den<br />

die Zeile 7 mit »fs« (wie File System)<br />

benennt. Falls schon Daten vorliegen,<br />

löscht die Methode »delete()« ihn in Zeile<br />

13. Die umwickelnde »eval«-Anweisung<br />

fängt etwaige Fehler stillschweigend ab,<br />

beispielsweise wenn der Index noch gar<br />

nicht existiert, weil es sich um den allerersten<br />

Aufruf von »fs‐index« handelt.<br />

Zu große und Binärdateien<br />

müssen draußen bleiben<br />

Die Funktion »find()« aus dem Modul<br />

File::Find wühlt sich ab Zeile 15 durch<br />

die Verzeichnisse auf der Festplatte, beginnend<br />

bei dem auf der Kommandozeile<br />

übergebenen Startverzeichnis. Gefundene<br />

Binärdateien ignoriert Zeile 18, genau<br />

Perl-Snapshot 04/2014<br />

Programmieren<br />

www.linux-magazin.de<br />

109<br />

Listing 1: »fs‐index«<br />

01 #!/usr/local/bin/perl ‐w<br />

02 use strict;<br />

03 use Elasticsearch;<br />

04 use File::Find;<br />

05 use Sysadm::Install qw( slurp );<br />

06<br />

07 my $idx = "fs";<br />

08<br />

09 my( $base ) = @ARGV;<br />

10 die "usage: $0 basedir" if !defined $base;<br />

11<br />

12 my $es = Elasticsearch‐>new( );<br />

13 eval { $es‐>indices‐>delete( index => $idx<br />

) };<br />

14<br />

15 find sub {<br />

16 my $file = $File::Find::name;<br />

17 return if ! ‐f $file;<br />

18 return if ! ‐T $file;<br />

19 return if ‐s $file > 100_000;<br />

20 my $content = slurp $file;<br />

21<br />

22 $es‐>index(<br />

23 index => $idx,<br />

24 type => 'text',<br />

25 body => {<br />

26 content => $content,<br />

27 file => $file,<br />

28 }<br />

29 );<br />

30 print "Added $file\n";<br />

31 }, $base;


Programmieren<br />

www.linux-magazin.de Perl-Snapshot 04/2014<br />

110<br />

wie alles außen vor bleibt, was keine<br />

richtige Datei oder größer als 100 000<br />

Bytes ist. Die Funktion »slurp()« aus dem<br />

CPAN-Modul Sysadm::Install überträgt<br />

dann den Inhalt würdiger Dateien in den<br />

Speicher, den die Methode »index()« in<br />

Zeile 22 unter dem Schlüssel »content«<br />

in die Datenbank füttert. Der Name der<br />

Datei gelangt unter dem Eintrag »file«<br />

ebenfalls dorthin.<br />

Lokales Klein-Google mit<br />

vielen Query-Formaten<br />

Später findet das Skript in Listing 2<br />

Dateien zu vorgegebenen Stichworten,<br />

ähnlich wie dies die Suchmaschinen des<br />

Internets tun. Wenn ich dieses Skript per<br />

»fs‐search '*'« aufrufe, passt darauf jedes<br />

Dokument im Index. (Die einfachen<br />

Anführungszeichen verhindern, dass die<br />

Unix-Shell sich des Metazeichens »*« bemächtigt<br />

und in einen Glob auf das lokale<br />

01 #!/usr/local/bin/perl ‐w<br />

02 use strict;<br />

03 use Elasticsearch;<br />

04<br />

05 my $idx = "fs";<br />

06<br />

07 my( $query ) = @ARGV;<br />

Listing 2: »fs‐search«<br />

08 die "usage: $0 query" if !defined $query;<br />

09<br />

10 my $es = Elasticsearch‐>new( );<br />

11<br />

12 my $results = $es‐>search(<br />

Verzeichnis verwandelt.) Jedenfalls liefert<br />

Elasticsearch auf »fs‐search '*'« hin zehn<br />

mehr oder minder zufällige Ergebnisse<br />

zurück, denn unkonfiguriert ist die maximale<br />

Trefferzahl auf 10 eingestellt. Ein<br />

etwas später vorgestelltes Skript ändert<br />

diesen Wert auf 100 ab.<br />

Die in Zeile 12 aufgerufene Methode<br />

»search()« nimmt den Namen des Suchindex,<br />

unter dem die Daten liegen (wieder<br />

»fs«) und im »body«-Teil der Anfrage<br />

den Query-String entgegen. Aus der Dokumentation<br />

[2] ist zu entnehmen, dass<br />

Elasticsearch offenbar eine ganze Reihe<br />

historisch gewachsener Query-Formate<br />

versteht, was die etwas absurd anmutende<br />

Verschachtelung »query/query_string/<br />

query« notwendig macht.<br />

Als Ergebnis der Erkundungsmission<br />

kommt eine Referenz auf ein Array von<br />

Treffern zurück, über das die For-Schleife<br />

in den Zeilen 20 und 21 iteriert und jeweils<br />

den ebenfalls übermittelten Eintrag<br />

13 index => $idx,<br />

14 body => {<br />

15 query => {<br />

16 query_string => {<br />

17 query => $query } } }<br />

18 );<br />

19<br />

20 for my $result (<br />

21 @{ $results‐>{ hits }‐>{ hits } } ) {<br />

22<br />

23 print $result‐>{ _source }‐>{ file },<br />

24 "\n";<br />

25 }<br />

zum archivierten Dateinamen in Richtung<br />

Terminal sendet.<br />

Suche in GPS-Bilderdaten<br />

Elasticsearch hat aber noch mehr drauf.<br />

Zum Beispiel erweitert der so genannte<br />

Geo Distance Filter [7] die klassische<br />

Volltextsuche um eine interessante Facette.<br />

Wer den Filter installiert und zu<br />

jedem Dokument passende Geodaten<br />

speichert, dem zeigt die Suchengine<br />

genau jene Einträge, die sich in einem<br />

bestimmten Umkreis befinden. Das ist<br />

zum Beispiel dann von Nutzen, wenn<br />

man übermüdet mit seinem Mobiltelefon<br />

herumirrt und ein offenes 5-Sterne-<br />

Restaurant sucht.<br />

Da mein iPhone 5 wie jedes andere Smartphone<br />

zu jedem geschossenen Bild die<br />

Geodaten im Exif-Header der Jpeg-Datei<br />

ablegt, bietet sich eine Suche an, die zu<br />

einem vorgegebenen Bild im Fotoalbum<br />

des Telefons („Gallery“) jene Bilder heraussucht,<br />

die ich im 1-Kilometer-Radius<br />

dazu geschossen habe. Die Abbildung 2<br />

zeigt zum Beispiel ein Foto des <strong>neu</strong> gebauten<br />

östlichen Bogens der Bay Bridge<br />

[8] bei mir zu Hause in San Francisco.<br />

Auf einem Fuß- und Radweg kann ich seit<br />

letztem Jahr dort bis zur Mitte der <strong>neu</strong>en<br />

Brücke laufen.<br />

Abbildung 3 listet die Ausgabe des Kommandos<br />

»exiftags« des vom Telefon auf<br />

den <strong>Linux</strong>-Rechner übertragenen Fotos<br />

auf. Fast ganz unten steht dort, dass das<br />

Bild an einer Geo-Location mit 37° 48.87’<br />

Listing 3: »IPhonePicGeo.pm«<br />

01 ###########################################<br />

02 package IPhonePicGeo;<br />

03 # Extract decimal GPS location from Photo<br />

04 # Mike Schilli, 2014 (m@perlmeister.com)<br />

05 ###########################################<br />

06 use Image::EXIF;<br />

07 use Geo::Coordinates::DecimalDegrees;<br />

08<br />

09 ###########################################<br />

10 sub photo_latlon {<br />

11 ###########################################<br />

12 my( $pic ) = @_;<br />

13<br />

14 my $exif = Image::EXIF‐>new();<br />

15 $exif‐>file_name( $pic );<br />

16 my $info = $exif‐>get_image_info();<br />

17<br />

18 return if !exists $info‐>{ Latitude };<br />

19<br />

20 my( $head, $d, $m ) = loc_parse(<br />

21 $info‐>{ Latitude } );<br />

22 if( $head eq "S" ) {<br />

23 $d = ‐$d;<br />

24 }<br />

25 my $lat = dm2decimal( $d, $m );<br />

26<br />

27 ( $head, $d, $m ) = loc_parse(<br />

28 $info‐>{ Longitude } );<br />

29 if( $head eq "W" ) {<br />

30 $d = ‐$d;<br />

31 }<br />

32 my $lon = dm2decimal( $d, $m );<br />

33<br />

34 return( $lat, $lon );<br />

35 }<br />

36<br />

37 ###########################################<br />

38 sub loc_parse {<br />

39 ###########################################<br />

40 my( $field ) = @_;<br />

41<br />

42 return if !defined $field;<br />

43<br />

44 # Latitude: N 37° 25.16'<br />

45 # Longitude: W 122° 1.53'<br />

46 my( $head, $d, $m ) =<br />

47 ( $field =~ /^(\w) # heading<br />

48 \s+<br />

49 (\d+) # degrees<br />

50 . # degree symbol<br />

51 \s+<br />

52 ([\d.]+) # minutes<br />

53 /x );<br />

54<br />

55 return( $head, $d, $m );<br />

56 }<br />

57<br />

58 1;


www.linux-magazin.de<br />

Perl-Snapshot 04/2014<br />

Programmieren<br />

111<br />

Abbildung 2: Ein per iPhone geschossenes Bild der <strong>neu</strong>en Bay Bridge.<br />

nördlicher Breite und 122° 21.55’ westlicher<br />

Länge geschossen wurde.<br />

Moderner Sextant<br />

Die Funktion »photo_latlon()« in Listing<br />

3 liest diese Werte mit dem CPAN-Modul<br />

Image::EXIF aus und rechnet sie mit<br />

»dm2decimal()« aus dem Modul Geo::<br />

Coordinates::DecimalDegrees in Fließkommawerte<br />

um. Der reguläre Ausdruck<br />

ab Zeile 47 sucht in den Geodaten nach<br />

einem Buchstaben (N oder S für nördliche<br />

beziehungsweise südliche Breite, W<br />

oder E für westliche oder östliche Länge)<br />

gefolgt von der numerischen Gradangabe<br />

und dem in UTF-8 kodierten Gradsymbol.<br />

Nach einem oder mehreren Leerzeichen<br />

folgt die Minutenangabe.<br />

So wird aus N 37° 48.87’ der Wert<br />

»37.816« und aus W 122° 21.55’ die negative<br />

Fließkommazahl »‐122.3555«. Google<br />

Maps bestätigt in Abbildung 4, dass der<br />

talentierte Fotograf beim Auslösen der<br />

Kamera tatsächlich in der Mitte der San<br />

Francisco Bay auf der Bay Bridge stand.<br />

Um herauszufinden, ob im Fotoalbum<br />

mehr Bilder liegen, die in einem Umkreis<br />

von einem Kilometer aufgenommen wurden,<br />

speichert »photo‐index« in Listing 4<br />

alle Fotos im Verzeichnis »~/iphone« auf<br />

dem eigenen Elasticsearch-Server.<br />

Schöne Gegend<br />

Die Funktion »find()« wühlt sich auch<br />

rekursiv durch Unterverzeichnisse. Damit<br />

die Suchengine die Geodaten Abfrageperformance-optimiert<br />

speichert, ist so<br />

genanntes Mapping erforderlich: Zu dem<br />

im Index »photos« verwendeten Dokumenttyp<br />

»photo« definiert das »create()«-<br />

Abbildung 3: Die GPS-Daten des iPhone-Fotos stehen<br />

mit 37° 48.87’ nördlicher Breite und 122° 21.55’<br />

westlicher Länge im Exif-Header der Bilddatei.<br />

Kommando ab Zeile 15 eine »geo_point«-<br />

Property namens »Location«. Die Dokumentation<br />

auf [7] ist in diesem Punkt<br />

übrigens veraltet und beschreibt ein nicht<br />

mehr funktionierendes Mapping. Listing<br />

4 habe ich hingegen erfolgreich mit Elasticsearch<br />

1.0.0 RC2 getestet.<br />

Von den gefundenen Jpeg-Bildern extrahiert<br />

Zeile 32 mit dem Modul »IPhone-<br />

PicGeo« aus Listing 3 die Geodaten und<br />

Listing 4: »photo‐index«<br />

01 #!/usr/local/bin/perl ‐w<br />

02 use strict;<br />

03 use File::Find;<br />

04 use Elasticsearch;<br />

05 use IPhonePicGeo;<br />

06<br />

07 my $idx = "photos";<br />

08 my $dir = glob "~/iphone";<br />

09<br />

10 my $es = Elasticsearch‐>new( );<br />

11<br />

12 eval { # Delete existing index if present<br />

13 $es‐>indices‐>delete( index => $idx ) };<br />

14<br />

15 $es‐>indices‐>create(<br />

16 index => $idx,<br />

17 body => {<br />

18 mappings => {<br />

19 photo => {<br />

20 properties => {<br />

21 Location => {<br />

22 type => "geo_point" } } } } }<br />

23 );<br />

24<br />

25 find sub {<br />

26 my $pic = $File::Find::name;<br />

27<br />

28 return if ! ‐f $pic;<br />

29 return if $pic !~ /.jpg$/i;<br />

30<br />

31 my( $lat, $lon ) =<br />

32 IPhonePicGeo::photo_latlon( $pic );<br />

33 return if !defined $lat;<br />

34<br />

35 $es‐>index(<br />

36 index => $idx,<br />

37 type => "photo",<br />

38 body => {<br />

39 file => $pic,<br />

40 Location => [ $lat, $lon ],<br />

41 },<br />

42 );<br />

43<br />

44 print "Added: $pic ($lat/$lon)\n";<br />

45<br />

46 }, $dir;


Programmieren<br />

www.linux-magazin.de Perl-Snapshot 04/2014<br />

112<br />

Abbildung 4: Der Geopunkt [37.816, ‐122.3555] befindet sich tatsächlich auf der<br />

Bay Bridge bei San Francisco.<br />

Abbildung 5: In einem Kilometer Umkreis findet Elasticsearch weitere Bilder von<br />

der Bay Bridge und stellt sie als Thumbnails für den Nutzer bereit.<br />

schiebt sie samt Dateinamen im »Body«-<br />

Teil der »index()«-Methode ab Zeile 35 in<br />

die elastische Datenbank.<br />

Nachdem die Daten aller Fotos archiviert<br />

sind, sucht das Skript in Listing 5 Bilder,<br />

die ich in einem Kilometer Entfernung zu<br />

einem auf der Kommandozeile übergebenen<br />

Referenzfoto geknipst habe. Hierzu<br />

ermittelt es die Geodaten des Referenzbildes<br />

und schickt dann mit dem Query<br />

»match_all()« eine Anfrage ab, die alle<br />

gespeicherten Bilder zurückliefert. Zeile<br />

23 setzt einen Filter, der die »geo_distance«<br />

auf 1 Kilometer limitiert. Zudem<br />

vergrößert der Parameter »size« die Maximalzahl<br />

der Treffer auf 100.<br />

Zurück kommt eine Liste von Fotos aus<br />

der spezifizierten Umgebung, deren<br />

Datei namen die For-Schleife ab Zeile 34<br />

ans Ende eines Array schiebt. Abschließend<br />

ruft die »system()«-Funktion in Zeile<br />

01 #!/usr/local/bin/perl ‐w<br />

02 use strict;<br />

03 use Elasticsearch;<br />

04 use IPhonePicGeo;<br />

05<br />

06 my $idx = "photos";<br />

07<br />

08 my( $pic ) = @ARGV;<br />

09 die "usage: $0 pic" if !defined $pic;<br />

10<br />

11 my( $lat, $lon ) =<br />

12 IPhonePicGeo::photo_latlon( $pic );<br />

13<br />

14 my $es = Elasticsearch‐>new( );<br />

15<br />

16 my $results = $es‐>search(<br />

17 index => $idx,<br />

18 size => 100,<br />

19 body => {<br />

20 query => {<br />

Listing 5: »photo‐gps‐match«<br />

40 die Applikation »eog« (Eye of Gnome)<br />

auf, die alle Treffer als Thumbnails anzeigt<br />

(Abbildung 5). Durch sie darf der<br />

User nun nach Herzenslust klicken.<br />

Keine Limits<br />

Die Geofunktion ist nur eine von vielen<br />

Plugin-ähnlichen Erweiterungen des<br />

Elasticsearch-Servers, eines praktischen<br />

Werkzeugs, das einfach zu installieren<br />

und zu betreiben ist. Außerdem skaliert<br />

er praktisch unendlich, denn der Admin<br />

kann bei ansteigender Datenmenge die<br />

Indexe auf so viele weitere Apache-Lucene-Shards<br />

verteilen, bis wieder alle<br />

Analysen performant ablaufen.<br />

Zu Elasticsearch existieren Papier- und<br />

elektronische Bücher, von denen ich leider<br />

keines so richtig empfehlen kann.<br />

Aber das Tutorial [9] hilft gewissenhaft<br />

21 match_all => {},<br />

22 },<br />

23 filter => {<br />

24 geo_distance => {<br />

25 distance => "1km",<br />

26 "Location" => [ $lat, $lon ],<br />

27 }<br />

28 }<br />

29 }<br />

30 );<br />

31<br />

32 my @files = ();<br />

33<br />

34 for my $result (<br />

35 @{ $results‐>{ hits }‐>{ hits } } ) {<br />

36 push @files,<br />

37 $result‐>{ _source }‐>{ file };<br />

38 }<br />

39<br />

40 system "eog", @files;<br />

weiter und auf Stackoverflow.com beantworten<br />

Freiwillige offene Fragen. (jk) n<br />

Infos<br />

[1] Listings zu diesem Artikel:<br />

[ftp:// www. linux‐magazin. de/ pub/ listings/​<br />

magazin/ 2014/ 04/ Perl]<br />

[2] Download-Seite von Elasticsearch:<br />

[http:// www. elasticsearch. org/ overview/​<br />

elkdownloads/]<br />

[3] »Elasticsearch‐1.03«: [http:// search. cpan.​<br />

org/ ~drtech/ Elasticsearch‐1. 03/]<br />

[4] »ElasticSearch‐0.66«: [http:// search. cpan.​<br />

org/ ~drtech/ ElasticSearch‐0. 66/]<br />

[5] Michael Schilli, „Kartentrick“:<br />

[http:// www. linux‐magazin. de/ Ausgaben/​<br />

2008/ 08/ Kartentrick]<br />

[6] Michael Schilli, „Der Mörder ist nimmer der<br />

Gärtner“: [http:// www. linux‐magazin. de/​<br />

Ausgaben/ 2007/ 03/ Der‐Moerder‐istnimmer‐der‐Gaertner]<br />

[7] Elasticsearch Geo Distance Filter:<br />

[http:// www. elasticsearch. org/ guide/​<br />

en/ elasticsearch/ reference/ current/​<br />

query‐dsl‐geo‐distance‐filter. html]<br />

[8] Michael Schilli, „Die <strong>neu</strong>e Bay Bridge über<br />

die San Francisco Bay ist endlich fertig“:<br />

[http:// usarundbrief. com/ 103/ p1. html]<br />

[9] Elasticsearch-Tutorial: [http://​<br />

joelabrahamsson. com/ elasticsearch‐101/]<br />

Der Autor<br />

Michael Schilli arbeitet<br />

als Software-Engineer bei<br />

Yahoo in Sunnyvale, Kalifornien.<br />

In seiner seit 1997<br />

laufenden Kolumne forscht<br />

er jeden Monat nach praktischen<br />

Anwendungen der Skriptsprache Perl.<br />

Unter [mschilli@perlmeister. com] beantwortet<br />

er gerne Fragen.


Service<br />

www.linux-magazin.de IT-Profimarkt 04/2014<br />

114<br />

PROFI<br />

MARKT<br />

Sie fragen sich, wo Sie maßgeschneiderte<br />

<strong>Linux</strong>-Systeme und kompetente<br />

Ansprechpartner zu Open-Source-Themen<br />

finden? Der IT-Profimarkt weist Ihnen<br />

als zuverlässiges Nachschlagewerk<br />

den Weg. Die hier gelisteten Unternehmen<br />

beschäftigen Experten auf ihrem<br />

Gebiet und bieten hochwertige Produkte<br />

und Leistungen.<br />

Die exakten Angebote jeder Firma entnehmen<br />

Sie deren Homepage. Der ersten<br />

Orientierung dienen die Kategorien<br />

Hardware, Software, Seminaranbieter,<br />

Systemhaus, Netzwerk/TK und Schulung/Beratung.<br />

Der IT-Profimarkt-Eintrag<br />

ist ein Service von <strong>Linux</strong>-<strong>Magazin</strong><br />

und <strong>Linux</strong>User.<br />

Online-Suche<br />

Besonders bequem finden Sie einen<br />

<strong>Linux</strong>-Anbieter in Ihrer Nähe über die<br />

<strong>neu</strong>e Online-Umkreis-Suche unter:<br />

[http://www.it-profimarkt.de]<br />

Informationen<br />

fordern Sie bitte an bei:<br />

Medialinx AG<br />

Anzeigenabteilung<br />

Putzbrunner Str. 71<br />

D-81739 München<br />

Tel.: +49 (0)89/99 34 11-23<br />

Fax: +49 (0)89/99 34 11-99<br />

E-Mail: anzeigen@linux-magazin.de<br />

IT-Profimarkt – Liste sortiert nach Postleitzahl<br />

1 = Hardware 2 = Netzwerk/TK 3 = Systemhaus<br />

4= Fachliteratur 4= Seminaranbieter 5 = Software 5 = Software 6 = Schulung/Beratung 6 = Firma Anschrift Telefon Web 1 2 3 4 5 6<br />

Schlittermann internet & unix support 01099 Dresden, Tannenstr. 2 0351-802998-1 www.schlittermann.de √ √ √ √<br />

imunixx GmbH UNIX consultants 01468 Moritzburg, Heinrich-Heine-Str. 4 0351-83975-0 www.imunixx.de √ √ √ √ √<br />

Heinlein Support GmbH 10119 Berlin, Schwedter Straße 8/​9b 030-405051-0 www.heinlein-support.de √ √ √ √ √<br />

TUXMAN Computer 10369 Berlin, Anton-Saefkow-Platz 8 030-97609773 www.tuxman.de √ √ √ √ √<br />

Compaso GmbH 10439 Berlin, Driesener Strasse 23 030-3269330 www.compaso.de √ √ √ √ √<br />

elego Software Solutions GmbH 13355 Berlin, Gustav-Meyer-Allee 25 030-2345869-6 www.elegosoft.com √ √ √ √<br />

verion GmbH 16244 Altenhof, Unter den Buchen 22 e 033363-4610-0 www.verion.de √ √ √<br />

Logic Way GmbH 19061 Schwerin, Hagenower Str. 73 0385-39934-48 www.logicway.de √ √ √ √<br />

Sybuca GmbH 20459 Hamburg, Herrengraben 26 040-27863190 www.sybuca.de √ √ √ √ √<br />

JEL Ingenieurbuero 23911 Einhaus, Hauptstr. 7 04541-8911-71 www.jeltimer.de √<br />

talicom GmbH<br />

30169 Hannover,<br />

Calenberger Esplanade 3<br />

0511-123599-0 www.talicom.de √ √ √ √ √<br />

teuto.net Netzdienste GmbH 33602 Bielefeld, Niedenstr. 26 0521-96686-0 www.teuto.net √ √ √ √ √<br />

LINET Services GmbH 38118 Braunschweig, Cyriaksring 10a 0531-180508-0 www.linet-services.de √ √ √ √ √ √<br />

OpenIT GmbH 40599 Düsseldorf, In der Steele 33a-41 0211-239577-0 www.OpenIT.de √ √ √ √ √<br />

<strong>Linux</strong>-Systeme GmbH 45277 Essen, Langenbergerstr. 179 0201-298830 www.linux-systeme.de √ √ √ √ √<br />

<strong>Linux</strong>hotel GmbH 45279 Essen, Antonienallee 1 0201-8536-600 www.linuxhotel.de √<br />

OpenSource Training Ralf Spenneberg 48565 Steinfurt, Am Bahnhof 3-5 02552-638755 www.opensourcetraining.de<br />

Intevation GmbH 49074 Osnabrück, Neuer Graben 17 0541-33508-30 intevation.de √ √ √ √<br />

uib gmbh 55118 Mainz, Bonifaziusplatz 1b 06131-27561-0 www.uib.de √ √ √ √<br />

LISA GmbH 55411 Bingen, Elisenhöhe 47 06721-49960 www.lisa-gmbh.de √ √ √ √ √<br />

GONICUS GmbH 59755 Arnsberg, Moehnestr. 55 02932-9160 www.gonicus.com √ √ √ √ √<br />

saveIP GmbH 64283 Darmstadt, Saalbaustr. 8-10 06151-666266 www.saveip.de √ √ √ √ √<br />

<strong>Linux</strong>Haus Stuttgart<br />

Manfred Heubach EDV und<br />

Kommunikation<br />

Waldmann EDV Systeme + Service<br />

70565 Stuttgart,<br />

Hessenwiesenstrasse 10<br />

0711-2851905 www.linuxhaus.de √ √ √ √ √<br />

73728 Esslingen, Hindenburgstr. 47 0711-4904930 www.heubach-edv.de √ √ √ √<br />

74321 Bietigheim-Bissingen,<br />

Pleidelsheimer Str. 25<br />

IT-Profimarkt listet ausschließlich Unternehmen, die Leistungen rund um <strong>Linux</strong> bieten. Alle Angaben ohne Gewähr. <br />

07142-21516 www.waldmann-edv.de √ √ √ √ √<br />

√<br />

(S.116)


u<br />

Seminare<br />

IT-Onlinetrainings<br />

Mit Experten lernen.<br />

MEDIALINX<br />

IT-ACADEMY<br />

– die offiziellen Trainings<br />

mit Marco Welter,<br />

Zarafa Deutschland GmbH<br />

Zarafa Administrator<br />

249 €<br />

Zarafa Engineer<br />

249 €<br />

www.medialinx-academy.de<br />

UNIX-C-C++ Java<br />

Seminare<br />

in Nürnberg<br />

(oder inhouse)<br />

UNIX/<strong>Linux</strong><br />

UNIX/<strong>Linux</strong>-Aufbau<br />

C, C-Aufbau<br />

C++<br />

OOA/OOD (mit UML)<br />

Java<br />

Perl, XML<br />

weitere Kurse auf Anfrage, Telephonhotline<br />

Dipl.-Ing.<br />

Christoph Stockmayer GmbH<br />

90571 Schwaig/Nbg • Dreihöhenstraße 1<br />

Tel.: 0911/505241 • Fax 0911/5009584<br />

EMail: sto@stockmayer.de<br />

http://www.stockmayer.de<br />

IT-Academy_1-9_Zarafa-Schulung.indd 1<br />

IT-Onlinetrainings<br />

Mit Experten lernen.<br />

MEDIALINX<br />

IT-ACADEMY<br />

Einfache IMAP-Server<br />

mit Dovecot<br />

mit Peer Heinlein,<br />

Heinlein Support GmbH<br />

249 €<br />

02.08.2013 11:55:03 Uhr<br />

www.medialinx-academy.de<br />

IT-Onlinetrainings<br />

Mit Experten lernen.<br />

MEDIALINX<br />

IT-ACADEMY<br />

Python für<br />

Systemadministratoren<br />

Teststudium<br />

ohne Risiko!<br />

mit Rainer Grimm,<br />

science + computing AG<br />

199 €<br />

Vereinfachen Sie Ihren Sysadmin-Alltag<br />

mit Skripting-Know-How für Profis!<br />

www.medialinx-academy.de<br />

Fernstudium<br />

IT-Sicherheit<br />

Aus- und Weiterbildung zur Fachkraft für<br />

IT-Sicherheit. Ein Beruf mit Zukunft. Kostengünstiges<br />

und praxisgerechtes Studium<br />

ohne Vorkenntnisse. Beginn jederzeit.<br />

NEU:PC-Techniker, Netzwerk-Techniker,<br />

<strong>Linux</strong>-Administrator LPI, Webmaster<br />

Teststudium ohne Risiko.<br />

GRATIS-Infomappe<br />

gleich anfordern!<br />

FERNSCHULE WEBER<br />

-seit 1959-<br />

Postfach 21 61<br />

Abt. C25<br />

26192 Großenkneten<br />

Tel. 0 44 87 / 263<br />

Fax 0 44 87 / 264<br />

www.fernschule-weber.de<br />

tl<br />

a<br />

ta<br />

s<br />

•<br />

n<br />

c<br />

i<br />

e<br />

h<br />

g<br />

e<br />

p<br />

rü<br />

Fernstudium<br />

s<br />

s<br />

a<br />

el<br />

g<br />

f<br />

t<br />

n<br />

d<br />

z<br />

u<br />

IT-Academy_1-9_Dovecot-Schulung.indd 1<br />

02.08.2013 11:53:34 IT-Academy_1-9_Python-Schulung.indd Uhr<br />

1<br />

02.08.2013 11:54:11 Uhr<br />

IT-Onlinetrainings<br />

Mit Experten lernen.<br />

mit Klaus Knopper,<br />

Gründer der<br />

Knoppix-Distribution,<br />

KNOPPER.NET<br />

199 €<br />

MEDIALINX<br />

IT-ACADEMY<br />

Effiziente BASH-Skripte<br />

Automatisieren Sie komplexe<br />

Aufgaben mit Hilfe effizienter Skripte!<br />

www.medialinx-academy.de<br />

IT-Onlinetrainings<br />

Mit Experten lernen.<br />

mit Philipp Hahn,<br />

Univention GmbH<br />

299 €<br />

MEDIALINX<br />

IT-ACADEMY<br />

– UCS Technikschulung<br />

www.medialinx-academy.de<br />

IT-Onlinetrainings<br />

Mit Experten lernen.<br />

MEDIALINX<br />

IT-ACADEMY<br />

Puppet Fundamentals<br />

– das offizielle Training<br />

NETWAYS ®<br />

mit Achim Ledermüller,<br />

Netways GmbH<br />

299 €<br />

www.medialinx-academy.de<br />

IT-Academy_1-9_Bash-Schulung.indd 1<br />

02.08.2013 11:53:16 IT-Academy_1-9_UCS-Schulung.indd Uhr<br />

1<br />

12.02.2014 15:33:51 IT-Academy_1-9_Netways-Schulung.indd Uhr<br />

1<br />

16.09.2013 12:34:33 Uhr


Service<br />

www.linux-magazin.de IT-Profimarkt Markt 04/2014<br />

116<br />

IT-Profimarkt/Markt<br />

IT-Profimarkt – Liste sortiert nach Postleitzahl (Fortsetzung von S. 114)<br />

Firma Anschrift Telefon Web 1 2 3 4 5 6<br />

in-put Das <strong>Linux</strong>-Systemhaus 76133 Karlsruhe, Moltkestr. 49 0721-6803288-0 www.in-put.de √ √ √ √ √ √<br />

Bodenseo 78224 Singen, Pomeziastr. 9 07731-1476120 www.bodenseo.de √ √ √<br />

<strong>Linux</strong> Information Systems AG 81739 München, Putzbrunnerstr. 71 089-993412-0 www.linux-ag.com √ √ √ √ √<br />

<strong>Linux</strong>Land International GmbH 81739 München, Putzbrunnerstr. 71 089-99341441 www.linuxland.de √ √ √ √ √ √<br />

Synergy Systems GmbH 81829 München, Konrad-Zuse-Platz 8 089-89080500 www.synergysystems.de √ √ √ √ √<br />

B1 Systems GmbH 85088 Vohburg, Osterfeldstrasse 7 08457-931096 www.b1-systems.de √ √ √ √ √<br />

ATIX AG 85716 Unterschleißheim, Einsteinstr. 10 089-4523538-0 www.atix.de √ √ √ √ √ √<br />

Tuxedo Computers GmbH 86343 Königsbrunn , Zeppelinstr. 3 0921-16498787-0 www.linux-onlineshop.de √ √ √ √<br />

OSTC Open Source Training and<br />

Consulting GmbH<br />

90425 Nürnberg,<br />

Waldemar-Klink-Str. 10<br />

0911-3474544 www.ostc.de √ √ √ √ √ √<br />

Dipl.-Ing. Christoph Stockmayer GmbH 90571 Schwaig, Dreihöhenstr. 1 0911-505241 www.stockmayer.de √ √ √<br />

pascom - Netzwerktechnik GmbH &<br />

Co.KG<br />

94469 Deggendorf, Berger Str. 42 0991-270060 www.pascom.net √ √ √ √ √<br />

RealStuff Informatik AG CH-3007 Bern, Chutzenstrasse 24 0041-31-3824444 www.realstuff.ch √ √ √<br />

CATATEC CH-3013 Bern, Dammweg 43 0041-31-3302630 www.catatec.ch √ √ √<br />

Syscon Systemberatungs AG CH-8003 Zürich, Zweierstrasse 129 0041-44-4542010 www.syscon.ch √ √ √ √ √<br />

Würth Phoenix GmbH IT-39100 Bozen, Kravoglstraße 4 0039 0471 56 41 11 www.wuerth-phoenix.com √ √ √ √<br />

IT-Profimarkt listet ausschließlich Unternehmen, die Leistungen rund um <strong>Linux</strong> bieten. Alle Angaben ohne Gewähr. <br />

n


Imagery: Earth by NASA / The Blue Marble Project - http://visibleearth.nasa.gov | Penguin Variant by Larry Ewing, Simon Budig & Anja Gerwinski<br />

Embedded <strong>Linux</strong><br />

Beratung - Schulung - Entwicklung<br />

<strong>Linux</strong> Portierung - Web - AJAX - Qt - Echtzeit<br />

www.pengutronix.de<br />

+49 (5121) 20 69 17 - 0


Service<br />

www.linux-magazin.de Inserenten 04/2014<br />

120<br />

Inserentenverzeichnis<br />

ADMIN http://​www.admin-magazin.de 57<br />

Android User GY http://​www.android-user.de 118<br />

CANDAN THE WEB COMPANY http://​www.canhost.de 35<br />

ConSol Software GmbH http://​www.consol.de 21<br />

DebConf http://​debconf13.debconf.org​ 27<br />

Delphi Communications http://​www.delphi-com.de​ 119<br />

embedded projects GmbH http://​www.embedded-projects.net 117<br />

Fernschule Weber GmbH http://​www.fernschule-weber.de 115<br />

GIMP-<strong>Magazin</strong> http://​www.gimp-magazin.de 91<br />

Grazer <strong>Linux</strong>-Tage c/​o FH JOANNEUM http://​www.linuxtage.at 79<br />

Heinlein Support GmbH http://​www.heinlein-support.de 37, 51<br />

hostNET Medien GmbH http://​www.hostnet.de​ 2<br />

Ico Innovative Computer GmbH http://​www.ico.de 47<br />

<strong>Linux</strong>-<strong>Magazin</strong> http://​www.linux-magazin.de 15, 59, 65<br />

<strong>Linux</strong>-<strong>Magazin</strong> Online http://​www.linux-magazin.de 109<br />

<strong>Linux</strong>hotel http://​www.linuxhotel.de 9<br />

<strong>Linux</strong>User http://​www.linuxuser.de 90<br />

Medialinx IT-Academy http://​www.medialinx-academy.de 93,<br />

101, 115<br />

Mittwald CM Service GmbH & Co. KG http://​www.mittwald.de 124<br />

Netways GmbH http://​www.netways.de 61<br />

Nine Internet Solutions AG http://​www.nine.ch 117<br />

O’Reilly Verlag GmbH & Co KG http://​www.oreilly.de 13<br />

Org.-Team der Chemnitzer <strong>Linux</strong>-Tage http://chemnitzer.linux-tage.de 73<br />

Pengutronix e.K. http://​www.pengutronix.de 117<br />

PlusServer AG http://​www.plusserver.de 25, 55, 71,<br />

89, 107, 113<br />

Raspberry Pi Geek http://​www.raspberry-pi-geek.de 45<br />

Schlittermann internet & unix support http://​schlittermann.de 116<br />

Schutzwerk http://​www.schutzwerk.com 69<br />

Spenneberg Training & Consulting http://​www.spenneberg.com 115<br />

Stockmayer GmbH http://​www.stockmayer.de 115<br />

Strato AG http://​www.strato.de 11<br />

TELEWORD ePAYMENT http://​www.teleword.de 116<br />

Thomas Krenn AG http://​www.thomas-krenn.com 19<br />

Tuxedo Computers GmbH http://​www.linux-onlineshop.de 123<br />

Webtropia http://​www.webtropia.com​ 29, 31<br />

WHD.global 2013 http://​www.worldhostingdays.com 17<br />

Einem Teil dieser Ausgabe liegen Beilagen der Firmen European IT Storage Ltd.<br />

(http://​www.eurostor.com) und HACKATTACK IT SECURITY GmbH (http://​www.<br />

hackattack.com ) und Mittwald CM Service GmbH & Co. KG (http://​www.mittwald.<br />

de) und PC Products (http://​www.pc-products.de) und Software & Support Verlag<br />

GmbH (http://​www.entwickler.com) bei. Wir bitten unsere Leser um freundliche<br />

Beachtung.<br />

Veranstaltungen<br />

03.-07.03.2014<br />

Linaro Connect Asia<br />

Macau, China<br />

http://www.linaro.org/connect-lca14<br />

15.-16.03.2014<br />

Chemnitzer <strong>Linux</strong>-Tage 2014<br />

Universität Chemnitz<br />

http://chemnitzer.linux-tage.de/2014/<br />

22.03.2014<br />

13. Augsburger <strong>Linux</strong>-Info-Tag<br />

Hochschule Augsburg<br />

http://www.luga.de/Aktionen/LIT-2014/<br />

24.-27.03.2014<br />

GPU Technology Conference (GTC)<br />

San Jose, California, USA<br />

http://www.gputechconf.com/page/home.html<br />

31.03.-02.04.2014<br />

Big Data TechCon<br />

Boston, MA, USA<br />

http://www.bigdatatechcon.com<br />

02.-04.04.2014<br />

USENIX NSDI ’14<br />

Seattle, WA, USA<br />

https://www.usenix.org/conference/nsdi14<br />

02.-05.04.2014<br />

LibreGraphicsMeeting 2014<br />

Universität Leipzig<br />

http://libregraphicsmeeting.org/2014/<br />

04.-05.04.2014<br />

Grazer <strong>Linux</strong>-Tage 2013<br />

FH Joan<strong>neu</strong>m<br />

Alte Poststraße 149<br />

8020 Graz, Österreich<br />

http://www.linuxtage.at<br />

07.04.2014<br />

High Performance Computing <strong>Linux</strong> for Wall Street<br />

2014<br />

New York, NY, USA<br />

http://www.flaggmgmt.com/linux/<br />

24.-28.04.2014<br />

Open Suse Conference 2014<br />

Dubrovnik, Kroatien<br />

https://conference.opensuse.org<br />

26.-27.04.2014<br />

<strong>Linux</strong>Fest Northwest 2014<br />

Bellingham, WA, USA<br />

http://www.linuxfestnorthwest.org<br />

29.04.-01.05.2014<br />

Android Builders Summit<br />

San Jose, CA, USA<br />

http://events.linuxfoundation.org/events/androidbuilders-summit<br />

29.04.-01.05.2014<br />

Embedded <strong>Linux</strong> Conference 2014<br />

San Jose, CA, USA<br />

http://events.linuxfoundation.org/events/embeddedlinux-conference<br />

05.-06.05.2014<br />

ELS’14 – 7th European Lisp Symposium<br />

Paris<br />

http://www.european-lisp-symposium.org<br />

08.-10.05.2014<br />

<strong>Linux</strong>tag 2014<br />

Berlin<br />

http://www.linuxtag.org<br />

12.05.2014<br />

Heinlein Mailserver-Konferenz 2014<br />

Berlin<br />

http://www.heinlein-support.de/mailserver-konferenz<br />

13.-14.05.2014<br />

Heinlein Secure <strong>Linux</strong> Administration Conference 2014<br />

Berlin<br />

http://www.heinlein-support.de/slac<br />

13.-16.05.2014<br />

Samba eXPerience 2014<br />

Göttingen<br />

http://sambaxp.org<br />

27.-30.05.2014<br />

Android DevCon 2014<br />

Boston, MA, USA<br />

http://www.andevcon.com<br />

02.-03.06.2014<br />

Automotive <strong>Linux</strong> Summit<br />

Tokyo, Japan<br />

http://events.linuxfoundation.org/events/automotivelinux-summit-spring<br />

04.-06.06.2014<br />

CloudOpen Japan 2014<br />

Tokyo, Japan<br />

http://events.linuxfoundation.org/events/cloudopenjapan<br />

04.-06.06.2014<br />

<strong>Linux</strong>Con Japan 2014<br />

Tokyo, Japan<br />

http://events.linuxfoundation.org/events/linuxcon-japan<br />

13.-14.06.2014<br />

Texas <strong>Linux</strong> Fest 2014<br />

Austin, Texas, USA<br />

http://2014.texaslinuxfest.org<br />

23.-24.06.2014<br />

Enterprise End User Summit<br />

New York, NY, USA<br />

http://events.linuxfoundation.org/events/enterpriseend-user-summit<br />

23.-25.06.2014<br />

Cloud DevCon: AWS Developer Con 2014<br />

San Francisco, CA, USA<br />

www.clouddevcon.net<br />

24.-26.06.2014<br />

Magnolia Konferenz 2014<br />

Basel, Schweiz<br />

http://www.magnolia-cms.com/conference<br />

21.-27.07.2014<br />

Europython 2014<br />

Berlin<br />

https://ep2014.europython.eu


Impressum<br />

<strong>Linux</strong>-<strong>Magazin</strong> eine Publikation der <strong>Linux</strong> New Media, einem<br />

Geschäftsbereich der Medialinx AG<br />

Redaktionsanschrift Putzbrunner Str. 71<br />

81739 München<br />

Tel.: 089/993411-0<br />

Fax: 089/993411-99 oder -96<br />

Internet<br />

www.linux-magazin.de<br />

E-Mail<br />

redaktion@linux-magazin.de<br />

Geschäftsleitung<br />

Chefredakteur<br />

stv. Chefredakteure<br />

Redaktionsltg. Online<br />

Brian Osborn (Vorstand), bosborn@medialinx-gruppe.de<br />

Hermann Plank (Vorstand), hplank@medialinx-gruppe.de<br />

Jan Kleinert (V.i.S.d.P.), jkleinert@linux-magazin.de (jk)<br />

Markus Feilner, mfeilner@linux-magazin.de (mfe)<br />

Mathias Huber, mhuber@linux-magazin.de (mhu)<br />

Mathias Huber, mhuber@linux-magazin.de (mhu)<br />

Print- und Onlineredaktion<br />

Aktuell, Forum, Software, Kristian Kissling, kkissling@linux-magazin.de (kki)<br />

Programmierung Mathias Huber, mhuber@linux-magazin.de (mhu)<br />

Sysadmin, Know-how Markus Feilner, mfeilner@linux-magazin.de (mfe)<br />

Ständige Mitarbeiter Zack Brown, Mela Eckenfels, Heike Jurzik (hej), Charly<br />

Kühnast, Martin Loschwitz, Michael Schilli, Tim Schürmann,<br />

Mark Vogelsberger, Uwe Vollbracht<br />

Schlussredaktion<br />

Grafik<br />

Bildnachweis<br />

DELUG-DVD<br />

Chefredaktionen<br />

International<br />

Produktion<br />

Onlineshop<br />

Abo-Infoseite<br />

Abonnenten-Service<br />

ISSN 1432 – 640 X<br />

Jürgen Manthey<br />

Mike Gajer<br />

xhoch4, München (Titel-Illustration)<br />

123RF.com, Fotolia.de, Photocase.com, Pixelio.de und andere<br />

Thomas Leichtenstern, tleichtenstern@linux-magazin.de (tle)<br />

<strong>Linux</strong> <strong>Magazin</strong>e International<br />

Joe Casad (jcasad@linux-magazine.com)<br />

<strong>Linux</strong> <strong>Magazin</strong>e Poland<br />

Artur Skura (askura@linux-magazine.pl)<br />

<strong>Linux</strong> <strong>Magazin</strong>e Spain<br />

Paul C. Brown (pbrown@linux-magazine.es)<br />

<strong>Linux</strong> <strong>Magazin</strong>e Brasil<br />

Rafael Peregrino (rperegrino@linuxmagazine.com.br)<br />

Christian Ullrich, cullrich@linux-magazin.de<br />

www.medialinx-shop.de<br />

www.linux-magazin.de/Produkte<br />

A.B.O. Verlagservice GmbH<br />

Gudrun Blanz (Teamleitung)<br />

abo@medialinx-gruppe.de<br />

Tel.: +49-(0)7131-2707-274<br />

Fax: +49-(0)7131-2707-78-601<br />

Preise Print Deutschland Österreich Schweiz Ausland EU<br />

No-Media-Ausgabe 4 6,40 4 7,05 Sfr 12,80 (siehe Titel)<br />

DELUG-DVD-Ausgabe 4 8,50 4 9,35 Sfr 17,— (siehe Titel)<br />

Jahres-DVD (Einzelpreis) 4 14,95 4 14,95 Sfr 18,90 4 14,95<br />

Jahres-DVD (zum Abo 1 ) 4 6,70 4 6,70 Sfr 8,50 4 6,70<br />

Mini-Abo (3 Ausgaben) 4 3,— 4 3,— Sfr 4,50 4 3,—<br />

Jahresabo No Media 4 65,20 4 71,90 Sfr 107,50 4 84,60<br />

Jahresabo DELUG-DVD 4 87,90 4 96,90 Sfr 142,80 4 99,90<br />

Preise Digital Deutschland Österreich Schweiz Ausland EU<br />

Heft-PDF Einzelausgabe 4 6,40 4 6,40 Sfr 8,30 4 6,40<br />

DigiSub (12 Ausgaben) 4 65,20 4 65,20 Sfr 84,80 4 65,20<br />

DigiSub (zum Printabo) 4 12,— 4 12,— Sfr 12,— 4 12,—<br />

HTML-Archiv (zum Abo 1 ) 4 12,— 4 12,— Sfr 12,— 4 12,—<br />

Preise Kombiabos Deutschland Österreich Schweiz Ausland EU<br />

Mega-Kombi-Abo 2 4 143,40 4 163,90 Sfr 199,90 4 173,90<br />

Profi-Abo 3 4 181,90 4 198,80 Sfr 235,90 4 219,90<br />

1<br />

nur erhältlich in Verbindung mit einem Jahresabo Print oder Digital<br />

2<br />

mit <strong>Linux</strong>User-Abo (DVD) und beiden Jahres-DVDs, inkl. DELUG-Mitgliedschaft (monatl.<br />

DELUG-DVD)<br />

3<br />

mit ADMIN-Abo und beiden Jahres-DVDs<br />

Schüler- und Studentenermäßigung: 20 Prozent gegen Vorlage eines Schülerausweises<br />

oder einer aktuellen Immatrikulationsbescheinigung. Der aktuelle Nachweis ist bei<br />

Verlän gerung <strong>neu</strong> zu erbringen. Andere Abo-Formen, Ermäßigungen im Ausland etc.<br />

auf Anfrage.<br />

Adressänderungen bitte umgehend mitteilen, da Nachsendeaufträge bei der Post nicht<br />

für Zeitschriften gelten.<br />

Pressemitteilungen<br />

Marketing und Vertrieb<br />

Mediaberatung D, A, CH<br />

presse-info@linux-magazin.de<br />

Petra Jaser, pjaser@linux-magazin.de<br />

Tel.: +49 (0)89 / 99 34 11 – 24<br />

Fax: +49 (0)89 / 99 34 11 – 99<br />

Michael Seiter, mseiter@linux-magazin.de<br />

Tel.: +49 (0)89 / 99 34 11 – 23<br />

Mediaberatung USA Ann Jesse, ajesse@linux-magazine.com<br />

und weitere Länder Tel.: +1 785 841 8834<br />

Darrah Buren, dburen@linux-magazine.com<br />

Tel.:+1 785 856 3082<br />

Pressevertrieb<br />

Druck<br />

Es gilt die Anzeigen-Preisliste vom 01.01.2014.<br />

MZV Moderner Zeitschriften Vertrieb GmbH & Co. KG<br />

Ohmstraße 1, 85716 Unterschleißheim<br />

Tel.: 089/31906-0, Fax: 089/31906-113<br />

Vogel Druck GmbH, 97204 Höchberg<br />

Der Begriff Unix wird in dieser Schreibweise als generelle Bezeichnung für die Unixähnlichen<br />

Betriebssysteme verschiedener Hersteller benutzt. <strong>Linux</strong> ist eingetragenes<br />

Marken zeichen von Linus Torvalds und wird in unserem Markennamen mit seiner<br />

Erlaubnis verwendet.<br />

Eine Haftung für die Richtigkeit von Veröffentlichungen kann trotz sorgfältiger Prüfung<br />

durch die Redaktion vom Verlag nicht übernommen werden. Mit der Einsendung von<br />

Manus kripten gibt der Verfasser seine Zustimmung zum Abdruck. Für unverlangt<br />

eingesandte Manuskripte kann keine Haftung übernommen werden.<br />

Das Exklusiv- und Verfügungsrecht für angenommene Manuskripte liegt beim Verlag. Es<br />

darf kein Teil des Inhalts ohne ausdrückliche schriftliche Genehmigung des Verlags in<br />

irgendeiner Form vervielfältigt oder verbreitet werden.<br />

Copyright © 1994 – 2014 Medialinx AG<br />

Impressum 04/2014<br />

Service<br />

www.linux-magazin.de<br />

121<br />

Krypto-Info<br />

GnuPG-Schlüssel der <strong>Linux</strong>-<strong>Magazin</strong>-Redaktion:<br />

pub 1024D/44F0F2B3 2000-05-08 Redaktion <strong>Linux</strong>-<strong>Magazin</strong><br />

<br />

Key fingerprint = C60B 1C94 316B 7F38 E8CC E1C1 8EA6 1F22 44F0 F2B3<br />

Public-Key der DFN-PCA:<br />

pub 2048R/7282B245 2007-12-12,<br />

DFN-PGP-PCA, CERTIFICATION ONLY KEY (DFN-PGP-Policy: 2008-2009)<br />

<br />

Key fingerprint = 39 D9 D7 7F 98 A8 F1 1B 26 6B D8 F2 EE 8F BB 5A<br />

PGP-Zertifikat der DFN-User-CA:<br />

pub 2048R/6362BE8B (2007-12-12),<br />

DFN-PGP-User-CA, CERTIFICATION ONLY KEY (DFN-PGP-Policy: 2008-2009)<br />

<br />

Key fingerprint = 30 96 47 77 58 48 22 C5 89 2A 85 19 9A D1 D4 06<br />

Root-Zertifikat der CAcert:<br />

Subject: O=Root CA, OU=http://www.cacert.org, CN=CA Cert Signing Authority/<br />

Email=support@cacert.org<br />

SHA1 Fingerprint=13:5C:EC:36:F4:9C:B8:E9:3B:1A:B2:70:CD:80:88:46:76:CE:8F:33<br />

MD5 Fingerprint=A6:1B:37:5E:39:0D:9C:36:54:EE:BD:20:31:46:1F:6B<br />

GPG-Schlüssel der CAcert:<br />

pub 1024D/​65D0FD58 2003-07-11 [expires: 2033-07-03]<br />

Key fingerprint = A31D 4F81 EF4E BD07 B456 FA04 D2BB 0D01 65D0 FD58<br />

uid CA Cert Signing Authority (Root CA) <br />

Autoren dieser Ausgabe<br />

Zack Brown Zacks Kernel-News 20<br />

Mela Eckenfels Meine Meinung 58<br />

Rainer Grimm C++11 + 3 = C++14 102<br />

Klaus Knopper Ein Stick anders 50<br />

Eva-Katharina Kunst Kern-Technik 92<br />

Marc Körner Alles im Fluss 32<br />

Charly Kühnast Die mit den Rüsseln 75<br />

Martin Loschwitz Nur vorerst eine Nische 40<br />

Nils Magnus Nie sprachlos 80<br />

Christopher De Nicolo Haftungsfragen 84<br />

Jürgen Quade Kern-Technik 92<br />

Michael Schilli Elastische Treffer 108<br />

Dennis Schreiber Im Netz gelagert 76<br />

Tim Schürmann Virtuos geschichtet 66<br />

Tim Schürmann Tux liest 88<br />

Udo Seidel <strong>Netze</strong> <strong>neu</strong> <strong>ordnen</strong> 28<br />

Jan Stepien Web funktional 96<br />

Uwe Vollbracht Tooltipps 72<br />

Philip Wette Sandkastenspiele 46


Service<br />

www.linux-magazin.de <strong>Vorschau</strong> 05/2014 02/2013 04/2014 01/2013<br />

122<br />

<strong>Vorschau</strong><br />

05/2014 Dachzeile<br />

Sailfish OS auf Jolla<br />

© watchara rojjanasain, 123RF.com<br />

Monitoring für Anfänger<br />

Firmen, die ihre echten und virtuellen Server bislang nicht<br />

ernsthaft monitoren, werden schon reich an unangenehmen<br />

Erfahrungen sein: Überraschend vollgelaufene Volumes, schon<br />

vor Tagen festgefressene Lüfter, dass seit Mitternacht der Webshop<br />

ausgefallen ist, merken nur die Kunden … Schon für kleinere<br />

Firmen lohnt ein ganzheitliches Monitoring, da es „Was<br />

ist denn jetzt wieder los?!“-Erlebnisse zur Seltenheit macht.<br />

Der nächste <strong>Magazin</strong>-Schwerpunkt testet anhand überschaubarer<br />

Einsteiger-Szenarien freie Monitoring-Lösungen gegeneinander.<br />

Das Ziel ist herauszufinden, wo einerseits die Einstiegshürden<br />

besonders niedrig liegen, aber andererseits auch,<br />

wer die beste Flexibilität an den Tag legt.<br />

MAGAZIN<br />

Überschrift<br />

Aus den Ruinen von Nokias Meego-Ableger „Harmattan“ und<br />

nach dem episodenhaften „Mer“ rappelt sich Sailfish OS heraus.<br />

Über den <strong>Linux</strong>-Kern liegt ein Qt 5, darauf aufsetzende<br />

Apps sind native Programme, was einen Performancegewinn<br />

gegenüber dem Java, HTML 5 oder Javascript anderer Systeme<br />

verspricht. Mit Jolla gibt es auch eine passende Hardware.<br />

Wechselvolle Groupware: Scalix<br />

2003 begann die Scalix Corporation mit eigenen Arbeiten am<br />

früheren HP Open Mail. 2007 übernahm Xandros die Firma,<br />

2011 dann Sebring Software. Neue Versionen erschienen dagegen<br />

keine. Ende 2013 gab es plötzlich einen Management Buyout<br />

und die Version 12. Da lohnt es, genauer hinzuschauen.<br />

Achte Insel aufgetaucht<br />

Die jüngste Version 8 der Programmiersprache Java bringt<br />

Neuerungen in Syntax und Standardbibliothek. Das nächste<br />

<strong>Linux</strong>-<strong>Magazin</strong> demonstriert Lambdas, Streams, das <strong>neu</strong>e API<br />

für Zeitangaben und die Rich-Client-Bibliothek Java FX.<br />

Die Ausgabe 05/2014<br />

erscheint am 3. April 2014<br />

<strong>Vorschau</strong><br />

auf 04/2014<br />

Die nächste Ausgabe erscheint am 20. März<br />

<strong>Linux</strong> für den mobilen Einsatz<br />

Für den Einsatz von <strong>Linux</strong> auf einem mobilen Gerät wünschen<br />

sich viele Anwender ein schlankes und optimal abgestimmtes<br />

System. Da spielt <strong>Linux</strong> klar seine Vorteile aus, denn nur mit<br />

freier Software haben Sie die Freiheit, sich die Komponenten<br />

zu einem stimmigen Gesamtkonzept zusammenzustellen. Das<br />

reicht vom abgespeckten Mini-System bis zum Multiboot-Spezialisten<br />

für alle Fälle.<br />

Systemd – die <strong>neu</strong>e Mitte<br />

Wenn es nach den Entwicklern des Systemd ginge, übernähme<br />

das <strong>neu</strong>e Init-System die Kontrolle über das gesamte System.<br />

Die Idee ist clever und das Konzept bestechend, aber nicht<br />

ohne Grund gibt es kritische Stimmen.<br />

© Gokoroko, sxc.hu<br />

Videoschnitt mit Lightworks<br />

Monat um Monat mussten wir auf die <strong>neu</strong>e Version warten,<br />

nun ist sie da: Der Videoeditor Lightworks 11.5 verspricht einfaches<br />

Arbeiten mit dem Multimediamaterial. Aber Papier ist<br />

geduldig – und so machen wir den Praxistest.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!