<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Steve Graegert &#187; Artikel</title>
	<atom:link href="http://graegert.de/topics/artikel/feed" rel="self" type="application/rss+xml" />
	<link>http://graegert.de</link>
	<description>Agile Coach &#38; Lean Thinker</description>
	<lastBuildDate>Wed, 24 Mar 2010 14:54:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Prozesse für agiles Softwareprojektmanagement</title>
		<link>http://graegert.de/artikel/prozesse-fur-agiles-softwareprojektmanagement</link>
		<comments>http://graegert.de/artikel/prozesse-fur-agiles-softwareprojektmanagement#comments</comments>
		<pubDate>Sun, 25 Oct 2009 11:25:10 +0000</pubDate>
		<dc:creator>Steve Graegert</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[projektmanagement]]></category>

		<guid isPermaLink="false">http://graegert.de/?p=598</guid>
		<description><![CDATA[Agile Softwareentwicklung ist ein evolutionärer, hochgradig kollaborativer und qualitätsorientierter Ansatz bei dem die Fähigkeit, zu jedem Zeitpunkt funktionstüchtige Software ausliefern zu können, im Mittelpunkt steht. Viele unterschiedliche Variationen agiler Prozesse haben sich im Laufe der letzen Dekade herausgebildet. Die wichtigsten sind Scrum, eXtreme Programming (XP), Open Unified Process (OpenUP) und Agile Data. All diese Formen [...]]]></description>
			<content:encoded><![CDATA[<p>Agile Softwareentwicklung ist ein evolutionärer, hochgradig kollaborativer und qualitätsorientierter Ansatz bei dem die Fähigkeit, zu jedem Zeitpunkt funktionstüchtige Software ausliefern zu können, im Mittelpunkt steht.  Viele unterschiedliche Variationen agiler Prozesse haben sich im Laufe der letzen Dekade herausgebildet.  Die wichtigsten sind Scrum, eXtreme Programming (XP), Open Unified Process (OpenUP) und Agile Data.  All diese Formen sind anwendbar auf unterschiedlichste Softwareprodukte und nicht beschränkt auf eine Disziplin, beispielsweise Web oder Desktop Applications.  Das gleiche trifft auf die Unternehmen und Organisationen zu, die sich für einen oder mehrere der Prozesse entschieden haben.  Agile Softwareentwicklung ist ein allgemeingültiger Ansatz für alle Softwareprojekte und Organisationen.</p>
<p><span id="more-598"></span></p>
<p>Agile Entwicklungsmethoden haben die Industrie im Sturm erobert.  Das liegt hauptsächlich daran, das es einfach funktioniert: höhere Erfolgsraten, bessere Qualität, gesteigerte Kundenzufriedenheit, besseres ROI (Return On Investment) und schnellere Markteinführung (Time To Market).</p>
<p>In diesem Artikel beginnen wir mit einer allgemeinen Betrachtung des Agilen Prozessmodells um die unterschiedlichen Ansätze in den richtigen Kontext setzen zu können.  Anschießend betrachten wir das vorgestellte dreistufige Modell genauer und erfahren wie die drei aufeinander aufsetzen.  Zum Abschluß wenden wir das Modell beispielhaft auf die Entwicklung einer Software an und enden mit einigen Hinweisen für eine erfolgreiche Einführung agiler Softwareentwicklung.</p>
<h2>Das agile Prozessmodell</h2>
<p>Im Zusammenhang mit Softwareprojekten und damit verbundenen Prozessen wird immer wieder von <em>Maturity</em> gesprochen.  Daß es sich dabei um einen inzwischen überladenen Begriff handelt ist nicht Verdienst der exzellenten Arbeit des <a href="http://www.sei.cmu.edu/">Software Engineering Istitute</a> (SEI) der Carnegie Mellon University, die das Capability Maturity Model Integrated (CMMI) entwickelt hat und eine Abwandlung speziell für die Durchführung von Softwareprojekten CMMI-DEV hervorbrachte.  Vielmehr wurde der Begriff Maturity auf die Prozessoptimierung angewandt, während das hier vorgestellte <em>Agile Process Maturity Model</em> (APMM) vielmehr bemüht ist, einen Rahmen für die agile Softwarenentwicklung zu stellen, so daß die unterschiedlichen Methoden in den richtigen Kontext gesetzt werden können.  Wir könnten auch sagen: das APMM ist das schlanke Geschwister vom CMMI.</p>
<p>Wie angedeutet ist APMM ein dreistufiges Modell dessen Ebenen aufeinander aufsetzen:</p>
<div id="attachment_599" class="wp-caption aligncenter" style="width: 489px"><a href="http://graegert.de/wp-content/uploads/2009/10/figure1.png" rel="shadowbox[post-598];player=img; attachment wp-att-599"><img src="http://graegert.de/wp-content/uploads/2009/10/figure1.png" alt="Abbildung 1" title="The agile process maturity model" width="479" height="181" class="size-full wp-image-599" /></a><p class="wp-caption-text">Abbildung 1</p></div>
<p>Die drei Stufen sind folgendermaßen zu verstehen:</p>
<dl>
<dt class="definitionTerm">Level 3: Scaling Agility</dt>
<dd>Stufe 3 konzentriert sich auf einen wichtigen <em>Skalierungsfaktor</em> in agilen Prozessen, beispielsweise Teamgröße oder der Grad der geographischen Verteilung des Teams.  Es muß sich dabei aber nicht immer um eine quantitative Größe handeln, denn auch der Einfluß von Regulatorien oder der Grad der Einhaltung von Standards sind skalierend Faktoren in agilen Entwicklungsprozessen.</dd>
<dt class="definitionTerm">Level 2: Disciplined Agility</dt>
<dd>In Stufe 2 schauen wir über den Tellerrand hinaus und decken den gesamten Software Delivery Life Cyle (SDLC) ab.  Beispiele sind Dynamic System Development Method (DSDM) und OpenUP (Open Unified Process).</dd>
<dt class="definitionTerm">Level 1: Agile Software Development</dt>
<dd>Stufe 1 betrachtet nur einen kleinen Teil des gesamten Entwicklungsprozesses, da nur die agilen Aspekte des <a href="http://www.agilemanifesto.org/principles.html">Manifestos</a> von Bedeutung sind.  Beispiele sind Scrum oder XP.</dd>
</dl>
<p>Das Modell mag zum jetzigen Zeitpunkt noch nicht besonders einleuchtend sein.  In den folgenden Abschnitten beleuchten wir jede Stufe genauer und gehen immer wieder auf die Bedeutung im APMM ein.</p>
<h3>Stufe 1: Agile Software Development</h3>
<p>Die agilen Methoden auf Stufe 1 decken nicht den gesamten SDLC ab, sondern orientieren sich an den Werten des <a href="http://www.agilemanifesto.org/principles.html">Agile Manifesto</a> und vestehen sich als eine ganzheitliche Sammlung von empfohlenen Vorgehensweisen.  Beispiele für die Implementierung der Stufe 1 sind die bekannten Vertreter:</p>
<dl>
<dt class="definitionTerm">Scrum</dt>
<dd>Projekt- und Anforderungsmanagement sind die Stützpfeiler von Scrum.  Mittels Iterationen (Scrum spricht von <em>Sprints</em>) werden Zyklen zur Produktreifung definiert.  Gepaart mit diversen Praktiken wie täglichen <em>Stand-Up Meetings</em>, Verwendung von <em>Product Backlogs</em> und klaren Rollen wie beispielsweise ScrumMaster und Product Owner entsteht ein Planungsgerüst, welches ganz nach Definition durch das Manifesto auf die Erstellung lauffähiger Software ausgerichtet ist. Abbildung 2 zeigt den Scrum Life Cycle.</dd>
<dt class="definitionTerm">Extreme Programming (XP)</dt>
<dd>XP ist eine Sammlung von Praktiken für die Softwareentwicklung, mit Fokus auf Programmiertechniken.  Beispielsweise sind <em>Pair Programming</em> (zwei Entwickler an einem Modul gleichzeitig), Test-First Design (erst der Unit Test, dann die Implementierung) und Continuous Integration einige der propagierten Techniken für die Softwareentwicklung mit XP.  Darüber hinaus bekennt sich auch XP zu Dingen wie <em>Collective Ownership</em> um die Bedeutung selbstorganisierender Teams herauszustellen.</dd>
<dt class="definitionTerm">Agile Data</dt>
<dd>Datenlastige Anwendungen erfordern oftmals andere Herangehensweisen als beispielsweise Steuerungssysteme.  Für solche Fälle eignet sich Agile Data sehr gut, da hier nicht nur die Organisation und Entwicklungstechniken betrachtet werden, sondern auch die Modellierung, Datenbanktest und Database Refactoring.</dd>
</dl>
<div id="attachment_602" class="wp-caption aligncenter" style="width: 532px"><img src="http://graegert.de/wp-content/uploads/2009/10/figure2.png" alt="Abbildung 2" title="Scrum construction life cycle" width="522" height="287" class="size-full wp-image-602" /><p class="wp-caption-text">Abbildung 2</p></div>
<h3>Stufe 2: Disciplined Agility</h3>
<p>Auf Ebene zwei wird der agile Prozess von Stufe 1 erweitert und berücksichtigt den gesamten SDLC.  Der wesentliche Unterschied zu Stufe 1 ist die <em>Berücksichtigung einzelner Aspekte des Prozesses</em> (nicht der Techniken oder Technologien), beispielsweise Testing oder Process Improvement.  Ganz typisch handelt es sich bei Discplined Agility auch um einen evolutionären, iterativen Entwicklungsansatz zur Produktion hochqualitativer Software, der sich durch den Einsatz von Risiko- und Value-Driven Management <span class="inlineNote">{ Value-driven Managment bedeutet in diesem Zusammenhang, die aktuellen Marktentwicklungen während des gesamten SDLC immer wieder zu bewerten um sicherzustellen, daß ein gewinnbringendes Produkt entsteht, welches auf dem Markt bestehen kann. }</span> auszeichnet.</p>
<p>Disciplined Agility vertraut auf qualifizierte und selbstorganisierende Teams, die von einer frühzeitigen und starken Einbindung der Auftraggeber profitieren.  Auf diese Weise kann das Team die Anforderungen des Auftraggebers besser verstehen und auf Veränderungen schneller reagieren.  Auf der anderen Seite ist der Entwicklungsprozess transparent und kann jederzeit vom Auftraggeber durch aktive Mitwirkung, beispielsweise in Form häufigen Feedbacks, korrigiert werden.</p>
<p>Beispiele für agile Prozesse der Stufe 2 sind:</p>
<dl>
<dt class="definitionTerm">Open Unified Process (OpenUP)</dt>
<dd>OpenUP erweitert und kombiniert bekannte Praktiken aus Scrum, XP, AD und RUP für die Anwendung auf verteilte, virtuelle Teams.  Dabei werden Methoden wie <a href="http://en.wikipedia.org/wiki/Extreme_Programming_Practices#Whole_team">Whole Team</a>, Stand-Up Meetings, Risikomanagement, <a href="http://en.wikipedia.org/wiki/Test-driven_development">TDD</a>, aktive Einbindung der Auftraggeber und <a href="http://martinfowler.com/articles/continuousIntegration.html">Continuous Integration</a> angewandt. OpenUP ist ein Open Source Framework, das Teil des <a href="http://epf.eclipse.org/wikis/openup">Eclipse Process Framework</a> ist.</dd>
<dt class="definitionTerm">Rational Unified Process (RUP)</dt>
<dd>RUP ist ein umfassendes Rahmenwerk für Prozesse in der Softwareentwicklung, das unterschiedlich ausgeprägt werden kann, je nachdem wie die es die aktuelle Situation erfordert.  Eignet sich für sehr agile wie auch traditionelle Ansätze gleichermaßen.  Es deckt die Praktiken Risk Management,  Whole Team, TDD, Business Process Sketching und Continuous Integration ab.</dd>
<dt class="definitionTerm">Dynamic System Development Method (DSDM)</dt>
<dd>DSDM eignet sich besonders für Applikationen mit komplexen Benutzeroberflächen.  Es ist ein agiler Ansatz, der von Rapid Application Development abgeleitet wurde und sehr stark auf Rapid Prototyping, Testing, Machbarkeitsstudien und <a href="http://www.selectbs.com/adt/process-maturity/what-is-dsdm">Reversible Changes</a> setzt. </dd>
<dt class="definitionTerm">Feature-Driven Development (FDD)</dt>
<dd>FDD zeichnet sich durch den Einsatz von Modellierungstechniken und kurzen Iterationen aus. Zu den typischen FDD-Praktiken gehören <a href="http://www.hst.fhso.ch/Archiv/2000/swe/otherResources/ch03/fdd.PDF">Class Ownership</a> (PDF), Domain Object Modeling, Development by Feature, Feature Teams und regelmäßige Übersetzungen der Software (Regular Builds). Eine ausgezeichnete Kurzbeschreibung von FDD findest Du unter <a href="http://edn.embarcadero.com/article/29684">The Coad Letter: Issue 70</a>.</dd>
</dl>
<p>Eine akstrahierte Darstellung eines vollständigen SDLC wird in Abbildung 3 dargestellt.  Als Beispiel erweitern wir Scrum um wichtige Aspekte des SDLC, denn zum ersten wird eine explizite Projektgründungsphase (Project Inception) allen anderen Aktivitäten vorangestellt, in der wir erste Modelle konstruieren, das Team bilden und die finanzielle wie auch institutionelle Unterstützung des Auftraggebers sichern. Zum zweiten integrieren wir unabhängige Tests, um sicherzustellen, daß Fehler nicht durchs Raster fallen, was insbesondere auf nicht-funktionale Merkmale und Integrationstest zutreffen kann.  Die nächste Erweiterung von Scrum betrifft das Product Backlog, das nicht nur priorisierte Aufgabenelemente berücksichtigt, sondern auch Tätigkeiten wie die Teilnahme an Trainings (auch zu fachfremden Disziplinen), Feedback zu Arbeiten anderer Teams und die Bewertung von Fehlern sowie deren Einordnung in das Backlog.  Das letzte Merkmal des beschriebenen agilen SDLC ist die ausdrückliche Einführung einer Übergangs- und Produktionsphase (Release to Manufacturing).</p>
<div id="attachment_603" class="wp-caption aligncenter" style="width: 310px"><a href="http://graegert.de/wp-content/uploads/2009/10/figure3.png" rel="shadowbox[post-598];player=img; attachment wp-att-603"><img src="http://graegert.de/wp-content/uploads/2009/10/figure3-300x129.png" alt="Abbildung 3" title="Agile system-development life cycle" width="300" height="129" class="size-medium wp-image-603" /></a><p class="wp-caption-text">Abbildung 3</p></div>
<h3>Stufe 3: Berücksichtigung von spezifischen Faktoren</h3>
<p>Zu Beginn der agilen Bewegung wurden die Praktiken zunächst auf kleinere überschaubare Projekte angewandt und relativ pragmatisch angegangen.  Heutzutage wenden Organisationen agile Methoden auf ein weitaus größeres Wirkungsspektrum an.  Agilität der Stufe 3 berücksichtigt die Komplexität der Projekts in Bezug auf bestimmte Faktoren, die wie Skalierungen angewandt werden können.  Folgende Tabelle faßt einige Faktoren zusammen, die Auswirkung auf die Komplexität eines Projekts haben.</p>
<table border="0" cellspacing="1" class="tabledata">
<tr>
<th class="alignright">einfach</th>
<th>Faktor</th>
<th class="alignleft">komplex</th>
</tr>
<tr>
<td class="alignright">weniger als 10 Teammitglieder</td>
<td class="highlite aligncenter">Teamgröße</td>
<td class="alignleft">hunderte von Teammitgliedern</td>
</tr>
<tr>
<td class="alignright">räumliche Nähe</td>
<td class="highlite aligncenter">geographische Verteilung</td>
<td class="alignleft">global verteilt</td>
</tr>
<tr>
<td class="alignright">geringes Risiko</td>
<td class="highlite aligncenter">Compliance</td>
<td class="alignleft">kritisch / wird auditiert</td>
</tr>
<tr>
<td class="alignright">offen</td>
<td class="highlite aligncenter">Organisation und Kultur</td>
<td class="alignleft">fest verwurzelt</td>
</tr>
<tr>
<td class="alignright">In-House</td>
<td class="highlite aligncenter">Verteilung der Organisation</td>
<td class="alignleft">Third-Party</td>
</tr>
<tr>
<td class="alignright">informell</td>
<td class="highlite aligncenter">Governance</td>
<td class="alignleft">formell</td>
</tr>
<tr>
<td class="alignright">einfach, eine Plattform</td>
<td class="highlite aligncenter">Anwendungskomplexität</td>
<td class="alignleft">komplex, mehrere Plattformen</td>
</tr>
<tr>
<td class="alignright">Projektfokus</td>
<td class="highlite aligncenter">Unternehmensausrichtung</td>
<td class="alignleft">Fokus auf das Unternehmen</td>
</tr>
</table>
<p>Jedem Faktor ist eine Komplexitätsskala zugeordnet und jedes Team wird eine andere Kombination aufweisen, so daß der Prozess, die Teamstruktur und die Werkzeuge den Rahmenbedingungen angepaßt werden müssen.  Agile Prozesse der Stufe 1 im APMM funktionieren am besten wenn alle Faktoren in der Skala auf der linken Seite liegen (eine geringe Komplexität aufweisen.)  Prozesse der Stufe 2 zeichnen sich durch einen oder mehrere Faktoren aus, deren Komplexität entweder in der Mitte oder auf der rechten Seite der Skala liegen.  Liegen fast alle Faktoren auf der rechten Seite wird der Entwicklungsprozess extrem komplex und bedarf spezieller Werkzeuge zur Koordinierung verteilter Teams, Metriken zur Überwachung der Compliance und Berater, die auf beispielsweise auf Risikomangement und andere geschäftsspezifische Disziplinen spezialisert sind.</p>
<p>Während Stufe 1 und Stufe 2 tatsächlich als eigenständige Prozesse charakterisiert werden können, ist die Stufe 3 als Leitfaden für die Bewertung der Projektkomplexität mittels einer einfachen Skala gedacht.  Letzendlich wirken sich die Erkenntnisse aus Stufe 3 auf den Prozess der Stufe 2 dahingehend aus, daß bestimmte Schritte/Abläufe unterschiedlich gewichtet sind und einer eigenen internen Analyse unterzogen werden, um dem identifizierten Komplexitätsgrad in diesem Bereich gerecht zu werden. </p>
<h2>Was bedeutet das für die Praxis?</h2>
<p>In der Praxis wird in fast allen agilen Methoden aus Stufe 1 eine Projektinitiierung durchgeführt, allerdings nicht immer explizit mit der klaren Zielsetzung, die Finanzierung des Projekts zu sichern und ausführlich Zeit für eine Definition der initialen Anforderungen und der gewünschten Vorgehensweise einzuplanen (Länge der Iterationen, Zusammenstellung des/der Teams, Wahl des Prozessmodells, etc.). Es ist nicht unüblich zwischen ein bis zwei Wochen dafür anzusetzen.</p>
<p>Im Idealfall nehmen daran Teil:</p>
<ul>
<li>die Auftraggeber: Product Manager/Owner, Business Owner und Process Owner</li>
<li>die Auftragnehmer: Key Account Manager und Business Consultant, Senior Developers, CTO</li>
</ul>
<p>An der Zusammensetzung sehen wir schon, daß wir nicht nur das Ziel haben, die Anforderungen zu verstehen, sondern auch Risiken zu minimieren, was primär durch die Vertreter der Auftraggeber garantiert wird, die in diesem Beispiel teilweise redundant sind, dadurch aber jeweils eine eigene Sicht auf mögliche Risiken ermöglichen. </p>
<p>Parallel dazu entwerfen CTO und die Senior Developers eine vorläufige, grobe Architekture, identifizieren Subsysteme und Schnittstellen und tragen wichtige Informationen zur Aufteilung der Arbeit auf das oder die Teams zusammen.  Je nach Schwerpunkt des Produkts sind die Business Consultant beispielsweise auf Compliance in regulierten Umgebungen spezialisiert oder sind externe Berater zum Thema Baurecht, weil das Endprodukt eine Software für Ausschreibungen in der Baubranche ist.</p>
<p>Der Product Owner (erfahrungsgemäß oftmals Product Manager des Auftraggebers) priorisiert die Anforderungen und versorgt die Teammitglieder mit Details über Geschäftsprozesse.  Er/Sie wird dabei von den Business Ownern und/oder Process Ownern unterstützt.</p>
<p>Nachdem die erste Iteration (Inception) vorbei ist, wird in der zweiten der Fokus auf die Entwicklung eines Proof of Concepts gelegt um zu zeigen, daß die gewählte Architektur tatsächlich funktioniert.  Am Ende der Iteration wird dem Auftraggeber das Ergebnis präsentiert, wobei sich das Team hier ausschließlich auf die Demonstration der kritischen Systemeigenschaften konzentriert.  Beispielsweise könnte eine kritische Anforderung sein, daß eine Anwendung 5.000 Transaktionen pro Minute bei durchschnittlich zehn angemeldeten Benutzern für mindestens 24 Stunden verarbeiten können muß.</p>
<p>Durch die richtige Wahl der Teammitglieder und einer ausführlichen Projektgründungsphase konnte das Gesamtrisiko des Projekts drastisch reduziert werden, weil zum einen die Anforderungen richtig verstanden wurden und demonstriert werden konnte, daß die kritischste Komponente den ersten Test bestanden hat.</p>
<p>Was die Projektkommunikation betrifft, ist es stets empfehlenswerte eine <em>Single Point of Communication</em> Strategie zu verfolgen.  In Bezug auf Projektkoordination, Ressourcenplanung usw. kommunizieren zwischen Auftragnehmer und Auftraggeber lediglich Key Account Manager (Auftragnehmer) und Product Manger (Auftraggeber).  Fachspezifische Themen koordiniert die Teamleitung mit den Business Consultants auf Auftragnehmerseite und den Business und Process Ownern auf Auftraggeberseite.  Idealerweise, aber praktisch leider kaum durchführbar, sind die Business und Process Owner stets verfügbar und nehmen an täglichen Meetings teil.  Besonders in komplexen Projekten mit hohem Risiko ist dieser Punkt obligatorisch.</p>
<p>Technische Fragen beantwortet die Senior Developer und der CTO in täglichen Meetings.</p>
<h2>Abschließende Gedanken</h2>
<p>Viele Organisationen konnten ihre agilen Prozesse erfolgreich skalieren (Stufe 3) und Du kannst es auch.  Wenn Du Dir treu bleibst und nicht der Rhetorik der Vertreter aus Stufe 1 erliegst ist das schon ein wichtiger Schritt.  Du solltest versuchen, mindestens einen agilen Prozess der Stufe 2 zu etablieren, da der gesamte SDLC berücksichtigt wird und nicht nur ein Teil davon (nur die Konstruktionsphase).  Sei darauf vorbereitet, daß Du Dich über kurz oder lang in einer Situation befinden wirst, in der Dein Prozess skalieren muß (Stufe 3) und das viele Teams unterschiedlich skaliert werden müssen.  Mit einem realistischen, maßgeschneiderten Ansatz kann der ROI gesteigert, die Qualität erhöht und die Kundenzufriedenheit maximiert werden.</p>
]]></content:encoded>
			<wfw:commentRss>http://graegert.de/artikel/prozesse-fur-agiles-softwareprojektmanagement/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agilität für Projektmanager</title>
		<link>http://graegert.de/artikel/agilitat-fur-projektmanager</link>
		<comments>http://graegert.de/artikel/agilitat-fur-projektmanager#comments</comments>
		<pubDate>Mon, 12 Oct 2009 10:50:53 +0000</pubDate>
		<dc:creator>Steve Graegert</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[projektmanagement]]></category>

		<guid isPermaLink="false">http://graegert.de/?p=583</guid>
		<description><![CDATA[Wettbewerbsfähig zu bleiben bedeutet in der heutigen Wirtschaftslage, die richtigen Produkte schneller auf den Markt zu bringen als je zuvor. Agile Methoden weisen den Weg in dem sie Projektteams bei der Produktentwicklung unterstützen und kürzere Entwicklungszeiten zulassen bei gleichzeitig deutlich gesteigerter Qualität der Software. Der Übergang zu agilen Methoden fordert unsere eingeschliffene Wahrnehmung von der [...]]]></description>
			<content:encoded><![CDATA[<p>Wettbewerbsfähig zu bleiben bedeutet in der heutigen Wirtschaftslage, die richtigen Produkte schneller auf den Markt zu bringen als je zuvor.  Agile Methoden weisen den Weg in dem sie Projektteams bei der Produktentwicklung unterstützen und kürzere Entwicklungszeiten zulassen bei gleichzeitig deutlich gesteigerter Qualität der Software.</p>
<p><span id="more-583"></span></p>
<p>Der Übergang zu agilen Methoden fordert unsere eingeschliffene Wahrnehmung von der Disziplin des Software Engineering, und damit verbunden auch Managementmethoden und Führungsstile, heraus.  Agilität wirkt sich auf alle Rollen eines Teams unterschiedlich aus und eröffnet die Gelegenheit auf völlig neue Art und Weise zusammenzuarbeiten.</p>
<p>Besonders für Projektmanager ändert sich die Methodik im agilen Umfeld.  Agilität erfordert ein völlig neues Framework für das Zeitmanagement, Kostenberechnung und Anforderungsmanagement.  Zusätzlich wird des Projektmanagers Liebling, die Vorhersehbarkeit des Projektablaufs, stark strapaziert, denn nun heißt es:  <em>Embrace Change!</em> <span class="inlineNote">{Ron Jeffries}</span>.  Risikomanagement wird nun unmittelbar von der Auslieferung lauffähiger Software bestimmt.  Zusammenarbeit, Förderung individueller Stärken, ein serviceorientierter Führungsstil, Coaching und die Teamzusammenstellung sind essenzielle Fähigkeiten, die Projektmanagern helfen, agile Teams effektiv und zielgerichtet zu führen.</p>
<p>Mit diesen zusätzlichen Fähigkeiten ausgestattet, lernen agile Projektmanager wie sie in einer ungewissen und sich ständig ändernden Welt noch besser zur Wertschöpfung beitragen können.</p>
<h3>Traditionelles Projektmanagement</h3>
<p>Die meisten traditionellen Projekte betrachten den Gültigkeitsbereich (engl. <em>Scope</em>) als wichtigstes Abgrenzungskriterium eines Projektes.  Oftmals tritt der Scope in Form einer langen List mit Produktanforderungen in Erscheinung.</p>
<p>Projektmanager arbeiten evtl. mit Ressource Managers zusammen um Abschätzungen für jeden funktionalen Bereich zu ermitteln, der von den Anforderungen betroffen ist.  Diese Abschätzungen werden in der Regel in Arbeitsstunden oder -tagen dokumentiert, ohne genaue Informationen über die eigentliche Implementierung der Anforderungen.  Anschließend werden daraus die notwendigen Personentage, Ressourcen und andere Faktoren abgeleitet, so dass davon wiederum eine Kostenschätzung hergeleitet werden kann.  Das wir davon aber weit entfernt sind, wird in den folgenden Ausführungen deutlich.</p>
<p>Am Anfang des Projekts verfügt das Team über wenig verwertbare Informationen über die Quantität der notwendigen Arbeit.  Gleichermaßen weiß auch das Projektmanagement nicht genau, welche Teammitglieder welche Aufgaben erledigen werden oder wie die Ressourcen allgemein auf das Projekt optimal verteilt werden können.</p>
<p>Mit nur sehr wenigen Informationen über die tatsächliche Lösung (das Produkt) und über die Arbeitsaufteilung ist es fast unmöglich eine zuverlässige Aussage über ein Fertigstellungsdatum zu treffen.  Projektmanager erstellen Projektpläne auf diesen unvollständigen Informationen und geben ihr bestes, das Projekt nach diesem vom Auftraggeber abgesegneten Plan abzuwickeln.</p>
<p>Diese Herangehensweise hat sich in der Vergangenheit nicht als zuverlässige Methodik zur Abschätzung von Projektdauer, -größe und -kosten bewiesen.  Was die Sache noch schlimmer macht ist die Tatsache, dass von der Annahme einer absoluten Sicherheit über die Vollständigkeit, Korrektheit und Unveränderlichkeit der Anforderungen ausgegangen wird und die Methodik Veränderungen gar nicht vorsieht.</p>
<h3>Agiles Projektmanagement kurz und knapp</h3>
<p>Agiles Projektmanagement geht von der Prämisse aus, das Softwareprojekte unvorhersehbar sind und dass Marktveränderungen zu unmittelbaren Korrekturen der Anforderungen an das Produkt führen.  Die Ungewissheit über Marktentwicklungen führt automatisch zu veränderten Anforderungen während der gesamten Laufzeit des Projekts, und je unsicherer die Entwicklungen sind, desto besser muss das Team darauf eingestellt werden.</p>
<p>Aus diesen Gründen ist der Scope eines Projekts ein denkbar schlechter Ausgangspunkt für die Planung von Softwareprojekten und Erhebung von Leistungskennzahlen eines solchen.  Stattdessen geht die Planung agiler Projekte von den beiden Faktoren Zeit und Kosten aus, da diese beiden Rahmenbedingungen meist zu Beginn des Projekts feststehen.  Die Auftraggeber wissen in der Regel wie viel Geld sie in das Projekt investieren möchten und wann es spätestens einsatzbereit sein muss.</p>
<p>Anforderungen werden in agilen Projekten in kleine Häppchen des antizipierten Endprodukts aufgeteilt, und möglichst unabhängig voneinander herausgelöst, so dass sie einzeln priorisiert und implementiert werden können, ohne sich an eine bestimmte Reihenfolge halten zu müssen.  Kleine überschaubare, unabhängige Module sind kritisch für die Fähigkeit mit Veränderungen im Projektverlauf fertig zu werden, ohne dass sie besondere Auswirkungen auf das Projektteam nach sich ziehen.</p>
<p>Innerhalb von zuvor vereinbarten Iterationen, meist in einer länge zwischen zwei und vier Wochen, werden immer wieder Häppchen aus dem Backlog realisiert, so dass nach einer Iteration andere Features nachrücken und ggf. wieder neu priorisiert werden können.</p>
<p>Agile Teams stellen nun langsam fest, wie viele dieser Fragmente sie innerhalb einer Iteration fertigstellen können und verstehen dadurch wie viele der Anforderungen des Projekts sie innerhalb des Budgets und Zeitplans realisieren können.</p>
<h3>Agile Projektplanung</h3>
<p>Projektmanager agiler Teams befassen sich primär mit zwei Leistungsindikatoren: die Größe des <em>Backlogs</em> und <em>Velocity</em>.  Das <em>Product Backlog</em> ist die Liste der Anforderungen an das Endprodukt.  Es besteht meist aus einer priorisierten Ansammlung von Features, die das Team sofort umsetzen kann.  Die einzelnen Positionen eines Backlogs wurden entweder in Stunden, Tagen oder abstrakten Maßeinheiten, wie <em>Story Points</em>, abgeschätzt.  Die Zahl aller Elemente ist die Gesamtgröße des Product Backlogs.</p>
<p><em>Velocity</em> beschreibt wie viele Elemente des Backlogs vom Team innerhalb einer Iteration erledigt werden konnten.  Diese Größe kann über ein festgelegten Zeitraum gemessen werden und repräsentiert den Durchsatz des Teams oder die Geschwindigkeit in der das gesamte Backlog abgearbeitet werden kann.  Das Fertigstellungsdatum wird durch eine einfache Formel berechnet: </p>
<pre>Iterationen bis zur Fertigstellung = Größe des Backlog / Dauer einer Iteration</pre>
<p>Die ideale Geschwindigkeit (<em>ideal Velocity</em>) ist der Durchsatz welcher notwendig ist, um das Backlog vollständig innerhalb des vorgegebenen Zeitraums und der angesetzten Kosten umzusetzen.  Die eigentliche Geschwindigkeit ist der wahre Durchsatz des Teams in jeder Iteration.  Die Differenz zwischen der idealen und der eigentlichen Geschwindigkeit ist der wichtigste Indikator über den Projektfortschritt in Relation zu den Erwartungen des Auftraggebers.  Je dichter die beiden Größen bei einander liegen umso wahrscheinlicher ist es, dass das gesamte Product Backlog termingerecht realisiert werden kann.</p>
<p>Teams mit vorhersagbarem Durchsatz können eine durchaus fundierte Vermutung über einen möglichen Fertigstellungstermin anstellen.  Wenn Zeit und Kosten unveränderliche Größen sind, kann die Anzahl der umgesetzten Features innerhalb dieser Grenzen abgeschätzt werden.</p>
<p>Teams mit schwankendem Durchsatz sind nicht vorhersehbar und führen in der Regel zu unterschiedlichen Ergebnissen bei der Projektabwicklung.  Das konstante Beobachten des Durchsatzes erlaubt Projektmanagern viel über das Team zu lernen und zu erfahren wie bestimmte Ergebnisse bei der Projektabwicklung zustande kommen.</p>
<h3>Agile Teams führen</h3>
<p>In agilen Projekten übernimmt das Team die Verantwortung für die Auslieferung und sollte daher die notwendigen Freiheiten erhalten, dies es benötigt um sich selbst bestmöglich zu organisieren.  Das Team kann autonom entscheiden wie es die Arbeit erledigen möchte.  Agile Projektmanager können das Team unterstützen indem Sie die Entscheidungen neutral bewerten und dem Team mitteilen, ob es mit diesem Ansatz erfolgreich ist oder eher nicht.</p>
<p>Um die Wahrscheinlichkeit einer erfolgreichen Projektabwicklung zu unterstützen können Projektmanager den Kontext des Projektes aktiv gestalten.  Sie können die Umgebung des Teams verändern, die Entscheidungsfindung im Team fördern und Autonomie zusagen wann immer möglich.  Agile Projektmanager gehen von den besten Qualitäten der Teammitglieder aus, gehen auf individuelle Stärken ein und respektieren das Team als gleichwertiger Partner.  Sie helfen die Kultur zu verändern und fördern ein gesundes Arbeitsklima.</p>
<p>Die Autonomie kommt mit einem Preisschild und das heißt häufige Produktveröffentlichungen.  Das Team bekennt sich am Beginn einer jeden Iteration zu einem gemeinsamen Ziel und ist auch selbst verantwortlich für die Einhaltung desselben.  Es ist für agile Projektmanager unabdingbar im Team eine Kultur der Selbstverantwortung zu bilden und mit dem Team kontinuierlich daran zu arbeiten.  In diesem Aspekt ist der Projektmanager verantwortlich, Policies, Prozeduren und Metriken zu etablieren, die die Gesamtleistung der Projektabwicklung steigern.</p>
<h3>Zusammenarbeit mit agilen Teams</h3>
<p>Nicht jedes Team wird einen dedizierten Projektmanager benötigen.  Viele agile Teams tragen einem oder mehreren Teammitgliedern diese Rolle an, sofern sie qualifiziert sind und über ausreichend Kapazitäten zur Wahrnehmung der Doppelrolle verfügen.  Ein Mitglied der Entwickler oder ein Product Owner kann als PM für kleine Teams fungieren.</p>
<p>Ein Projektmanager wird nicht selten beauftragt die Lücke zwischen dem Team und dem Auftraggeber auszufüllen oder Aktivitäten außerhalb des Teams zu organisieren und zu verwalten.  Desweiteren werden sie häufig in agilen Teams benötigt, um Kommunikationspläne zu erstellen oder die Zusammenarbeit zwischen mehreren agilen Teams zu koordinieren.</p>
<p>Der Projektmanager muss immer bemüht sein, ein gleichwertiges Mitglied des Teams zu sein und andere Mitglieder bei der Erstellung von Plänen und anderen Tätigkeiten einzubinden.  Auf diese Weise wird eine solide Basis für eine vertrauensvolle Zusammenarbeit und hohe Integrität des Teams geschaffen.</p>
<p>Jede Iteration beginnt mit intensiven Sitzungen gefolgt von ad-hoc-Interaktionen zwischen Teammitgliedern.  Projektmanager können das Team bei der Selbstfindung unterstützen in dem sie es bei der Planung der Ziele einer Iteration konstruktiv beraten, so dass sie realistisch sind und auf Basis eines vertretbaren Durchsatzes eingestuft wurden.  Die Übernahme der Leistungsüberwachung innerhalb und zwischen den Iterationen ist eine weitere Tätigkeit für Projektmanager, damit das Team mehr Zeit für die Abarbeitung des Product Backlog hat.</p>
<p>Die meisten agilen Ansätze definieren eine Rolle des Projektmanagers nicht explizit.  In Scrum, beispielsweise, werden viele typtische Zuständigkeiten eines Projektmanagers auf den ScrumMaster und den Product Owner verteilt.  Die Rollen innerhalb des Projektteams zu identifizieren und Verantwortlichkeiten zu definieren ist die wichtigste Aufgabe des Projektmanagers, insbesondere wenn er sich in ein bestehendes Team integrieren muss.</p>
<h3>Neue Fähigkeiten für Projektmanager</h3>
<p>Ein agiler Projektmanager muss viel mehr Führungsqualitäten aufweisen als in traditionellen Projekten.  Seine Aufgabe ist es, die Kommunikation zwischen den Teammitgliedern zu fördern, die Motivation zu steigern, und organisatorische Hindernisse zu beseitigen, die einer erfolgreichen Projektabwicklung im Wege stehen könnten.  Dazu gehört auch, das Team einfach Team sein zulassen, es autonom im eigenen Interesse entscheiden zu lassen.  Neben diesen Soft Skills müssen Projektmanager den gesamten Prozess der Softwareentwicklung in einem neuen Licht betrachten.</p>
<p>Agilität erlaubt dem Projektmanager, sich von den ganzen vielen kleinen Details der Produktlösung wie beispielsweise Implementierungsdetails zu entfernen und sich auf Techniken wie <em>rollierende Planung</em><span class="inlineNote">{zeitlich nahe Fakten sind deutlicher erkennbar als weit entfernte Fakten; die Planung kann somit nur über ein paar Wochen, höchstens zwei Monate erfolgen}</span> und <em>progressive Elaboration</em> <span class="inlineNote">{Arbeitspakete werden im Laufe der Zeit immer weiter verfeinert, so dass wir bei der Planung von zunächst grob abgezeichneten Arbeitspaketen ausgehen}</span> konzentrieren um Projektpläne zu definieren.  Auf Seite des Auftraggebers führt das oft zu Irritationen, da sie in der Regel gewohnt sind, bereits zu Projektbeginn über alle Details, wie Kosten, Zeit und Umfang, vollständig informiert zu sein.  Projektmanager müssen lernen wie <em>progressive Elaboration</em> Risiken minimieren und die Erfolgschancen eines Projekts steigern kann.  Ein solides Verständnis über die agile Softwareentwicklung hilft Projektmanagern zu verstehen, wie agile Teams optimal organisiert, welche Fähigkeiten benötigt werden und welche Besonderheiten agile Teams auszeichnen.</p>
<p>Die Dynamik und kollaborative Entscheidungsfindung agiler Teams zu verstehen ist wichtig, den agiles Projektmanagement heißt sich selbstorganisierende Teams zu führen.  Projektmanager nehmen hier in erster Linie die Rolle eines Dienstleisters und Mediatoren an und müssen in der Lage sein, das Team zu motivieren eigene Entschlüsse zu fassen.  Mit diesen Fähigkeiten sind Projektmanager in der Lage, Anregungen aus dem Team und anderer Beteiligter zu akzeptieren und gleichzeitig das Bekenntnis zum Projekt zu steigern.</p>
<h3>Traditionelle Projekte in neuem Gewand</h3>
<p>Zwar ist der Übergang zu agilen Methoden nur selten einer Entscheidung des Projektmanagers zu verdanken, allerdings gibt es vieles was er beisteuern kann, um dem Unternehmen zu zeigen wie wertvoll agile Methoden sein können.</p>
<p>In traditionellen Projekten erstellt der Projektmanager einen Projektplan, der beschreibt, wie das Projekt abgewickelt wird.  Oftmals geschieht das nach dem Vorbild des PMBOK (<em>PMI Project Management Body of Knowledge</em>) oder anderen PM-Frameworks.  Auch wenn es sich bisher nicht so angehört hat, kann vieles in agilen Projekten anhand traditioneller Frameworks beschrieben werden.  Diese Ansätze können oftmals in den Kontext einer traditionellen Projektplanung integrierte werden.</p>
<p>Oftmals sind Projektmanager mit der Aufgabe betraut, spezifische Aktivitäten während des Projektablaufs zu beobachten und zu beurteilen.  <em>Work Breakdown</em>s, beispielsweise, sollen in der Regel auf Ergebnissen und nicht auf Aktivitäten beruhen.  PMs können diese Breakdowns einfließen lassen in dem sie einfach die Features des Product Backlog berücksichtigen.  Auf diese Weise können traditionelle Methoden zur Abschätzung beibehalten werden.</p>
<p>Desweiteren sind Gantt-Diagramme des traditionellen Projektmanager&#8217;s Liebling.  Manche Organisationen setzen die Erstellung eines Gantt-Diagramms als Teil des Projektplans bereits vor Projektstart voraus.  Iteratives Planen mit dem Projektteam hilft, den Projektplan mit dem Team zu synchronisieren.  Die Erkenntnisse aus der Iteration können in den nächsten Planungsworkshop einfließen und den Projektplan weiter verfeinern.</p>
<p>Tägliche Projektmeetings sind in agilen und traditionellen Projekten gleichermaßen etabliert, besonders wenn Projekte mit außerordentlich hohem Risiko realisiert werden.  Diese täglichen Prüfpunkte erhöhen die Sichtbarkeit zwischen Teammitgliedern und erlauben dem Projektmanagement einen Echtzeiteinblick in den Projektfortschritt.  Diese Meetings können die Bindung im Team fördern und die Übernahme einer gemeinsamen Verantwortung für das Projekt bewirken.</p>
<h3>Fazit</h3>
<p>Die richtigen Produkte schneller auf den Markt zu bringen als die Konkurrenz ist kritischer als je zu vor.  Traditionelle PM-Frameworks sind nicht flexibel genug, um mit sich ständig ändernden Rahmenbedingungen zu Recht zukommen.  Die Agile Projektabwicklung erlaubt Teams Produkte auszuliefern, die innerhalb des Budgets und des Zeitrahmens liegen und die wichtigsten Features des Auftraggebers beinhalten. </p>
<p>Die Projektmanager können dabei eine Schlüsselrolle spielen.  Allerdings müssen sie ihre Denkweise hinsichtlich der Zeit-, Kosten- und Ressourcenplanung ändern um mit Ungewissheit, Veränderungen und Risiken fertig zu werden.  Sie müssen neue Fähigkeiten verinnerlichen und neue Ansätze zur Planung, Überwachung und zum Controlling von Projekten erlernen.  Gut ausgebildete Projektmanager setzen den Rahmen für erfolgreiche Projekte und Teams liefern sie.</p>
]]></content:encoded>
			<wfw:commentRss>http://graegert.de/artikel/agilitat-fur-projektmanager/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Wie Funktionieren Ethernet FTTH Tripple Play Dienste?</title>
		<link>http://graegert.de/artikel/wie-funktionieren-ethernet-ftth-tripple-play-dienste</link>
		<comments>http://graegert.de/artikel/wie-funktionieren-ethernet-ftth-tripple-play-dienste#comments</comments>
		<pubDate>Sun, 28 Dec 2008 08:11:14 +0000</pubDate>
		<dc:creator>Steve Graegert</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[ethernet]]></category>
		<category><![CDATA[tripple play]]></category>

		<guid isPermaLink="false">http://localhost/wordpress/?p=520</guid>
		<description><![CDATA[Rasche technologische Weiterentwicklungen &#246;ffnen T&#252;ren f&#252;r eine ganze Reihe neuer Anwendungen f&#252;r Privatanwender, die unter dem so genannten Tripple Play gef&#252;hrt werden. Intensive Konkurrenz unter Netzbetreibern, ISPs und Kabelanbietern zwingt sie zur Entwicklung eines Gesch&#228;ftsmodells und intelligenterer Netzwerke, die sich schneller an neue Anforderungen, beispielsweise an Kundenw&#252;nsche, anpassen lassen. Das wiederum bedeutet auch gleichzeitig, da&#223; [...]]]></description>
			<content:encoded><![CDATA[<p>Rasche technologische Weiterentwicklungen &ouml;ffnen T&uuml;ren f&uuml;r eine ganze Reihe neuer Anwendungen f&uuml;r Privatanwender, die unter dem so genannten <em>Tripple Play</em> gef&uuml;hrt werden.  Intensive Konkurrenz unter Netzbetreibern, ISPs und Kabelanbietern zwingt sie zur Entwicklung eines Gesch&auml;ftsmodells und intelligenterer Netzwerke, die sich schneller an neue Anforderungen, beispielsweise an Kundenw&uuml;nsche, anpassen lassen.  Das wiederum bedeutet auch gleichzeitig, da&szlig; die Ethernet-Technologie, die Grundlage von Tripple Play, auf das neue Spiel vorbereitet wird.</p>
<p><span id="more-520"></span></p>
<p>F&uuml;r eine erfolgreiche Umsetzung m&uuml;ssen Service Provider:</p>
<ul>
<li>Dienste schneller auf den Markt bringen und dabei die Flexibilit&auml;t erh&ouml;hen.</li>
<li>Quality-of-Service f&uuml;r IPTV und VoIP etablieren</li>
<li>hohen Multicast-Durchsatz f&uuml;r IPTV</li>
</ul>
<p>Gl&uuml;cklicherweise halten diverse Techniken, wie Hochgeschwindigkeits-Ethernet, Aggregation und Management-Plattformen Einzug in das Portfolio der Betreiber, so da&szlig; FTTH-Dienste (Fiber to the Home) leichter zug&auml;nglich werden.</p>
<p>In diesem Artikel beleuchte ich die neuen Anforderungen an die Ethernet-Technologie und zeige wie sie verarbeitet werden.</p>
<h2>Was ist Tripple-Play?</h2>
<p>Tripple-Play sind multimediale Dienste, die von Netzbetreibern, Telekom-Gesellschaften, Kabelnetz-Betreibern und Internet-Providern angeboten werden. Es handelt sich um das kombinierte Angebot von Telefon, Fernsehen und Internet, basierend auf dem Internet-Protokoll (IP), unter Benutzung breitbandiger Zugangsnetze.</p>
<div id="attachment_522" class="wp-caption aligncenter" style="width: 377px"><img src="/wp-content/uploads/2009/10/figure_0.png" alt="Bandbreitenanforderung im Zugangsnetz, nach DSL-Forum und MPEG Industry Forum." title="" width="367" height="356" class="size-full wp-image-522" /><p class="wp-caption-text">Bandbreitenanforderung im Zugangsnetz, nach DSL-Forum und MPEG Industry Forum.</p></div>
<p>Durch die gr&ouml;&szlig;ere Bandbreite der DSL-Verfahren, insbesondere von ADSL2+ und VDSL2, und durch die r&uuml;ckkanalf&auml;higen Kabelverteilnetze, setzen die Provider zunehmend auf Double- und Triple-Play-Angebote. Zu diesem geb&uuml;ndelten Dienstangebot geh&ouml;ren die Internet-Telefonie mit VoIP, das Internet-Fernsehen (IP-TV) mit interaktivem Fernsehen und interaktiven Videodiensten wie Video-on-Demand, Videokonferenzen und Telearbeit sowie der Internet-Zugang.</p>
<p>Je nach Dienstnutzung sind f&uuml;r Triple-Play-Dienste im Downstream Datenraten zwischen 10 Mbit/s und 28 Mbit/s erforderlich und im Upstream etwa 3 Mbit/s.</p>
<p>Tripple-Play bezeichnet im Kern den Einsatz einer Zugangstechnologie f&uuml;r drei Gesch&auml;ftsbereiche: das Wohnungswesen, MANs (Metropolitan Area Networks) und Service Provider.</p>
<h3>Im Wohnungswesen</h3>
<ul>
<li>Attraktivit&auml;tsgewinn des Wohnraumes</li>
<li>langfristige Steigerung des Wohnwertes</li>
<li>Bedarfsgerechte und innovative Technik f&uuml;r die j&uuml;ngere Klientel</li>
<li>nachhaltige Verringerung des Leerbestandes</li>
<li>Dienstleistungserbringung f&uuml;r z.B. betreutes Wohnen</li>
<li>Sicherheit und Objektschutz steigern bzw. gew&auml;hrleisten</li>
<li>Kostenreduzierung der eigenen Aufgaben und Leistungen</li>
<li>Schnelles Return of Invest</li>
</ul>
<h3>F&uuml;r Metropolitan &amp; Service Provider</h3>
<ul>
<li>Hochverf&uuml;gbare Backbone-Ringstruktur (Core) mit fehlertolerantem EAPS     </li>
<li>Basierend auf Standard Ethernet-Architektur (zukunftssicher und skalierbar)     </li>
<li>Aufbau eigener Infrastruktur     </li>
<li>Alle Dienste wie Video, Daten und VoIP?aus einer Hand     </li>
<li>Technologische Vorteile im Verdr&auml;ngungswettbewerb     </li>
<li>Provisioning &amp; Mediation (Zentrale Konfiguration und Schnittstelle zum Abrechnungssystem) </li>
</ul>
<h2>Anforderungen an FTTH Tripple Play</h2>
<p>Die Anwender von Tripple-Play-Diensten werden hohe Anforderungen an die Qualit&auml;t stellen.  Gary Holland, Carrier Ethernet Marketing f&uuml;r Lucent Technologies, spricht von dem Kunden als Netzwerkmonitor:</p>
<blockquote><p>Wenn ein Netzwerkproblem ein kleines Darstellungsproblem w&auml;hrend eines Fu&szlig;ballspiels verursacht, mag das ein Konsument eher l&auml;stig finden.  Doch wenn ein Netzwerk ausf&auml;llt oder gar heftige Darstellungsprobleme auftreten und der Fu&szlig;ballfan deshalb das entscheidende Tor verpa&szlig;t, laufen die Telefone der Service Provider hei&szlig; und der Konsument wendet sich im schlimmsten Fall ab.</p></blockquote>
<p>Das bedeutet, ein Netzwerk muss fehlerfrei laufen, da&szlig; sich aber im Fehlerfall schnell und zuverl&auml;ssig korrigiert.  Auf Seiten der Service Provider steht die Steigerung des Gewinns pro Benutzer im Vordergrund, da die Betriebskosten mit steigender Benutzerzahl wachsen.  Aus dieser Sicht kristalisieren sich vier Schl&uuml;sselanforderungen heraus:</p>
<ul>
<li>Interaktive Dienste und volumin&ouml;se Inhalte f&uuml;hren zu neuen Anforderungen im Bereich der Netzwerkzug&auml;nge und der Netzinfrastrukturen.  Dazu geh&ouml;rt unter anderem die Bereitstellung von mehr Bandbreite, Auspr&auml;gung differenzierter Dienste f&uuml;r unterschiedliche Angebote und eine hohe Innovationskraft und damit auch die schnelle Markteinf&uuml;hrung derselben.</li>
<li>Belastbare Kontrollstrukturen und ausgereiftes Netzwerkmanagement wird ben&ouml;tigt.</li>
<li>Zuverl&auml;ssiges Quality of Service (QoS), ein hohes Ma&szlig; an Skalierbarkeit und Sicherheit m&uuml;ssen auf Aggregationsebene eingef&uuml;hrt werden.</li>
<li>Netzbetreiber ben&ouml;tigen mehrere Netzwerkzugangsoptionen wie beispielsweise PON (Passive Optical Networks) und aktives Ethernet.</li>
</ul>
<div id="attachment_524" class="wp-caption aligncenter" style="width: 460px"><img src="/wp-content/uploads/2009/10/figure_1.gif" alt="Anforderungen an Tripple-Play aus Sicht der Abonnenten und der Service Provider." title="Anforderungen an Tripple-Play aus Sicht der Abonnenten und der Service Provider." width="450" height="234" class="size-full wp-image-524" /><p class="wp-caption-text">Anforderungen an Tripple-Play aus Sicht der Abonnenten und der Service Provider.</p></div>
<p>Grundlage zur Erf&uuml;llung dieser Anforderungen ist die Verf&uuml;gbarkeit ausreichender Bandbreite.  Die Frage ist nun: wieviel ist <em>ausreichend</em>?  Die Frage ist eine Schl&uuml;sselfrage f&uuml;r Tripple-Play-Dienste, da unterschiedliche Technologien jeweils nur begrenzte Bandbreiten verarbeiten k&ouml;nnen.</p>
<p>Momentan kann &uuml;ber diese Frage kaum eine zuverl&auml;ssige Aussage getroffen werden, da nicht klar ist, wie viele Gigabits pro Sekunde f&uuml;r zuk&uuml;nftige Anwendungen, wie etwa 3D-Holoprojektionen, ben&ouml;tigt wird.  Bei Tripple-Play geht man von einer gesch&auml;tzten Gesamtbandbreite von etwa 34  bis 38 Mbps f&uuml;r den Downstream und etwa 3 Mbps f&uuml;r den Upstream aus.</p>
<h2>Aktives und Passives FTTH-Ethernet</h2>
<p>Tripple-Play &uuml;ber Ethernet-FTTH kann &uuml;ber mehrere Zugriffstechnologien abgewickelt werden, allerdings scheinen aktives Ethernet und eine der Formen von PONs pr&auml;destiniert zu sein.  Obwohl PONs ihre Wurzeln in ATM haben, basieren neuere Entwicklungen auf Ethernet. Abbildung 3 illustriert beide Ans&auml;tze.</p>
<p><img src="/wp-content/uploads/2009/10/figure_2.gif" alt="Aktives Ethernet und PONs sind für FTTH einsetzbar" title="Aktives Ethernet und PONs sind für FTTH einsetzbar" width="450" height="350" class="aligncenter size-full wp-image-525" /></p>
<p>Aktives Ethernet verf&uuml;gt &uuml;ber dedizierte Bandbreiten und ein ausgelagertes aktives Ger&auml;t, welches aus Low-Cost-Elementen aufgebaut ist.  Der Abonnent verbindet sich in der Regel &uuml;ber eine 100-Mbps-Verbindung mit einem Ethernet-Aggregations-Switch, der wiederum &uuml;ber Gigabit-Ethernet an einen Ethernet-Router angebunden ist.</p>
<p>Im Gegensatz dazu verwendet ein PON passive optische Splitter (passiv, da ohne Stromversorgung), die es erlauben eine einzige Glasfaser an mehrere Abnehmer zu verteilen, in der Regel nicht mehr als 32 aber auch bis zu 64.  Dieser Broadcast-&auml;hnliche Betriebsmodus hat zur Folge, da&szlig; die Bandbreite unter den Abnehmern verteilt werden mu&szlig;, so da&szlig; tats&auml;chliche Bandbreiten pro Abnehmer von etwa 19 bis 35 Mbps m&ouml;glich w&auml;ren.  Das Glasfasersegment wird normalerweise von einer Optical Network Unit (ONU), die sich am Standort des Kunden befindet, terminiert.  Verbunden ist das Segment allerdings durch einen optischen Splitter mit einem optischen Line Terminator (OLT), der an einen Switch, wahlweise ATM oder Ethernet, angeschlossen ist.  Dieser liefert letztendlich den Zugang zum aktiven Netzwerk des Service Providers.</p>
<p>Beide Anwendungen haben Vor- und Nachteile.  Beispielsweise ben&ouml;tigt aktives Ethernet ein zus&auml;tzliches, externes Ger&auml;t mit Stromversorgung, wie etwa lokale Aggregations-Switches, die in kleinen Telefonzellen-artigen Geh&auml;usen das Stadtbild pr&auml;gen.  Diese Switches m&uuml;ssen auch aktiv gewartet werden.  Andererseits weisen sie alle Eigenschaften eines Carrier-Ethernets auf: Bandbreitenanpassung, hohe Reichweiten, Fehlerisolierung, Sicherheit, etc.  Momentan werden einige Anstrengungen unternommen, um die Anforderungen an die Stromversorgung zu verringern.</p>
<p>Der gro&szlig;e Vorteil von PONs ist das passive externe Ger&auml;t, allerdings wird die Einzeltrennung der Abnehmer dadurch nahezu aufgehoben.  Desweiteren sind Reichweitenbeschr&auml;nkungen, Sicherheitsfragen und problematische Fehlerisolation und das Management der passiven Komponenten wichtige Nachteile, die gegen PONs sprechen.</p>
<h3>Aggregation, VLANs und MPLS</h3>
<p>Geht ein Service Provider den Ethernet-Weg, so stellt sich ihm eine interessante Frage: Sollte MPLS vom Kernnetzwerk in das Zugangsnetzwerk beispielsweise bis zum Abnehmer selbst erweitert werden?  Prinzipiell w&uuml;rde das zu einer einheitlichen Basis f&uuml;r QoS, das Traffic Management, Redundanz und Skalierbarkeit &uuml;ber weite Teile der Infrastruktur f&uuml;hren.</p>
<p>Die meisten Service Provider setzen auf VLANs, mit all den bekannten Einschr&auml;nkungen.  Der Grund daf&uuml;r sind die Kosten, doch scheinen es die <em>gef&uuml;hlten</em> Kosten f&uuml;r die Einf&uuml;hrung von MPLS sein, die die Provider daran hindert MPLS einzuf&uuml;hren, allerdings macht MPLS, eingesetzt in der gesamten Infrastruktur des Providers, weitaus mehr Sinn. Tabelle 1 vergleicht einige MPLS- und VLAN-Charakteristika.</p>
<div id="attachment_201" class="wp-caption alignnone" style="width: 460px;">
<table cellspacing="1" border="0" class="tabledata">
<tbody>
<tr bgcolor="#cccccc">
<th align="left"><strong>Attribute</strong></th>
<th align="left"><strong>VLAN</strong></th>
<th align="left"><strong>MPLS</strong></th>
</tr>
<tr bgcolor="#eeeeee">
<td valign="top" align="left">QOS</td>
<td valign="top" align="left">Hop by hop</td>
<td valign="top" align="left">End to end via RSVP-TE</td>
</tr>
<tr bgcolor="#eeeeee">
<td valign="top" align="left">Redundancy</td>
<td valign="top" align="left">Restoral in seconds via STP</td>
<td valign="top" align="left">Restoral in &lt;50ms via Fast Reroute</td>
</tr>
<tr bgcolor="#eeeeee">
<td valign="top" align="left">Scaleability</td>
<td valign="top" align="left">Limited by VLAN space</td>
<td valign="top" align="left">Has TE &amp; Label Space</td>
</tr>
<tr bgcolor="#eeeeee">
<td valign="top" align="left">Management</td>
<td valign="top" align="left">Non-standard</td>
<td valign="top" align="left">OAM, Ping, Traceroute</td>
</tr>
<tr bgcolor="#cccccc">
<td colspan="3">Quelle: Riverstone Networks, 2006</td>
</tr>
</tbody>
</table>
<p class="wp-caption-text"><strong>Tabelle 1:</strong> VLAN und MPLS im Vergleich f&uuml;r die Anwendung auf Tripple-Play-Dienste</p>
</div>
<p>Andererseits mu&szlig; es gar nicht mal notwendig sein, MPLS in diesem Ma&szlig;e zu verwenden, gerade im Hinblick auf die ansteigende Komplexit&auml;t.  Es kann schon gen&uuml;gen, die neuesten Erweiterungen der Ethernet-Technologie auszusch&ouml;pfen.  Ethernet-Switches sind heutzutage weitmehr als nur einfache Layer-2-Switches.  Sie kombinieren QoS-F&auml;higkeiten mit Aggregationsfunktionen soda&szlig; ein Aufsetzen auf Ethernet weitaus &ouml;konomischer sein kann als die Einf&uuml;hrung von MPLS.</p>
<p>Im Endeffekt kommt es aber auf die Bed&uuml;rfnisse des Service Providers an.  Wurde bereits schwer in MPLS f&uuml;r das Kernnetzwerk investiert, so ist die Ausdehnung der Technologie auf weitere Teile des Netzwerkes durchaus eine kluge Option.  F&uuml;r Betreiber jedoch, die noch keine MPLS-Investitionen get&auml;tigt haben eignet sich eine neue Herangehensweise, die als <em>MAC in MAC</em> genannt wird.  Dabei handelt es sich um den 802.1ah-Standard mit der Bezeichnung <em>Provider Backbone Bridges Standard</em>, der es erlaubt Ethernet-Netzwerke auf bis zu mehrere Millionen VPNs zu skalieren w&auml;hrend alle Vorz&uuml;ge des Ethernets bestehen bleiben.  Das Prinzip wird in Abbildung 4 dargestellt.</p>
<div id="attachment_526" class="wp-caption aligncenter" style="width: 460px"><img src="/wp-content/uploads/2009/10/figure_4.gif" alt="Ethernet-Netzwerke mit MAC in MAC skalieren" title="Ethernet-Netzwerke mit MAC in MAC skalieren" width="450" height="304" class="size-full wp-image-526" /><p class="wp-caption-text">Ethernet-Netzwerke mit MAC in MAC skalieren</p></div>
<h2>FTTH Ethernet-Dienste</h2>
<p>Unabh&auml;ngig davon, ob ein Service Provider auf aktives oder passives Ethernet setzt, FTTH wirft einige ernste Probleme beim Handling der Dienste beim Abhnehmer, beispielsweise IPTV, VOIP und Hochgeschwindigkeits-Internet auf.  Wie bereits eingangs bereits erw&auml;hnt, schlagen folgende Punkte auf:</p>
<ul>
<li>Steigende komplexit&auml;t und erh&ouml;hte Kosten</li>
<li>Sicherstellung der Kontinuit&auml;t der Dienste</li>
<li>Fehlersuche im Fall einer St&ouml;rung</li>
</ul>
<h3>Steigende komplexit&auml;t und erh&ouml;hte Kosten</h3>
<p>Mehrere Dienste &uuml;ber ein und dasselbe Netzwerk abzuwickeln geht einher mit steigender Komplexit&auml;t auf Seiten des Service Providers und f&uuml;hrt damit auch zu nicht unerheblichen Kostensteigerungen.  In einer offenen Umgebung oder in einer solchen, in der mehrere Provider Komplettpakete anbieten, ist die Integration der jeweiligen Dienste in ein Netzwerk noch schwieriger.  Das alles macht die Sache nicht einfacher und sieht nicht nach Kostenminimierung aus.  Ergo: Netzwerke m&uuml;ssen kl&uuml;ger werden.</p>
<p>Automatisierung ist der Schl&uuml;ssel auf dem Weg zur Kosteneffizienz.  Beispielsweise m&uuml;ssen Anderungen der Service-Profile an einer Stelle auf mehreren Instanzen repliziert werden k&ouml;nnen, und das bitte sch&ouml;n automatisch.  F&uuml;r Ethernet FTTH bedeutet das:</p>
<ul>
<li>Automatisierte Bereitstellung (Replikation) ge&auml;nderter Dienstprofile.</li>
<li>Automatische Upgrades von Netzwerksoftware und Konfigurationsdaten.  Damit wird vermieden, teuer geschulte Fachkr&auml;fte zu besch&auml;ftigen Routine-Aufgaben zu erledigen.  Stattdessen werden die erforderlichen Daten von zentraler Stelle verteilt und automatisch eingepflegt.</li>
<li>Kosteneffiziente Dienstregistrierung, die automatisch an Netzwerkger&auml;te &uuml;bermittelt wird. Auf diese Weise kann ein Kunde Dienste &uuml;ber Web-Portal anfordern und die Ger&auml;te setzen die notwendigen Konfigurationen automatisch um.</li>
<li>Ein flexibles QoS-Management und erweiterte Filter f&uuml;r die TV-Verteilung.</li>
<li>Automatische Benutzerauthorisierung sobald ein Client in das Netzwerk eintritt.  Das ist besonders in offenen Zugangsnetzwerken wichtig, da mehrere Provider die gleiche Infrastruktur nutzen k&ouml;nnen und die Anwender nicht jedesmal die Dienste manuell ausw&auml;hlen wollen.</li>
</ul>
<h3>Sicherstellung der Kontinuit&auml;t der Dienste</h3>
<p>Wir gehen davon aus, da&szlig; ein Provider ein Gesch&auml;ftsmodell basierend auf flexiblen, konkurrenzf&auml;higen kombinierten Dienstpaketen w&auml;hlt.  Da die Durchsetzung eines Preises sehr stark von der Qualit&auml;t der Dienste und deren Zuverl&auml;ssugkeit abh&auml;ngt, besteht ein Wettbewerb gerade im QoS-Bereich, und das f&uuml;r jedes Element im Paket des Anbieters, denn Kunden neigen zur Ablehnung des gesamten Pakets durch das Versagen eines Dienstes.</p>
<p>Die Sicherstellung von Diensten beginnt mit der &Uuml;berwachung von Netzwerk- und Dienst-Performance auf dem MPLS-Layer und dem IP-Kernnetz.  Diese &Uuml;berwachung beginnt am Netzzugang und h&ouml;rt an der T&uuml;rschwelle des Abnehmers auf.  Nur so erh&auml;lt der Netzbetreiber eine n&uuml;tzliche und exakte Einsicht in Leistungsdaten und kann so richtige Entscheidungen im Hinblick auf QoS-Metriken des betreffenden Dienstes treffen.</p>
<h3>Fehlersuche im Fall einer St&ouml;rung</h3>
<p>Besteht ein Problem im Netzwerk selbst, kommen die F&auml;higkeiten des Troubleshootings von Ethernet ins Spiel, was fr&uuml;her noch undenkbar war.  Inzwischen hat sich auch Ethernet weiter entwickelt und die 802.1ag <em>Configuration Fault Management Standards</em> bieten inzwischen Ethernet-Ping- und -Traceroute-F&auml;higkeiten mit, die eine Fehlersuche auf Layer 2 erheblich vereinfachen.</p>
<p>Abbildung 5 listet die unterschiedlichen Verwaltungsdom&auml;nen (Maintenance Domains) der Standards auf.  Darin enthalten sind Ende-zu-Ende-Pr&uuml;fungen enthalten, die mittels Ping und Traceroute auch von Kundenseite aus initiiert werden k&ouml;nnen.  Weiterhin gibt es eine Provider-Dom&auml;ne, die mehrere Betreiber umfassen kannund es gibt eine Betreiberdom&auml;ne f&uuml;r die Fehlersuche in gro&szlig;en Layer-2-Netzwerken erleichtert.</p>
<div id="attachment_527" class="wp-caption aligncenter" style="width: 460px"><img src="/wp-content/uploads/2009/10/figure_5.gif" alt="Fehlersuche in Ethernet-Netzwerken" title="Fehlersuche in Ethernet-Netzwerken" width="450" height="280" class="size-full wp-image-527" /><p class="wp-caption-text">Fehlersuche in Ethernet-Netzwerken</p></div>
<h2>FTTH Ethernet-Architekturen</h2>
<p>Versuchen wir einige der vorangegangenen Erkenntnisse zusammenzufassen.  Abbildung 6 zeigt eine typische aktive Ethernet FTTH-Architektur, die f&uuml;r die Auslegung von Tripple-Play-Diensten konzipiert wurde.  Links sind die Abnehmer mit Gateways, die mit 100 Mbps Ethernet &uuml;ber Glasfaser an einen Access-Router des Netzbetreibers verbunden sind.  Dieser Router befindet sich normalerweise in unmittelbarer Nachbarschaft zu den Abnehmern.  Der Access-Router, welcher an ein Ethernet-Aggregation-Netzwerk anschlie&szlig;t, wird mit einem oder mehreren Gbps angebunden.  Das Ethernet-Aggregation-Netzwerk kann &uuml;ber ein MPLS-Kern auf einen zentralen POP (Point of Presence) geschaltet werden, der rechts in Abbildung 6 gezeigt wird.</p>
<div id="attachment_528" class="wp-caption aligncenter" style="width: 460px"><img src="/wp-content/uploads/2009/10/figure_6.gif" alt="Tripple-Play-Architekturen" title="Tripple-Play-Architekturen" width="450" height="360" class="size-full wp-image-528" /><p class="wp-caption-text">Tripple-Play-Architekturen</p></div>
<p>Gigabit-Ethernet-Aggregation bedeutet, da&szlig; auch relativ gro&szlig;e Entfernungen &uuml;berbr&uuml;ckt werden k&ouml;nnen, teilweise Ausdehnungen &uuml;ber mehrere St&auml;dte.  Ein prominentes Beispiel daf&uuml;r ist <a href="http://www.utopianet.org/">UTOPIA</a>, die Utah Telecommunication Open Infrastructure Agency, deren Netzwerk mehr als 14 St&auml;dte in Utah mit einer Nords&uuml;dausdehnung von etwa 100km umfa&szlig;t.</p>
<p>In der Zentrale befinden sich B-RAS, Radius DHCP-Server und mehrere Router, die den Zugang ins Internet und anderen Netzwerken erm&ouml;glichen (dargestellt durch die braunen und orangen Linien, die zu ISP A und zu ISP B verbinden).  Auf diese Weise haben Kunden zugriffe auf Dienste und Netzwerke anderer Betreiber.</p>
<p>Innerhalb der Architektur werden Anfragen der Abnehmer normalerweise auf VLANs gemappt, aber immer nur ein VLAN f&uuml;r jeden Dienst.  Jedem VLAN ist au&szlig;erdem eine Dienstklasse f&uuml;r QoS zugeordnet, do da&szlig; die entsprechende Bandbreite zur Verf&uuml;gung gestellt werden kann.  All das wird durch das zugrundeliegende MPLS-Netzwerk m&ouml;glich.</p>
<p>Jedes dieser VLANs (eines pro Dienst) wird anschlie&szlig;end in eine VPLS-Instanz (Virtual Private LAN Service) mittels eines Ethernet-Routers des Betreibers am POP aufgeschaltet.  Diese VPLS-Instanz wird &uuml;ber den MPLS-Kern in den Ethernet-Access-Router im FTTH-Netzwerk geschaltet, der sie zum entsprechenden Abnehmer transportiert.  VPLS basiert auf MPLS, so da&szlig; die gew&uuml;nschten Ende-zu-Ende-Charakteristika auch f&uuml;r FTTH-Dienste zur Verf&uuml;gung stehen. </p>
<p>In dieser Art Netzwerk spielt Multicasting eine herausragende Rolle und es gibt verschiedene Architekturen zur Auslieferung von Multicast-Diensten.  In diesem Beispiel behandeln die Ethernet-Router des Betreibers den Multicast-Traffic um den Dienst an den Abnehmer zu &uuml;bermitteln.  In anderen Netzwerken ist es durchaus m&ouml;glich, Layer-2-Netzwerke zur Auslieferung der Daten zu w&auml;hlen um sie dann auf Layer-3-Multicasting umzulegen.  In beiden Szenarien ist die Infrastruktur auf MPLS angewiesen, damit QoS usw. implementiert werden k&ouml;nnen.</p>
]]></content:encoded>
			<wfw:commentRss>http://graegert.de/artikel/wie-funktionieren-ethernet-ftth-tripple-play-dienste/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>64 Bit Data Models Explained</title>
		<link>http://graegert.de/artikel/64-bit-data-models-explained</link>
		<comments>http://graegert.de/artikel/64-bit-data-models-explained#comments</comments>
		<pubDate>Thu, 08 Nov 2007 08:09:03 +0000</pubDate>
		<dc:creator>Steve Graegert</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[data models]]></category>
		<category><![CDATA[lp64]]></category>
		<category><![CDATA[x64]]></category>
		<category><![CDATA[x86]]></category>

		<guid isPermaLink="false">http://localhost/wordpress/?p=517</guid>
		<description><![CDATA[While only few desktop applications take advantage of recent 64-bit processors and technologies, the industry&#8217;s demand for high performance processing platforms was continuously increasing over the last decade. Since a lot of issues are needed to be solved, e.g. binary compatibility, simultaneous execution of 32-bit and 64-bit code and the like, a transition from 32-bit [...]]]></description>
			<content:encoded><![CDATA[<p>While only few desktop applications take advantage of recent 64-bit processors and technologies, the industry&#8217;s demand for high performance processing platforms was continuously increasing over the last decade.  Since a lot of issues are needed to be solved, e.g. binary compatibility, simultaneous execution of 32-bit and 64-bit code and the like, a transition from 32-bit computing to 64-bit computing isn&#8217;t as trivial as it may seem at first glance.  Due to the lack of standards the industry has silently agreed on a well known data model for 64-bit computing that seemed to be a natural choice.  This article explains why the so called LP64 data model is superior to others and what considerations led to this selection.</p>
<p><span id="more-517"></span></p>
<h2>Differences Between Processors</h2>
<p>Good news for consumers are often bad news for system developers.  The introduction of a new processor architecture or a completely new programming model is usually of great benefit to users but will most likely require large amounts of work for a successful transition to a new technology, especially for developers.  They are faced with problems and obstacles that are directly associated with the computer processor design such as storage requirements (e.g. data alignment, byte order, etc.).  In this section we will take a brief look at some crucial issues we will encounter when moving to another processor or computing architecture.</p>
<h3>Alignment of Data</h3>
<p>Almost every processor requires a certain alignment of data in memory.  When accessing n bytes of data in memory the starting address of the memory location must be a multiple of n.  Unfortunately, processors have different requirements for memory access.  Intel&#8217;s x86 architecture allows unaligned access which results in a significant performance penalty.  RISC processors on the other hand do usually not allow unaligned memory access.  They answer with a processor fault to such an operation that is either handled by a software trap or simply causes a system crash.  (Sometimes unaligned access is handled completely by software and is therefore extremely slow.)</p>
<h3>Byte Order</h3>
<p>Depending on the architecture two ways of data representation are in use indicating the byte order within the data type: little endian and big endian.  Little endian architectures (like Intel&#8217;s x86) place the least significant bytes (LSB) at a lower address while big endian architectures (e.g. Alpha and PowerPC) place the most significant bytes (MSB) first.  Normally byte order (also called endianess) is hard coded in to the processors by its designers, but some processors are able to support both data representations like SGI&#8217;s MIPS.  This is known as bi-endianess.  For some reason the PDP-11 stored 32-bit values as two big-endian shorts with the least significant short placed at the lower address.  </p>
<h4>Host Byte Order</h4>
<p>To find out what endianess your current processor is using you can write a simple C program that detects the byte order and prints the result:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;stdio.h&gt;</span>
&nbsp;
<span style="color: #993333;">int</span> is_little_endian<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%sn&quot;</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#40;</span>is_little_endian<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">?</span> <span style="color: #ff0000;">&quot;Little endian&quot;</span> <span style="color: #339933;">:</span> <span style="color: #ff0000;">&quot;Big endian&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">int</span> is_little_endian<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #993333;">short</span> <span style="color: #993333;">int</span> word <span style="color: #339933;">=</span> <span style="color: #208080;">0x0001</span><span style="color: #339933;">;</span>
	<span style="color: #993333;">char</span> <span style="color: #339933;">*</span>byte <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">char</span> <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">&amp;</span>word<span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">return</span> <span style="color: #009900;">&#40;</span>byte<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">?</span> <span style="color: #0000dd;">1</span> <span style="color: #339933;">:</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>A common problem for programmers is portability.  Exchanging data between architectures with different byte order is a problem.  Consider the following code snippet that illustrates a common but bad practice:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">void</span> write_long<span style="color: #009900;">&#40;</span>FILE <span style="color: #339933;">*</span>f<span style="color: #339933;">,</span> <span style="color: #993333;">long</span> l<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #808080; font-style: italic;">/* Oops! Storing in byte order of current processor. */</span>
	fwrite<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>l<span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span>l<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">,</span> f<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">unsigned</span> <span style="color: #993333;">long</span> read_long<span style="color: #009900;">&#40;</span>FILE <span style="color: #339933;">*</span>fp<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #993333;">long</span> l<span style="color: #339933;">;</span>
	<span style="color: #808080; font-style: italic;">/* Oops! Assuming same byte order as written to disk. */</span>
	fread<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>l<span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span>l<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">,</span> fp<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">return</span> <span style="color: #009900;">&#40;</span>l<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Of course, it is fairly legal to write code like this but the application is limited to the platform the code was written on.  A very popular solution to overcome this limitation is to introduce a header for a binray file that contains enough information to allow applications to discover the byte order of the file.  The application must then convert the bytes into the appropriate byte order if necessary.</p>
<h4>Network Byte Order</h4>
<p>Besides the byte order of processors there exists a fixed byte order for network communication.  The TCP/IP protocol suite requires big-endian byte order for data transfer.  It is provided by the network layer and not by the application data being transmitted.  A very common example is the internal representation of IPv4 address and the port associated with a socket.  Both are part of the sockaddr structure that must be converted into network byte order before transmission.  Unexperienced programmers often write code like this:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">struct</span> sockaddr_in server<span style="color: #339933;">;</span>
server.<span style="color: #202020;">sin_port</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">80</span><span style="color: #339933;">;</span> <span style="color: #808080; font-style: italic;">/* non-portable */</span></pre></div></div>

<p>Little endian architectures will not behave as expected, although everything looks correct.  The standard C library provides for functions to convert to network byte order automatically.  Even if we know what byte order we are currently working on we must make use of theses functions to maximize portability of our code.  The correct version of the previous code snippet would then look like this:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">struct</span> sockaddr_in server<span style="color: #339933;">;</span>
server.<span style="color: #202020;">sin_port</span> <span style="color: #339933;">=</span> htons<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">80</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #808080; font-style: italic;">/* this is portable */</span></pre></div></div>

<p>Here the function <tt>htons</tt> (host to network short) converts a short to network byte order.  The reverse can be achieved with <tt>ntohs</tt> (network to host short) that converts to byte order of the host system.</p>
<h3>Size of Native Types</h3>
<p>The processor&#8217;s size of its registers designates its natural word size.  For many 32-bit systems the natural word size is four Bytes (<tt>sizeof(int) == 4</tt>), although Intel&#8217;s x86 can switch to two bytes to retain backward compatibility.</p>
<p>With the advent of 64-bit processors it became clear that this assumption can not be held.  What is the new natural word size of this processor generation?  Still four bytes or eight bytes?  Or both?  As a result a lot of data models have been developed with different goals in mind.  Some of them emphasized on portability, others on compatibility to 32-bit processors.  Until now, five models have been introduced, two of which are currently used for 32-bit processing: LP64, ILP64, LLP64, ILP32, and LP32.  The next section describes each model and explains why LP64 is the model of choice.</p>
<h2>Data Models</h2>
<p>A data model specifies the size of data types imposed by the underlying architecture.  It is usually implemented by the operating systems so that multiple data models can be used on the same processor.  The following subsections describe the most popular data models used in 32-bit and 64-bit computing environments.</p>
<h3>ILP32 and LP32</h3>
<p>Todays programmers are familiar with the traditional 32-bit data model ILP32, where integers, longs and pointers are 32 bits in size.  LP32 is an even simpler specification designed for Intel&#8217;s processors to implement backward compatibility to its 8086 processor family.  Here, only <tt>long</tt>s and pointers are of 32 and integers are of 16 bits in size.</p>
<p>Obviously ILP32 lacks true 64-bit data types and is therfore inappropriate for use on 64-bit processors, that are able to address large amounts of memory way beyond the 4 GB boundary of 32-bit systems.</p>
<p>The following table summarizes the size of data types for both, ILP32 and LP32:</p>
<p align="center">
<table border="0" cellspacing="1" class="tabledata">
<tbody>
<tr>
<th>Datatype</th>
<th>ILP32</th>
<th>LP32</th>
</tr>
<tr>
<td>char</td>
<td>8</td>
<td>8</td>
</tr>
<tr>
<td>short</td>
<td>16</td>
<td>16</td>
</tr>
<tr>
<td>int</td>
<td>32</td>
<td>16</td>
</tr>
<tr>
<td>long</td>
<td>32</td>
<td>32</td>
</tr>
<tr>
<td>pointer</td>
<td>32</td>
<td>32</td>
</tr>
</tbody>
</table>
<h3>LP64, ILP64 and LLP64</h3>
<p>One of the key benefits of 64-bit processors is the larger address space.  Computer industry vendors are now able to develop software systems that allow addressing of up to 512 Terrabytes of storage without circumventing the 4 GB barrier presented by 32-bit processors.  This capability is very significant for new high performance applications like database systems or full-motion video.  In conjunction with decreasing prices for memory and storage and with continuously increasing computing power new data models have been developed to address these new requirements.</p>
<h3>Technical Background</h3>
<p>Adding new data types to the C programming language is not possible per se.  With the introduction of 64-bit addressing and new arithmetic capabilities, application developers are forced to change mappings or bindings of existing types or to add new data types to the language.</p>
<p>The most popular data models are LP64, ILP64 and LLP64.  The nomenclature describes the size of the three basic types: <tt>long</tt>, <tt>int</tt> and pointer types.  The size of each type of a particular data model is summarized in the following table:</p>
<table border="0" cellspacing="1" class="tabledata">
<tbody>
<tr>
<th>Datatype</th>
<th>LP64</th>
<th>ILP64</th>
<th>LLP64</th>
<th>ILP32</th>
<th>LP32</th>
</tr>
<tr>
<td><tt>char</tt></td>
<td>8</td>
<td>8</td>
<td>8</td>
<td>8</td>
<td>8</td>
</tr>
<tr>
<td><tt>short</tt></td>
<td>16</td>
<td>16</td>
<td>16</td>
<td>16</td>
<td>16</td>
</tr>
<tr>
<td><tt>int</tt></td>
<td>32</td>
<td>64</td>
<td>32</td>
<td>32</td>
<td>16</td>
</tr>
<tr>
<td><tt>long</tt></td>
<td>64</td>
<td>64</td>
<td>32</td>
<td>32</td>
<td>32</td>
</tr>
<tr>
<td><tt>long long</tt></td>
<td>64</td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>pointer</td>
<td>64</td>
<td>64</td>
<td>64</td>
<td>32</td>
<td>32</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<h4>LLP64 Data Model</h4>
<p>As we can see from the table above the relationship between <tt>long</tt> and <tt>int</tt> is preserved by specifying a size of 32 bits for both.  So, data objects not containing pointers will have the same size as found in the ILP32 data model found in almost every 32-bit computing environment.</p>
<p>To support new 64-bit scalar types a new, non-portable data type has been introduced.  One can say LLP64 is a true 32-bit data model working with 64-bit addresses.  Therein, potential runtime problems are buried regarding the assumption of the size of data types.  A pointer will <em>not</em> fit into an int as opposed to a real 32-bit data model like ILP32.  To overcome this problem <tt>int</tt> and <tt>long</tt> variables in source codes are changed to <tt>long long</tt>.</p>
<p>This leads directly to another problem with respect to the system APIs.  It would require either a change of data type definition of the APIs or the introduction of a new set of 64-bit interfaces.  As we can see, LLP64 is far from optimal, since it forces major changes to API specifications where support for 64-bit wide types is not naturally required.</p>
<h4>ILP64 Data Model</h4>
<p>In contrast to LLP64 the ILP64 data model tries to mimic the relationship between all three basic types ILP32 developers are used to by making <tt>int</tt>, <tt>long</tt> and pointer types the same size.  Converting or assigning pointers to <tt>int</tt> or <tt>long</tt> does not result in data truncation.  The major disadvantage of this model is that it is either non-portable or requires the addition of 32-bit data types, <tt>int32</tt> for example.  This would break with existing <tt>typedef</tt>s and does not reflect the fundamental spirit of C, which has avoided integration of size descriptions into basic types ever since.  Also, system software that depends on data alignment and size may be rendered non-portable, since it is forced to introduce non-standard data types.</p>
<p>As already seen with the LLP64 data model ILP64 requires frequent changes to source codes to allow interchange of data between 32-bit and 64-bit computing environments.  The introduction of non-standard data types for sake of interoperability and binary compatibility would be an option but breaks with the basic industry demand for portability.</p>
<h4>LP64 Data Model</h4>
<p>The last data model is LP64.  It takes the best from both worlds by preserving the size of char, short and int as known from ILP32.  System software relying on data alignment and size is uneffected and can be used on 32-bit systems without problems.  Additionally, a real 64-bit data type is introduced to take full advantage of arithmetic capabilities (especially with regard to pointer arithmetic).  For this reason, programs that are made 64-bit clean by changing assignment of addresses to scalar types from int to long can be recompiled and run on 32-bit computing environments without awkward changes as described with LLP64 and ILP64.</p>
<h2>Summary</h2>
<p>To make meaningful statements about the superiority of a particular model one must perform thorough investigations and evaluate the results, which is far beyond my technical capabilities in terms of hardware equipment.  But from the comments made above and the rationales of each data model, we can deduce that LP64 is the model of choice for the following reasons:</p>
<ul>
<li>Portability is maximized through LP64 and common problems associated with this criteria can be detected automatically.</li>
<li>As a matter of fact, interoperability is enhanced by the ability to incorporate standard data types and structures that can be used in both, 32-bit and 64-bit environments.</li>
<li>The transition from one computing environment to another is easy and has been proven to be smooth by experience and success of real-world projects.</li>
<p>Besides all that, the natural use of C data types to accommodate all the widths needed in a 64-bit environment is the strongest argument for the proliferation of the LP64 data model.</p>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://graegert.de/artikel/64-bit-data-models-explained/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An Introduction to SCTP</title>
		<link>http://graegert.de/artikel/an-introduction-to-sctp</link>
		<comments>http://graegert.de/artikel/an-introduction-to-sctp#comments</comments>
		<pubDate>Fri, 19 Oct 2007 08:05:56 +0000</pubDate>
		<dc:creator>Steve Graegert</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[sctp]]></category>

		<guid isPermaLink="false">http://localhost/wordpress/?p=514</guid>
		<description><![CDATA[The Stream Control Transmission Protocol (SCTP) is a new IP transport protocol, existing at an equivalent level as UDP (User Datagram Protocol) and TCP (Transmission Control Protocol), which currently provide transport layer functions to all of the main Internet applications. SCTP has been approved by the IETF as a Proposed Standard. Introduction SCTP Core Features: [...]]]></description>
			<content:encoded><![CDATA[<p>The <em>Stream Control Transmission Protocol</em> (<em>SCTP</em>) is a           new IP transport protocol, existing at an equivalent level as UDP (User Datagram Protocol) and TCP (Transmission Control Protocol), which currently provide transport layer functions to all of the main  Internet applications.  SCTP has been approved by the IETF as a Proposed Standard.</p>
<p><span id="more-514"></span></p>
<ol>
<li><a href="#_Toc490452560">Introduction</a></li>
<li><a href="#_Toc490452561">SCTP Core Features: Multi-streaming</a></li>
<li><a href="#_Toc490452562">SCTP Core Features: Multi-homing</a></li>
<li><a href="#_Toc490452563">Other SCTP Features</a></li>
<li><a href="#_Toc490452564">Features of the SCTP Initiation Procedure</a></li>
<ol type="a">
<li><a href="#_Toc490452565">Cookie Mechanism</a></li>
<li><a href="#_Toc490452566">INIT Collision Resolution</a></li>
</ol>
<li><a href="#_Toc490452567">SCTP DATA Exchange Features</a></li>
<li><a href="#_Toc490452568">SCTP Shutdown Features</a></li>
<li><a href="#_Toc490452569">SCTP Message Format</a></li>
<li><a href="#_Toc490452570">Error Cases – Retransmission</a></li>
<li><a href="#_Toc490452571">Error Cases – Path Failure</a></li>
<li><a href="#_Toc490452572">Error Cases – Endpoint Failure</a></li>
<li><a href="#_Toc490452573">API</a></li>
<li><a href="#_Toc490452574">Security</a></li>
<li><a href="#_Toc490452575">Extensions</a></li>
</ol>
<h2><a name="_Toc490452560"></a>Introduction</h2>
<p>The <em>Stream Control Transmission Protocol</em> (<em>SCTP</em>) is a new IP transport protocol, existing at an equivalent level as UDP (User Datagram Protocol) and TCP (Transmission Control Protocol), which currently provide transport layer functions to all of the main Internet applications.  SCTP has been approved by the IETF as a Proposed Standard.</p>
<p>Like TCP, SCTP provides a reliable transport service, ensuring that data is transported across the network without error and in sequence.  Like TCP, SCTP is a connection-oriented mechanism, meaning that an relationship is created between the endpoints of an SCTP session prior to data being transmitted, and this relationship is maintained until all data transmission has been successfully completed.</p>
<p>Unlike TCP, SCTP provides a number of functions that are considered critical for signaling transport, and which at the same time can provide transport benefits to other applications requiring additional performance and reliability.</p>
<p>The core features of SCTP are <em>multi-streaming</em> and <em>multi-homing</em>.</p>
<p><a name="_Toc490452561"></a></p>
<h2>SCTP Core Features: Multi-streaming</h2>
<p>The name <em>Stream Control Transmission Protocol</em> is derived from the multi-streaming function provided by SCTP.  This feature allows data to be partitioned into multiple streams that have the property of being delivered independently, so that message loss in any of the streams will only affect delivery within that stream, and not in other streams.</p>
<p>In contrast, TCP provides a single stream of data and ensures that delivery of that stream takes place with perfect sequence preservation.  While this is desirable for delivery of a file or record, it causes additional delay when message loss or sequence error occurs within the network.  When this happens, TCP must delay delivery of data until the correct sequencing is restored, either by receipt of an out-of-sequence message, or by retransmission of a lost message.</p>
<p>For a number of applications, this characteristic of strict sequence preservation is not truly necessary.  In signaling, for example, it is only necessary to maintain sequencing of messages that affect the same resource (e.g., the same call, or the same channel).  Other messages are only loosely correlated and can be delivered without having to maintain overall sequence integrity.</p>
<p>Another application having this property is delivery of web page objects, if done over a single session.  It is generally not necessary to maintain sequence between the presentation of objects, and in some cases (esp. some types of graphic images) it may be possible to present parts of a single object out of sequence.  Eventually the goal is to deliver all objects, however the ability to deliver objects out of sequence may result in at least better perceived performance, as parts of the web page can be displayed rather than waiting for all of the information to be received before displaying it.</p>
<p>SCTP accomplishes multi-streaming by creating independence between <em>data transmission</em> and <em>data delivery</em>.  In particular, each DATA “chunk” (or PDU) in the protocol uses two sets of sequence numbers, a Transmission Sequence Number that governs the transmission of messages and the detection of message loss, and the Stream ID/Stream Sequence Number pair, which is used to determine the sequence of delivery of received data.</p>
<p>This independence of mechanisms allows the receiver to determine immediately when a gap in the transmission sequence occurs (e.g., due to message loss), <em>and also</em> whether or not messages received following the gap are within an affected stream or not.  If a message is received within the affected stream, there will be a corresponding gap in the Stream Sequence Number, while messages from other streams will not show a gap.  The receiver can therefore continue to deliver messages to the unaffected streams while buffering messages in the affected stream until retransmission occurs.</p>
<p><a name="_Toc490452562"></a></p>
<h2>SCTP Core Features: Multi-homing</h2>
<p>The other core feature of SCTP is <em>multi-homing</em>, or the ability for a single SCTP endpoint to support multiple IP addresses.  The benefit of multi-homing is potentially greater survivability of the session in the presence of network failures.  In a conventional single-homed session, the failure of a local LAN access can isolate the end system, while failures within the core network can cause temporary unavailability of transport until the IP routing protocols can reconverge around the point of failure.  Using <em>multi-homed</em> SCTP, redundant LANs can be used to reinforce the local access, while various options are possible in the core network to reduce the dependency of failures for different addresses.  Use of addresses with different prefixes can force routing to go through different carriers, for example, while route-pinning techniques or even redundant core networks can also be used if there is control over the network architecture and protocols.</p>
<p>In its current form, SCTP does not do <em>load-sharing</em>, that is, multi-homing is used for redundancy purposes only.  A single address is chosen as the “primary” address and is used as the destination for all DATA chunks for normal transmission.  Retransmitted DATA chunks use the alternate address(es) to improve the probability of reaching the remote endpoint, while continued failure to send to the primary address ultimately results in the decision to transmit all DATA chunks to the alternate until heartbeats can reestablish the reachability of the primary.</p>
<p>To support multi-homing, SCTP endpoints can exchange lists of addresses during initiation of the association.  Each endpoint must be able to receive messages from any of the addresses associated with the remote endpoint; in practice, certain operating systems will utilize available source addresses in round robin fashion, in which case receipt of messages from different source addresses will be the normal case.  A single port number is used across the entire address list at an endpoint for a specific session.</p>
<p>In order to reduce the potential for security problems, it is required that some <em>response</em> messages be sent specifically to the source address in the message that caused the response.  For example, when the server receives an INIT chunk from a client to initiate an SCTP association, the server always sends the response INIT ACK chunk to the source address that was in the IP header of the INIT.</p>
<p><a name="_Toc490452563"></a></p>
<h2>Other SCTP Features</h2>
<p>SCTP is a unicast protocol, and supports data exchange between exactly 2 endpoints, although these may be represented by multiple IP addresses.</p>
<p>SCTP provides <em>reliable</em> transmission, detecting when data is discarded, reordered, duplicated or corrupted, and retransmitting damaged data as necessary.  SCTP transmission is full duplex.</p>
<p>SCTP is <em>message oriented</em> and supports framing of individual message boundaries.  In comparison, TCP is <em>stream oriented</em> and does not preserve any implicit structure within a transmitted byte stream.</p>
<p>SCTP is <em>rate adaptive</em> similar to TCP, and will scale back data transfer to the prevailing load conditions in the network.  It is designed to behave cooperatively with TCP sessions attempting to use the same bandwidth.</p>
<h2><a name="_Toc490452564"></a>Features of the SCTP Initiation Procedure</a></h2>
<p>The SCTP Initiation Procedure relies on a 4 message sequence, where DATA can be included on the 3<sup>rd</sup> and 4<sup>th</sup> messages of the sequence, as these messages are sent when the association has already been validated.  A “cookie” mechanism has been incorporated into the sequence to guard against some types of denial of service attacks.</p>
<ol>
<li><a name="_Toc490452565"></a><strong>Cookie Mechanism</strong><br />
The “cookie” mechanism guards specifically against a blind attacker   generating false INIT chunks to try to overload the resources of   an SCTP server by causing it to use up memory and resources handling   new INIT requests.  Rather than allocating memory for a Transmission   Control Block (TCB), the server instead encrypts enough information   to build its TCB an internal key and sends this as a Cookie parameter   in the INIT ACK.  Since the INIT ACK always goes back to the source   address of the INIT, the blind attacker will not get the Cookie.    A valid SCTP client will get the Cookie and return it in the COOKIE   ECHO chunk, where the SCTP server can decrypt the Cookie and verify   that it is valid – note that the SCTP client never has to understand the Cookie, so that no exchange of keys is required. Otherwise, the SCTP Initiation Procedure follows many TCP functions,   so that the endpoints exchange receiver windows, initial sequence   numbers, etc.  In addition to this, the endpoints may exchange address lists as discussed above, and also mutually confirm the number of   streams to be opened on each side.</li>
<li><a name="_Toc490452566"></a><strong>INIT Collision Resolution</strong><br />
Multi-homing adds to the potential that messages will be received out of sequence or with different address pairs.  This is a particular   concern during initiation of the association, where without procedures   for resolving collision of messages, you may easily end up with   multiple parallel associations between the same endpoints.  To avoid   this, SCTP incorporates a number of procedures to resolve parallel initiation attempts into a single association.</li>
</ol>
<p><a name="_Toc490452567"></a></p>
<h2>SCTP DATA Exchange Features</h2>
<p>DATA chunk exchange in SCTP follows TCP’s Selective ACK procedure.  Receipt of DATA chunks is acknowledged by sending SACK chunks, which indicate not only the cumulative Transmission Sequence Number (TSN) range received, but also any non-cumulative TSNs, implying gaps in the received TSN sequence.  Following TCP procedures, SACKs are sent using the “delayed ack” method, normally one SACK per every other received packet, but with an upper limit on the delay between SACKs and an increase to once per received packet when there are gaps detected.</p>
<p>Flow and Congestion Control follow TCP algorithms.  The advertised receive window indicates buffer occupancy at the receiver, while a per-path congestion window is maintained to manage the packets in flight.  Slow start, Congestion avoidance, Fast recovery and Fast retransmit are incorporated into the procedures as described in <a href="http://www.ietf.org/rfc/rfc2581.txt">RFC2581</a>, with the one change being that the endpoints must manage the conversion between bytes sent and received and TSNs sent and received, since TSN is per chunk rather than per byte.</p>
<p>The application can specify a lifetime for data to be transmitted, so that if the lifetime has expired and the data has not yet been transmitted, it can be discarded (e.g., time-sensitive signaling messages).  If the data has been transmitted, it must continue to be delivered to avoid creating a hole in the TSN sequence.</p>
<p><a name="_Toc490452568"></a></p>
<h2>SCTP Shutdown Features</h2>
<p>SCTP Shutdown uses a 3 message procedure to allow graceful shutdown, where each endpoint has confirmation of the DATA chunks received by the remote endpoint prior to completion of the shutdown.  An Abort procedure is also provided for error cases when an immediate shutdown must take place.</p>
<p>Note that SCTP does not support the function of a “half-open” connection as can occur in TCP, when one side indicates that it has no more data to send, but the other side can continue to send data indefinitely.  SCTP assumes that once the shutdown procedure begins, both sides will stop sending new data across the association, and only need to clear up acknowledgements of previously sent data.</p>
<p><a name="_Toc490452569"></a></p>
<h2>SCTP Message Format</h2>
<p>The SCTP Message includes a common header plus one or more chunks, which can be control or data.  The common header has source and destination port numbers to allow multiplexing of different SCTP associations at the same address, a 32-bit verification tag that guards against insertion of an out-of-date or false message into the SCTP association, and a 32-bit checksum (the Adler checksum, described in <a href="http://www.ietf.org/rfc/rfc1950.txt">RFC1950</a>) for end-to-end error detection.</p>
<p>Each chunk includes chunk type, flag field, length and value.  Control chunks incorporate different flags and parameters depending on the chunk type.  DATA chunks in particular incorporate flags for control of segmentation and reassembly, and parameters for the TSN, Stream ID and Stream Sequence Number, and a Payload Protocol Identifier.</p>
<p>The Payload Protocol ID has been included for future flexibility. Initially, values will reflect the adaptation layer protocol running over SCTP, and will match the registered port number assignments for adaptation layers.  In future, it is envisioned that the functions of protocol identification and port number multiplexing will not be as closely linked so that the port number significance is not so much overloaded as it is now.</p>
<p>The SCTP message format naturally allows support of bundling of multiple DATA and control chunks in a single message, to improve transport efficiency.  Use of bundling is controllable by the application, so that bundling of initial transmission can be prohibited.  Bundling will naturally occur on retransmission of DATA chunks, to further reduce any chance of congestion.</p>
<p><a name="_Toc490452570"></a></p>
<h2>Error Cases – Retransmission</h2>
<p>Retransmission of DATA chunks occurs from either (a) timeout of the retransmission timer; or (b) receipt of SACKs indicating the DATA chunk has not been received.  To reduce the potential for congestion, the rate of retransmission of DATA chunks is limited.  The retransmission timeout (RTO) is adjusted based on estimates of the round trip delay and backs off exponentially as message loss increases.</p>
<p>In an active association with fairly constant DATA transmission, SACKs are more likely to cause retransmission than the timeout.  To reduce the chance of an unnecessary retransmission, a 4 SACK rule is used, so that retransmission only occurs on receipt of the 4<sup>th</sup> SACK that indicates that the chunk is missing.  This is intended to avoid retransmits due to normal occurrences such as packets received out of sequence.</p>
<p><a name="_Toc490452571"></a></p>
<h2>Error Cases – Path Failure</h2>
<p>A count is maintained of the number of retransmissions to a particular destination address without successful acknowledgement.  When this count exceeds a configured maximum, the address is declared inactive, notification is given to the application, and the SCTP begins to use an alternate address for sending of DATA chunks.</p>
<p>Also, Heartbeat chunks are sent periodically to all idle destinations (i.e., alternate addresses), and a counter is maintained on the number of Heartbeats sent to an inactive destination without receipt of a corresponding Heartbeat Ack.  When this counter exceeds a configured maximum, that destination address is also declared inactive.</p>
<p>Heartbeats continue to be sent to inactive destination addresses until an Ack is received, at which point the address can be made active again.  The rate of sending of Heartbeats is tied to the RTO estimation plus an additional delay, to allow Heartbeat traffic to be tailored to the needs of the application.</p>
<p><a name="_Toc490452572"></a></p>
<h2>Error Cases – Endpoint Failure</h2>
<p>A count is maintained across all destination addresses on the number of retransmits or Heartbeats send to the remote endpoint without successful Ack.  When this exceeds a configured maximum, the endpoint is delared unreachable, and the SCTP association is closed.</p>
<p><a name="_Toc490452573"></a></p>
<h2>API</h2>
<p>The specification includes a model of the primitives exchanged between the application and the SCTP layer, intended as informational material rather than a formal API statement.  A follow-on document will provide a socket-like API to simplify any migration of TCP or UDP applications to the use of SCTP.</p>
<p><a name="_Toc490452574"></a></p>
<h2><strong>Security</strong></h2>
<p>In addition to the verification tag and cookie mechanisms, SCTP specifies the use of IPSec if strong security and integrity protection is required.  The SCTP specification does not itself define any new security protocols or procedures.</p>
<p><a name="_Toc490452575"></a></p>
<h2>Extensions</h2>
<p>The SCTP format allows new chunk types, flags and parameter fields to be defined as extensions to the protocol.  Any extensions must be based on standard agreements within IETF, as no vendor-specific extensions are supported in the protocol.</p>
<p>Chunk Type values are organized into four ranges to allow extensions to be made with a pre-defined procedure for responding if the a new Chunk Type is not recognized at the remote endpoint.  Responses include: whole packet discard; packet discard with reporting; ignoring the chunk; ignoring with reporting.  Similar pre-defined responses are specified for unrecognized Parameter Type values.</p>
]]></content:encoded>
			<wfw:commentRss>http://graegert.de/artikel/an-introduction-to-sctp/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Verwaltung und Organisation der ASNs</title>
		<link>http://graegert.de/artikel/verwaltung-und-organisation-der-asns</link>
		<comments>http://graegert.de/artikel/verwaltung-und-organisation-der-asns#comments</comments>
		<pubDate>Fri, 13 Jul 2007 08:01:57 +0000</pubDate>
		<dc:creator>Steve Graegert</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[asn]]></category>

		<guid isPermaLink="false">http://localhost/wordpress/?p=505</guid>
		<description><![CDATA[Autonome Systeme (AS) und ihre eindeutige Bezeichnung mit Hilfe von ASNs (engl. autonomous system numbers) spielen eine ungemein wichtige Rolle in der Organisation des Internets. In diesem Artikel lernen wir die Strukturierung der ASNs kennen und schauen uns an, wie dem Engpa&#223;, der aufgrund der 16-bittigen Notation entstanden ist, entgegen getreten werden kann. Grundlagen Ausgehend [...]]]></description>
			<content:encoded><![CDATA[<p>Autonome Systeme (AS) und ihre eindeutige Bezeichnung mit Hilfe von ASNs (engl. <em>autonomous system numbers</em>) spielen eine ungemein wichtige Rolle in der Organisation des Internets. In diesem Artikel lernen wir die Strukturierung der ASNs kennen und schauen uns an, wie dem Engpa&szlig;, der aufgrund der 16-bittigen Notation entstanden ist, entgegen getreten werden kann.</p>
<p><span id="more-505"></span></p>
<h2>Grundlagen</h2>
<p>Ausgehend vom Routing, ist das Internet in zwei Hierarchien gegliedert: Domains, die eine eigene interne Routing-Architektur aufweisen (und jeweils unterschiedliche Routing-Protokolle verwenden k&ouml;nnen) und autonome Systeme, die eine homogene Routing-Architektur f&uuml;r das Routing zwischen autonomen Systemen erm&ouml;glichen. Domains verwenden ein Routing-Protokoll, da&szlig; speziell an die Anforderungen f&uuml;r das interne Routing angepa&szlig;t ist. Es existieren verschiedene Protokolle f&uuml;r solche Anwendungen, die als <em>Interior Gateway Protocols</em> (IGP) zusammgefa&szlig;t werden. Sie verwalten eine vollst&auml;ndige Topologie ihrer Routing-Domain und sind in der Lage, optimale Pfade zwischen zwei Punkten innerhalb der Domain zu errechnen. Zwar ist diese Technik auch f&uuml;r sehr gro&szlig;e Domains geeignet, allerdings &uuml;bersteigt die Dimension des Internets die F&auml;higkeiten solcher Protokolle, so da&szlig; f&uuml;r das Routing zwischen autonomen Systemen andere Technologien zum Einsatz kommen. Bekannte Vertreter der IGPs sind beispielsweise OSPF (Open Shortest Path First) und IS-IS (Intermediate System to Intermediate System).</p>
<p>Routing zwischen autonomen Systemen wird als <em>Inter-Domain Routing</em> bezeichnet und beschreibt, wie zwischen Domains geroutet werden kann, ohne jedoch Pfade durch autonome Systeme festzulegen. Ein Pfad zwischen Domains wird durch die Kennungen aller Domains definiert, die zu durchqueren sind, um die Ziel-Domain mit dem entsprechenden Adresspr&auml;fix zu erreichen. Diese Funktionalit&auml;t &uuml;bernimmt das in der Version 4 vorliegende <em>Border Gateway Protocol</em> (BGP).</p>
<p>Wir bezeichnen einzelne Routing-Domains als autonome Systeme, weil sie zum einen durch eine Instanz verwaltet werden und zum anderen v&ouml;llig unabh&auml;ngig von anderen Routing Domains sind. Damit ist eine Routing-Domain eine autonome Einheit innerhalb des Internets und aus diesem Grund ein autonomes System. Jedes AS wird durch eine sog. <em>Autonomous System Number</em> (ASN, autonome Systemnummer) eindeutig identifiziert. ASNs sind als 16-bittige Ganzzahlen definiert, die eine Adressierung von insgesamt 65536 autonomen Systemen erlauben. ASN 0 ist reserviert und wird beispielsweise zur Bezeichnung nicht gerouteter Netzwerke genutzt. Das gleiche gilt f&uuml;r die gr&ouml;&szlig;te ASN. Die Aufteilung des ASN-Raums zeigt folgende Tabelle:</p>
<table align="center" cellspacing="1" border="0" class="tabledata">
<tbody>
<tr>
<th>Bereich</th>
<th>Anwendung</th>
</tr>
<tr>
<td>0</td>
<td>Reserviert, identifiziert nicht geroutete Netzwerke</td>
</tr>
<tr>
<td>65.535</td>
<td>Reserviert</td>
</tr>
<tr>
<td>64.512 &#8211; 65.534</td>
<td>f&uuml;r private Netzwerke</td>
</tr>
<tr>
<td>23.456</td>
<td>wird f&uuml;r ASN-Pool-&Uuml;bertragungen</td>
</tr>
<tr>
<td>1 &#8211; 64.511 (ohne 23.456)</td>
<td>verf&uuml;gbar f&uuml;r Internet-Routing.</td>
</tr>
</tbody>
</table>
<p>ASNs zusammen mit den Adresspr&auml;fixen der Domains entsteht ein <em>Interdomain-Routing Space</em>. Die Routing-Informationen werden verbreitet indem das urspr&uuml;ngliche AS sein Adresspr&auml;fix und seine ASN angibt, so da&szlig; alle empfangenden autonomen Systeme einen Pfad zu diesem Usprungs-As ermitteln k&ouml;nnen. Immer wenn ein AS erreicht wird f&uuml;gt es seine ASN und das Adresspr&auml;fix hinzu. Auf diese Weise kann an jeder Stelle im Pfad zwischen den autonomen Systemen die Sequenz der durchschrittenen autonomen Systeme genau ermittelt werden. Abbildung 1 zeigt ein einfaches Netzwerk bestehend aus 5 AS. AS 14 mit dem Pr&auml;fix <tt>10.1.2.0/24</tt> sendet ein sog. <em>Prrefix Advertisment</em> (Pr&auml;fixbekanntmachung) aus, da&szlig; irgendwann alle autonomen Systeme durchlaufen ist und schlie&szlig;lich in AS 10 m&uuml;ndet.</p>
<div id="attachment_508" class="wp-caption aligncenter" style="width: 402px"><img src="/wp-content/uploads/2007/07/as_paths.gif" alt="Ermittlung von Pfaden zwischen autonomen Systemen" title="Ermittlung von Pfaden zwischen autonomen Systemen" width="392" height="197" class="size-full wp-image-508" /><p class="wp-caption-text">Ermittlung von Pfaden zwischen autonomen Systemen</p></div>
<p>Jedes AS f&uuml;gt neben seinem Adresspr&auml;fix auch seine ASN hinzu. AS 10 empf&auml;ngt nun zwei Advertisments: eines f&uuml;r den Pfad (12, 14) und ein weiteres f&uuml;r den Pfad (11, 13, 14). AS 10 kann jetzt drei Dinge feststellen:</p>
<ul>
<li>Da es nur mit AS 12 und AS 11 verbunden ist, von beidem jedoch ein Advertisment empfangen hat, ist es nicht n&ouml;tig, das Advertisment weiterzuleiten. </li>
<li>Die beiden Pfade der Advertisments sind unterschiedlich lang, so da&szlig; leicht eine Metrik aufgebaut werden kann. </li>
<li>Durch die Pfadinformationen kann das AS leicht erkennen, ob eine Schleife entstanden ist. </li>
</ul>
<p>Die Metrik eines Pfades sagt aus, wie viele autonome Systeme durchlaufen werden m&uuml;ssen, um ein bestimmtes Adresspr&auml;fix zu erreichen. Sind mehrere Pfade f&uuml;r das gleiche Adresspr&auml;fix vorhanden, w&auml;hlt der Algorithmus des BGP automatisch den k&uuml;rzeren Pfad aus; in unserem Beispiel w&auml;re das der Weg &uuml;ber AS 11, der nur ein As durchquert. Nur durch das explizite Aufz&auml;hlen der autonoment System im Pfad verhindert Loops, denn wenn ein AS Advertisments empf&auml;ngt, das die eigene AS enth&auml;lt wird das Pr&auml;fix einfach verworfen.</p>
<p>Nicht jedes Netzwerk im Internet ben&ouml;tigt eine ASN. Eine ASN wird nur ben&ouml;tigt, wenn das Netzwerk eigene Routing-Richtlinien erfordert, beispielsweise jene von ISPs. Ein privates Netzwerk, das im Internet geroutet werden soll, aber &uuml;ber eine Anbindung an einen Provider verf&uuml;gt, unterliegt damit den gleichen Routing-Richtlinien wie denen des Providers, auch wenn das Netzwerk BGP f&uuml;r das Routing zu diesem Provider verwendet. Bei einer solchen Konstellation spricht man in der Regel von einem <em>Upstream Provider</em>, der nicht notwendigerweise ein ISP, sondern auch ein Betreiber eines periph&auml;ren Netzwerkes mit einer &ouml;ffentlichen ASN sein kann. Das private Netzwerk verwendet stattdessen eine private ASN aus dem Bereich von 64.512 &#8211; 65.534 um eine BGP-Sitzung zu erm&ouml;glichen, die beim Advertisment der Route durch den Upstream Provider entfernt wird. Anschlie&szlig;end tritt das Netzwerk des Upstream Providers als Ursprungs-AS des Advertisments auf. Abbildung 2 verdeutlicht diesen Vorgang:</p>
<div id="attachment_509" class="wp-caption aligncenter" style="width: 333px"><img src="/wp-content/uploads/2007/07/as_private_asn.gif" alt="Verwendung privater ASNs" title="Verwendung privater ASNs" width="323" height="154" class="size-full wp-image-509" /><p class="wp-caption-text">Verwendung privater ASNs</p></div>
<p>Der Einsatz einer eigenen &ouml;ffentlichen ASN macht f&uuml;r Netzwerke mit zwei oder mehr Transit-Verbindungen Sinn, allerdings nur, wenn sich die Routing-Richtlinien von denen des Upstream-Netzwerks unterscheiden.</p>
<p>Da viele autonome Systeme der gleichen Organisation oftmals r&auml;umlich voneinander getrennt sind, aber in der Regel auch von dieser administriert werden, verf&uuml;gen sie gleichzeitig &uuml;ber die gleiche ASN. Abbildung 3 zeigt eine Beispieltopologie mit der gleichen ASN in zwei getrennten Subdomains eines autonomen Systems.</p>
<div id="attachment_510" class="wp-caption aligncenter" style="width: 439px"><img src="/wp-content/uploads/2007/07/as_split_asn.gif" alt="Eine ASN für zwei Subdomains eines autonomen Systems" title="Eine ASN für zwei Subdomains eines autonomen Systems" width="429" height="109" class="size-full wp-image-510" /><p class="wp-caption-text">Eine ASN für zwei Subdomains eines autonomen Systems</p></div>
<p>AS 10a mit der Netzwerkadresse 10.0.1.0/25 gibt seine ASN bekannt und AS 11 und 12 leiten das Advertisment weiter. Sobal AS 10b das Advertisment (12, 11, 10) von AS 12 empf&auml;ngt, sieht es seine eigene ASN und verwirft das Advertisment, denn es hat ja bereits AS 10 durchlaufen. Das gleiche passiert in umgekehrter Richtung, wenn AS 10b mit der Netzwerkadresse 10.0.1.128/25 seine ASN bekanntgibt. AS 10a auf der anderen Seite lehnt das empfangene Advertisment von AS 11 (11,12,10) ab. Damit entsteht allerdings eine L&uuml;cke, denn AS 10a wei&szlig; nicht, wie es zu AS 10b routen soll. Wenn AS 10a eine statische Route zu AS 10b &uuml;ber AS 11 einrichtet und AS 10b eine statische Route zu AS 10a &uuml;ber AS 12 k&ouml;nnen sich die beiden Subdomains wieder erreichen.</p>
<h2>ASNs werden knapp</h2>
<p>Es stehen insgesamt etwa 64.510 ASNs zur Verf&uuml;gung (siehe Tabelle 1) und bereits jetzt sind etwa 40.000 allokiert worden (weiterf&uuml;hrende Statistiken finden Sie hier: <a href="http://www.ripe.net/docs/ripe-353.html" target="_blank">http://www.ripe.net/docs/ripe-353.html</a>). Ganz klar, da&szlig; wir bald eine extreme Verknappung der ASNs erleben werden, wenn nichts unternommen wird.</p>
<h3>Aktuelle Aufstellung des ASN-Pools</h3>
<p>Auch wenn es den Anschein haben mag, gibt es keine Korrelation zwischen der Anzahl der Internet Service Providers (ISPs) und der Anzahl der allokierten ASNs. Pro Jahr werden etwa 3.500 ASNs vergeben (siehe <a href="http://www.potaroo.net/tools/asns/">http://www.potaroo.net/tools/asns/</a>), so da&szlig; bei bestehender Praxis sp&auml;testens 2010 alle RIRs ihre ASN-Pools vollst&auml;ndig ausgesch&ouml;pft haben werden. Ein wichtiger Faktor f&uuml;r das Auslaufen der ASNs ist steigende Bedarf an hochverf&uuml;gbaren Verbindungen f&uuml;r gesch&auml;ftskritische Anwendungen. Dazu bem&uuml;hen Betreiber von Netzwerken oftmals mehrere Upstream-Provider und definieren mit Hilfe von eigenen ASNs und BGP unterschiedliche Routing-Richtlinien f&uuml;r jeden Upstream. Welche weiteren Faktoren gr&ouml;&szlig;eren Einflu&szlig; auf die Entwicklung haben werden ist schwer vorherzusagen.</p>
<p>Von den 64.510 verf&uuml;gbaren ASNs sind etwa 40.000 von der IANA in 1.024er-Bl&ouml;cken an die Regional Internet Registries (RIRs) vergeben worden, die ihrerseits die ASNs an ISPs und Endbenutzer-Netzwerke weitergeben. Einige der vergebenen ISP-ASNs sind im Internet nicht sichtbar und werden damit auch bekanntgegeben (advertised). Auch dazu liefert <a href="http://www.potaroo.net/tools/asns/">http://www.potaroo.net/tools/asns/</a> interessante Statistiken.</p>
<h2>Der &Uuml;bergang von 16-Bit zu 32-Bit ASNs</h2>
<p>Aktuellen Projektionen zufolge, sind 2010 keine ASNs f&uuml;r ISPs mehr verf&uuml;gbar. Die logische Schlu&szlig;folgerung ist, da&szlig; bis dahin ein neues Interdomain-Routing-Protokoll etabliert wurde (welches vollkommen ohne ASNs auskommt) oder von 16-bittigen ASNs auf 32-Bit-ASNs umgeschwenkt wird. Letzere Option scheint die bessere Wahl zu sein, auch wenn es einige Zeit dauern wird, bis sie Verbreitung finden und die Anzahl der Netzwerke w&auml;chst weiter von Tag zu Tag.</p>
<p>Der &Uuml;bergang zu l&auml;ngeren ASNs erfordert einen wohldurchdachten Plan: (a) zun&auml;chst m&uuml;ssen die erforderlichen Standards und Best Practices geschaffen werden. Anschlie&szlig;end (b) mu&szlig; stablier Code f&uuml;r den Produktiveinsatz entwickelt werden, der die neuen Standards implementiert. Stabil hei&szlig;t in diesem Zusammenhang auch, da&szlig; die neuen Spezifikation uneingeschr&auml;nkt (c) r&uuml;ckw&auml;rtskompatibel sind, so da&szlig; 16-Bit- und 32-Bit-ASNs f&uuml;r eine sehr lange Zeit koexistieren k&ouml;nnen. Und letztendlich w&auml;re es w&uuml;nschenswert, wenn der Einsatz der neuen Technik beginnt, bevor (d) die ASNs vollst&auml;ndig aufgebraucht sind.</p>
<h3>Der neue Weg</h3>
<p>Im Oktober 2005 tauchte der bereits in der 12. Version befindliche Internet Draft (I-D) in den Archiven des IETF Internet Draft Repositories auf, der genau diese Problematik betrachtete: <tt>draft-ietf-idr-as4bytes-12.txt</tt>. Bei Erweiterung des ASN-Feldes in BGP-Nachrichten w&uuml;rde eine theoretische maximale Anzahl von 4,294,967,296 ASNs zur Verf&uuml;gung stehen. Die wichtigste Frage, die sich stellt, ist: wie schaffen wir es, das alte Format bestehend aus 2 Oktetten mit dem neuen Format aus 4 Oktetten zu kombinieren?</p>
<p>Der Ansatz sieht vor, da&szlig; neue BGP-Speaker (im weiteren Verlauf NEW BGP genannt) &uuml;ber <em>BGP Capability Advertisments</em> in <tt>OPEN</tt> Messages (<a href="ftp://ftp.rfc-editor.org/in-notes/rfc3392.txt" target="_blank">RFC2842</a>) ihren Peers mitteilen, &uuml;ber welche F&auml;higkeiten (engl. capabilities) sie verf&uuml;gen. Unterst&uuml;tzt ein Router die neue 4-Byte-ASN-Semantik, so wird er das <tt>NEW_AS_PATH</tt>-Attribut verwenden, das die gleiche Semantik aufweist wie das klassische <tt>AS_PATH</tt>-Attribut, mit dem Unterschied, da&szlig; die ASN als 4 Oktette kodiert ist. Von Bedeutung ist nur ein Szenario: die Kommunikation zwischen NEW BGP und OLD BGP, und zwar in beide Richtungen.</p>
<p>Die l&auml;ngere 4-Byte-ASN wird von jetzt an mit einer neuen Syntax beschrieben: <lower word="">.<upper word="">. Folglich k&ouml;nnen wir nun theoretisch ASNs von 0.0 bis 65535:65535 vergeben. Mit Hilfe dieser Notation wird der &Uuml;bergang zur neuen 4-Byte-ASN erleichtert, aber die Kompatibilit&auml;t zur alten Notation bewahrt, wie wir gleich sehen werden. </upper></lower></p>
<p>W&auml;hrend die Kommunikation zwischen zwei NEW BGP-Ger&auml;ten relativ einfach ist, denn beide unterst&uuml;tzen 32-Bit-ASNs, bed&uuml;rfen die &Uuml;berg&auml;nge von OLD BGP zu NEW BGP und umgekehrt besonderer Aufmerksamkeit. Wenn ein <tt>NEW_AS_PATH</tt>-Attribut durch eine <tt>AS_PATH</tt>-Zone geleitet werden mu&szlig; ist die Frage, wie wir (a) die 32-Bit-Semantik von NEW BGP durch die <tt>AS_PATH</tt>-Zone bringen und (b) wie wir Pfade rekonstruieren, wenn sie aus einer OLD BGP-Umgebung in eine NEW BGP-Umgebung &uuml;berf&uuml;hrt werden m&uuml;ssen. Abbildung 4 zeigt, wie es geht:</p>
<div id="attachment_511" class="wp-caption aligncenter" style="width: 503px"><img src="/wp-content/uploads/2007/07/as_transition.gif" alt="Zusammenarbeit von OLD BGP mit NEW BGP" title="Zusammenarbeit von OLD BGP mit NEW BGP" width="493" height="187" class="size-full wp-image-511" /><p class="wp-caption-text">Zusammenarbeit von OLD BGP mit NEW BGP</p></div>
<p>Auf der linken und rechten Seite befinden sich autonome Systeme mit Unterst&uuml;tzung f&uuml;r NEW BGP und in der Mitte finden wir zwei AS, die als Transit-Netzwerke dienen sollen. AS 0:2 sendet ein BGP Advertisment aus, AS 1:5 verarbeitet es wie gewohnt und leitet es an AS 11 weiter. AS kennt 32-Bit-ASNs nicht und antwortet mit einem Fehler auf das Capability Advertisment von AS 1:5. Dennoch nimmt es das BGP Advertisment an, denn AS 1:5 kodiert die NEW BGP-Daten als <tt>NEW_AS_PATH</tt>-Attribut und die alten Daten in das <tt>AS_PATH</tt>-Attribut. Dazu werden die NEW BGP ASNs folgenderma&szlig;en in 16-Bit-Daten &uuml;bersetzt: ist die Ziffer vor dem Doppelpunkt eine 0, wird sie einfach gestrichen. Aus AS 0:2 wird beispielsweise AS 2. Ist es keine 0, wandert sie in das <tt>AS_PATH</tt>-Attribut, wird aber durch eine vordefinierte 16-Bit-ASN 23456 ersetzt, wie wir beim &Uuml;bergang von AS 1:5 zu AS 11 sehen k&ouml;nnen. Der 32-Bit-ASN-Pfad bleibt erhalten, aber 2-Oktett-ASNs werden hier nicht eingetragen. Sobald das BGP Advertisment eine 16-Bit-Zone verl&auml;&szlig;t wird der urspr&uuml;ngliche Pfad wieder zusammengesetzt.</p>
<p>Der beschriebene Ansatz ist relativ einfach umzusetzen und kann auf unbestimmte Zeit parallel mit OLD BGP-Ger&auml;ten eingesetzt werden. Au&szlig;erdem sichert er die Loop-Detection und die Auswahl des k&uuml;rzesten AS-Pfades auch &uuml;ber <tt>AS_PATH</tt>- und <tt>NEW_AS_PATH</tt>-Zohnen ohne Eingriffe in bestehende Strukturen gleicherma&szlig;en zu. Die einzige Vorraussetzung daf&uuml;r ist, da&szlig; sie bereitwillig die <tt>NEW_AS_PATH</tt>-Updates verbreiten, die von 32-Bit-AS emittiert werden.</p>
]]></content:encoded>
			<wfw:commentRss>http://graegert.de/artikel/verwaltung-und-organisation-der-asns/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Was bedeutet Network Neutrality</title>
		<link>http://graegert.de/artikel/was-bedeutet-network-neutrality</link>
		<comments>http://graegert.de/artikel/was-bedeutet-network-neutrality#comments</comments>
		<pubDate>Sat, 21 Apr 2007 08:00:05 +0000</pubDate>
		<dc:creator>Steve Graegert</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[network neutrality]]></category>

		<guid isPermaLink="false">http://localhost/wordpress/?p=502</guid>
		<description><![CDATA[Der Begriff Network Neutrality (dt. Netzwerkneutralit&#228;t) ist der Dreh- und Angelpunkt einer hitzigen Debatte in den USA &#252;ber eine Steuerung des Zugriffs auf &#246;ffentliche Netzwerke und -dienste. Urspr&#252;nglich untersagte die Netzwerkneutralit&#228;t den diskriminierenden Zugriff lediglich &#252;ber IP-Adressen, Dom&#228;nen, Ports oder auch Cookies, erlaubte jedoch eine Kontrolle &#252;ber den Faktor Bandbreite zur Implementierung von QoS-Vereinbarungen (QoS, [...]]]></description>
			<content:encoded><![CDATA[<p>Der Begriff <em>Network Neutrality</em> (dt. Netzwerkneutralit&auml;t) ist der Dreh- und Angelpunkt einer hitzigen Debatte in den USA &uuml;ber eine Steuerung des Zugriffs auf &ouml;ffentliche Netzwerke und -dienste.  Urspr&uuml;nglich untersagte die Netzwerkneutralit&auml;t den diskriminierenden Zugriff lediglich &uuml;ber IP-Adressen, Dom&auml;nen, Ports oder auch Cookies, erlaubte jedoch eine Kontrolle &uuml;ber den Faktor Bandbreite zur Implementierung von QoS-Vereinbarungen (QoS, Quality of Service) und anderen SLAs (<em>Service-Level Agreements</em>).  Die momentane Interpretation der Netzwerkneutralit&auml;t (im weiteren Verlauf mit <em>NN</em> abgek&uuml;rzt) erlaubt indes nicht einmal die Zugangskontrolle &uuml;ber QoS.  Die Auswirkungen einer wie auch immer ausgerichteten Regulierung werden durchaus auch Folgen auf die Internet-Landschaft in Europa haben.</p>
<p><span id="more-502"></span></p>
<h2>Hintergr&uuml;nde</h2>
<p>Die Pr&auml;gung des Begriffs <em>Network Neutrality</em> geht wahrscheinlich auf Professor Tim Wu der Columbia-Universit&auml;t zur&uuml;ck, der die These aufstellte, da&szlig; der Ausschlu&szlig; von bestimmten Internet-Anwendungen zur Innovationsbremse f&uuml;r neue technologische Entwicklungen f&uuml;hren w&uuml;rde.  Erst k&uuml;rzlich haben einige gr&ouml;&szlig;ere ISPs und Netzwerkbetreiber Pl&auml;ne ver&ouml;ffentlicht, die eine Erhebung von Geb&uuml;hren f&uuml;r die Durchleitung und Bereitstellung von Infrastrukturen qualitativ h&ouml;herwertiger Inhalte vorsehen.  Bef&uuml;rworter der Netzwerkneutralit&auml;t bef&uuml;rchten, da&szlig; auf diese Weise ganze Teile des Internets nur noch sehr langsam oder gar nicht mehr ohne die Entrichtung eines Entgeldes verf&uuml;gbar sind und somit finanzschwache Teilnehmer des Internets kaum noch Inhalte einbringen oder abrufen k&ouml;nnen.</p>
<p>Inzwischen hat die Debatte auch die Politik erreicht.  In den USA wird momentan &uuml;ber einen Entwurf zur Einschr&auml;nkung der Berechnung von Geb&uuml;hren f&uuml;r Dienste, die &uuml;ber die Netzwerke von Providern angeboten werden, beraten.  Dabei geht es zum einen um die Abschirmung von Inhalten, was als Zensur verstanden wird, und zum anderen um das <em>Tiering</em> von Breitbandanwendungen mit dem Verkauf von kostenpflichtigen Sprach- und Datendiensten mit QoS-vereinbarungen.</p>
<p>Prominenteste F&uuml;rsprecher der Netzwerkneutralit&auml;t sind unter anderem Google, Yahoo!, Microsoft und einige prominente Pers&ouml;nlichkeiten.  Die genannten Unternehmen f&uuml;rchten mit dem Verlust der Netzwerkneutralit&auml;t einen immensen R&uuml;ckgang der Anwender ihrer Dienste und damit erhebliche Gewinneinbu&szlig;en, beispielseweise bei den Werbeeinnahmen.  Gegner der NN, wie etwa Verizon, AT&amp;T und Comcast, haben allerdings starke Partner an ihrer Seite, darunter die US Handelskammer (US Chamber of Commerce), die National Black Chamber of Commerce und die League of Latin American Citizens.  In der Debatte um NN prallen g&auml;nzlich unterschiedliche Visionen der Zukunft des Internets aufeinander und offenbar auch unterschiedliche Wahrnehmungen der Vergangenheit des globalen Netzwerkes.</p>
<h2>Konzeptionelle &Uuml;berlegungen</h2>
<p>Die Netzwerkneutralit&auml;t kann aus technischer und kommerzieller Sichtweise betrachtet werden.  Wu machte mit seiner These klar, da&szlig; das Internet selbst kein neutrales Netzwerk ist, da allein die technischen Auspr&auml;gungen eine Netzwerkanwendung keine echte Neutralit&auml;t zulassen.  Beispielsweise gibt es zeitkritische Anwendungen wie etwa VoIP und Video, die oftmals eine bevorzugte Behandlung bei der Durchleitung erfordern, und weniger zeitkritische wie Email oder HTTP.  Schon deshalb sei die Internet Protocol Suite nicht wirklich neutral.  Weiter denkt Wu, da&szlig; Betreiber von Breitbandnetzen in der Lage sein sollten, sinnvolle Unterscheidungen zwischen den Anforderungen verschiedener Anwendungen vornehmen zu d&uuml;rfen und damit auch entscheiden k&ouml;nnen, wie der Verkehr solcher Anwendungen durch eigene Netzwerke geleitet werden sollte.</p>
<p>Dem gegen&uuml;ber steht die Meinung der angesehenen Professoren der Rechtswissenschaften Susan Crawford, die einen uneingeschr&auml;nkten, nicht regulierten Zugang zu Netzwerken zur Durchsetzung der Netzwerkneutralit&auml;t unterst&uuml;tzt.  Netzwerke sollten nicht auf Basis der Inhalte regulieren, sondern lediglich den richtigen Transportmechanismus f&uuml;r eine Anwendung bereitstellen.  Ihrer Meinung nach geht es lediglich um die Gleichbehandlung von Bits in Datennetzen, derren gleichberechtigte Weiterleitung einen wichtigen Schutz des gemeinschaftlichen Gutes der Menschheit darstellt, das nicht unter die Kontrolle von Unternehmen gestellt werden darf.  F&uuml;r sie ist das Internet ein Bed&uuml;rfnis, &auml;hnlich wie Elektrizit&auml;t, und sollte wenn m&ouml;glich von der Regierung bereitgestellt und gesch&uuml;tzt werden.</p>
<p>Der Begriff Netzwerkneutralit&auml;t wird trotz der starken teschnischen Ausrichtung in nicht einem der technischen Spezifikationen (beispielsweise RFCs) erw&auml;hnt.  Dennoch gibt es einige Punkte, die auf eine gewisse regulatorische Natur der verwendeten Technologien, angefangen von der Hardware bis hin zu Anwendungsprotokollen, schlie&szlig;en lassen.  Zwar sind die meisten Netzwerke und deren Anwendungen weitgehend transparent, greifen jedoch durch die verwendeten Algorithmen und Technologien bereits auf dieser Ebene in den Netzwerkverkehr ein, der streng genommen, nicht mehr neutral behandelt wird.  Beispielsweise sind packetorientierte Netzwerke nicht wirklich neutral, sondern fertigen den Verkehr unter verschiedenen Gesichtspunkten, wie Congestion Control (&quot;Staukontrolle&quot;), Resourcenverbrauch und der M&ouml;glichkeit des Queuings ab.  Desweiteren spielen auch Techniken wie Forwarding-Algorithmen und Queue-Management in die Abwicklung des weltweiten Datenverkehrs ein.  Sie sind alle auf ihre Weise bereits diskrimatorisch.</p>
<h3>Argumente und Bedenken</h3>
<p>Weitgehend unbekannt ist die Tatsache, da&szlig; die Netzwerkneutralit&auml;t eng mit dem Ende-zu-Ende-Prinzip (<em>end-to-end principle</em>) verwoben ist.  Diesem Prinzip nach besitzt ein Netzwerk keine, oder kaum, Intelligenz, sondern leitet einfach nur Datenpakete weiter.  Es hat keinerlei Kenntnis &uuml;ber Inhalte und die Anwendungen, die die Datenpakete konsumieren oder emittieren.  Ein wichtiger Vorzug der Netzwerkneutralit&auml;t ist, da&szlig; ein &quot;dummes&quot; Netzwerk die Entwicklung und Ausbreitung von Innovationen f&ouml;rdert.  Demnach sollten Netzwerkbetreiber, ob Telekommunikationsunternehmen oder ISP, nicht bestimmen, wie ihre Netzwerke genutzt werden sollen.</p>
<p>Viele setzen Netzwerkneutralit&auml;t mit der Neutralit&auml;t des Internets gleich, obwohl keines der technischen Beschreibungen in Bezug auf Internet-Technologien diesen Begriff jemals aufgreift.  In vielen Abhandlungen &uuml;ber die Geschichte des Internets, beispielsweise in Manuel Castells&#8217; &quot;The Internet Galaxy: Reflections on the Internet, Business, and Society&quot; aus dem Jahr 2001 wird das Internet in den historischen und soziologischen Hintergrund gesetzt, jedoch ohne auf das Ph&auml;nomen Netzwerkneutralit&auml;t einzugehen.  Erst Prof. Lawrence Lessig&#8217;s &quot;The Future of Ideas&quot; von 2001 wird den Begriff erstmals aufgreifen.  Viele Argumente f&uuml;r eine Regulierung des Internets stammen zum einen aus dem akademischen Bereich mit Prof. Tim Wu als prominentesten Vertreter, Lawrence Lessig und dem FCC-Vorsitzenden Michael Powell, der als einer der ersten Offiziellen Stellung zur Netzwerkneutralit&auml;t bezog.  Allerdings sollten wir nicht vergessen, da&szlig; die Ideen, welche in der Netzwerkneutralit&auml;t wiederzufinden sind, eine lange Geschichte haben, denn bereits mit der Einf&uuml;hrung des Kabelfernsehens wurden Gegner der Regulierung des Mediums auf den Plan gerufen.</p>
<p>Bef&uuml;rworter der Netzneutralit&auml;t stammen erstaunlicherweise aus allen Branchen und akademischen Kreisen.  So sehen nicht nur Netzwerkexperten und -ingeneure einen gravierenden R&uuml;ckschlag in der Aufgabe der Netzwerkneutralit&auml;t sondern auch TV-Stationen, einige Telekommunikationsunternehmen und Gelehrte Nachteile in diesem Vorhaben.  Es lassen sich vier Argumente aus der bisherigen Debatte ausmachen:</p>
<ol>
<li>Die meisten Vorhaben, den Zugang zu Netzwerken zu regulieren, schr&auml;nken den Nutzen des gesamten Internets erheblich ein.</li>
<li>Jede Regulierung ist auch gleichzeitig ein Prezedenzfall f&uuml;r weitere einschneidende Regulierungsverfahren.</li>
<li>Eine Regulierung w&uuml;rde Investitionen in konkurrierende Netzwerktechnologien wie etwa WLAN reduzieren und Netzwerkbetreiber gleichzeitig daran hindern, ihre Dienste investionssicher zu differenzieren.</li>
<li>Die Aufgabe der Netzwerkneutralit&auml;t des unregulierten Internets w&uuml;rde zu Verunsicherungen f&uuml;hren, da es schwierig wird die Regularien mit denen der Telefon- und Kabelnetze abzustimmen.</li>
</ol>
<p>W&auml;hrend das Internet sich aufgrund seiner Deregulierung steigender Beliebtheit erfreut, sehen Kritiker der Netzwerkneutralit&auml;t ohnehin bereits ein reguliertes Internet und verweisen auf das ToS-Feld (Type of Service) im IP-Header oder das Aktive Queuing nach RFC2309.  Ihrer Meinung nach ist das Internet weit von einer geeigneten Plattform f&uuml;r Echtzeit- und Multimediaanwendungen entfernt, weil solche Regulierungen fehlen und damit das evolution&auml;re Wachstum des Internets grundlegend gehemmt sei.</p>
<h2>Netzwerkneutralit&auml;t im Zeichen der freien Marktwirtschaft</h2>
<p>Eines der Hauptargumente f&uuml;r Netzwerkneutralit&auml;t ist, da&szlig; ein diskriminatorisches Netzwerk den M&auml;rkte, die von dem Internent abh&auml;ngig sind, st&ouml;ren, und damit letztendlich das Wirtschaftswachstum nachhaltig hemmen w&uuml;rde.  Dadurch w&auml;re es m&ouml;glich, da&szlig; Unternehmen A einen Markt dominiert, obwohl die Technologie von Unternehmen B besser ist. Erm&ouml;glicht wird das durch die st&auml;rkere Finanzkraft von A, das sich den schnellen Zugang zu Netzwerken erkaufen kann.  Auf die gleiche Weise kann auch der Einzug einer neuen Technologie erschwert oder gar unm&ouml;glich gemacht werden, weil das diskriminatorische Netzwerk eine andere zeitgen&ouml;ssische Technologie bevorzugt (behandelt).  Was das mit &ouml;konomischen Wachstum zu tun hat, l&auml;&szlig;t sich folgenderma&szlig;en umrei&szlig;en: die Innovationskraft eines Landes ist ein wichtiger Motor &ouml;konomischen Wachstums.  F&uuml;hrt nun die Abschaffung der Netzwerkneutralit&auml;t zu einer geringeren Innovationskraft, wirkt sich das unmittelbar auf das wirtschaftliche Wachstum eines Landes aus.  Demgegen&uuml;ber stehen Kritiker, die eine Vernachl&auml;ssigung grundlegender Anforderungen an Netzwerktechnologien bef&uuml;rchten, denn ein neutrales Netzwerk w&auml;re gegen&uuml;ber zeitkritischer und bandbreitenkritischer Anwendungen blind, was einen &auml;hnlichen Effekt auf die wirtschaftliche Entwicklung haben w&uuml;rde.</p>
<p>Argumente gegen Netzwerkneutralit&auml;t sind vielf&auml;ltiger Natur, unter anderem deshalb, weil der Begriff selbst unterschiedliche definiert ist:</p>
<ol>
<li>Paket-basierte Unterscheidung (Diskriminierung) ist zwingen erforderlich, um QoS-L&ouml;sungen zu implementieren, was mit Netzwerkneutralit&auml;t unm&ouml;glich sei.</li>
<li>Sevice-Bundeling ist notwendig, um Investitionen zu erm&ouml;glichen, denn wenn ein Anbieter f&uuml;r einen h&ouml;herpriorisierten Dienst mehr Geb&uuml;hren verlangen kann als ein Mitbewerber, der den gleichen Dienst bei Standardpriorit&auml;t anbietet, profitiert der Kunde, weil der Dienst besser ist und der Anbieter weil seine Einnahmen steigen und steigende Investitionen nach sich zieht.  Ein Gegenargument hinterfragt die Notwendigkeit dieser Ma&szlig;nahmen, denn schlie&szlig;lich k&ouml;nnte ein Anbieter einen Flaschenhals im Netzwerk ausnutzen und damit den Zugang f&uuml;r Mitbewerber quasi abkoppeln und gleichzeitig ein Monopol einrichten.</li>
<li>Da ein neutrales Netzwerk wie ein Gemeingut funktionieren w&uuml;rde, m&uuml;sse ein Provider in der Lage sein, die Bandbreitennutzung bestimmter Anwender gezielt einzuschr&auml;nken, um f&uuml;r alle Anwender dieses Netzes maximale Leistung zu gew&auml;hrleisten.</li>
</ol>
<p>Service Provider in den USA haben sich bisher gegen diese Argumentation ausgesprochen und planen keine &Auml;nderung ihrer Preispolitik.  Gr&uuml;nde daf&uuml;r sind zum einen aufwendige Abrechnungsverfahren und der erhebliche technische Aufwand zur Implementierung solcher Mechanismen, und zum anderen der Preiskampf zwischen Mitbewerbern, die weniger stark regulieren und daher abwandernde Kunden gewinnen k&ouml;nnten.  Stattdessen schlagen sie vor, Content Provider st&auml;rker f&uuml;r hochwertige Inhalte zu belasten und die Kosten an die Kunden weiterzugeben.  Dabei vergessen sie offenbar, da&szlig; die Service Provider bereits jetzt Mehrkosten f&uuml;r das Hosting von Daten der Content Provider abrechnen.</p>
<h2>Bef&uuml;rworter und Gegner</h2>
<p>Bisher haben mehr als eine Million Menschen die Petition f&uuml;r die Aufrechterhaltung der Netzwerkneutralit&auml;t unterzeichnet.  Desweiteren sind mehrere namhafte Unternehmen starke Verb&uuml;ndete f&uuml;r den Kampf um Netzwerkneutralit&auml;t, darunter IAC/InterActiveCorp, Ebay, Amazon, Yahoo!, Earthlink und vor allem Google.  Auf Seiten der gemeinn&uuml;tzigen Organisationen haben Moveon.org, Consumer Federation of America, <a href="http://news.zdnet.com/2100-9595_22-6051062.html?tag=nl">AARP</a>, American Library Association, Gun Owners of America, Public Knowledge, the Media Access Project, Free Press, the <a href="http://cdn.moveon.org/content/pdfs/MoveOnChristianCoalition.pdf">Christian Coalition</a> (PDF) und <a href="http://www.cio.com/blog_view.html?CID=21890">TechNet</a> eine Allianz f&uuml;r Netzwerkneutralit&auml;t gebildet und schlie&szlig;lich hat sich auch Tim Berners-Lee zu Wort gemeldet.</p>
<p>Nat&uuml;rlich m&uuml;ssen wir auch nicht lange nach starken Gegnern der Netzwerkneutralit&auml;t suchen.  So sind die Unternehmen der Bell-Gruppe ganz vorn mit dabei.  Sie und gro&szlig;e Kabelnetzbetreiber sehen in der De-Regulierung eine auferzwungene Pflicht zur Unterst&uuml;tzung des ersten Verfassungszusatzes, der freie Meinungs&auml;u&szlig;erung zusichert, aber Gerichtsverfahren wie FCC gegen Turner zeigten, da&szlig; sie selbst nicht verpflichtet sind, Inhalte, wenn auch nur passiv, zu unterst&uuml;tzen, wenn sie nicht mit ihnen konform gehen.  Auch die gemeinn&uuml;tzigen Organisationen Freedom Works Foundation, National Black Chamber of Commerce, Progress and Freedom Foundation und der einflu&szlig;reiche Think Tank New American Century (PNAC) sprechen sich gegen ein neutrales Netzwerk aus.</p>
<p>Interessanterweise hat sich der Finanzsektor sehr zur&uuml;ckgehalten, doch Beobachter hoffen, da&szlig; insbesondere die stark vom Internet abh&auml;ngigen Banken bald in die Debatte eingreifen sobald sie beide Seiten genau abgewogen haben.</p>
<h2>Beispiele f&uuml;r regulative Eingriffe durch ISPs</h2>
<p>Die Bewegung <a href="http://www.savetheinternet.com">SaveTheInternet.com</a> hat einige Beispiele f&uuml;r diskriminatorische Eingriffe durch ISPs auf ihrer Website:</p>
<ul>
<li>Im Jahr 2004 hat der ISP Madison River aus North Carolina Kunden den Zugang zu ihrem Netz mittels eines rivalisierenden Web-basierten Telefondienst untersagt.</li>
<li>Im Jahr 2005 hat Kanada&#8217;s Telefonriese Telus Kunden den Zugriff auf eine Website untersagt, die die Gewerkschaft der Telekommangestellten w&auml;hrend eines Arbeitskampfes unterst&uuml;tzte.</li>
<li>Der Kanadische Dienstanbieter Shaw reduziert gezielt die Qualit&auml;t und Zuverl&auml;ssigkeit konkurierender Anbieter von Internet-Telefonie.  Auf diese Weise zieht das Unternehmen die Kunden auf ihre Seite, aber nicht weil der Dienst besser ist, sondern weil er die Konkurrenten einfach schlecht aussehen l&auml;&szlig;t.</li>
<li>Im April diesen Jahres hat AOL den Zugang zur Website <a href="http://www.dearaol.com">www.dearaol.com</a> untersagt, die AOL&#8217;s Absicht ein sog. Pay-to-send-Email-Schema einzurichten, bei dem Anwender f&uuml;r jede Email einen Obulus zu entrichten h&auml;tten.</li>
</ul>
<h2>Resourcen im Internet</h2>
<p>Einige Links zu ausgew&auml;hlten Informationsquellen zum Thema Netzwerkneutralit&auml;t:</p>
<h3>Wissenschaftliche Abhandlungen</h3>
<ul>
<li><a href="http://papers.ssrn.com/sol3/papers.cfm?abstract_id=388863" title="http://papers.ssrn.com/sol3/papers.cfm?abstract_id=388863"><em>Network Neutrality, Broadband Discrimination</em></a> by Tim Wu, original paper on Network Neutrality</li>
<li><a href="http://papers.ssrn.com/sol3/papers.cfm?abstract_id=557330" title="http://papers.ssrn.com/sol3/papers.cfm?abstract_id=557330"><em>Broadband Debate, a User&#8217;s Guide&#8217;</em></a> by Tim Wu</li>
<li><a href="http://papers.ssrn.com/sol3/papers.cfm?abstract_id=495502" title="http://papers.ssrn.com/sol3/papers.cfm?abstract_id=495502"><em>Would Mandating Broadband Network Neutrality Help or Hurt Competition? A Comment on the End-to-End Debate</em></a> by Christopher Yoo, Vanderbilt University School of Law</li>
<li><a href="http://papers.ssrn.com/sol3/papers.cfm?abstract_id=812991" title="http://papers.ssrn.com/sol3/papers.cfm?abstract_id=812991"><em>Toward an Economic Framework for Network Neutrality</em></a> by Barbara van Schewick</li>
</ul>
<h3>Offizielle Dokumente, Ansprachen und Aussagen</h3>
<ul>
<li><a href="http://clerk.house.gov/evs/2006/roll239.xml" title="http://clerk.house.gov/evs/2006/roll239.xml">U.S. House Record of the Roll Call Vote on the Markey Amendment</a></li>
<li><a href="http://www.lessig.org/blog/archives/Lessig_Testimony_2.pdf" title="http://www.lessig.org/blog/archives/Lessig_Testimony_2.pdf">Lessig&#8217;s testimony to the Senate Committee on Commerce, Science and Transportation, February 7, 2006</a></li>
<li><a href="http://faculty.virginia.edu/timwu/wu_lessig_fcc.pdf" title="http://faculty.virginia.edu/timwu/wu_lessig_fcc.pdf">Tim Wu &amp; Lawrence Lessig Letter to the FCC</a></li>
<li><a href="http://hraunfoss.fcc.gov/edocs_public/attachmatch/DOC-243556A1.pdf" title="http://hraunfoss.fcc.gov/edocs_public/attachmatch/DOC-243556A1.pdf">Michael Powell Speech</a></li>
<li>Net Neutrality: Let&#8217;s Look Before We Leap: Remarks of Assistant Secretary of Commerce Nancy J. Victory to the Progress and Freedom Foundation Conference</li>
<li>The FCC&#8217;s Net Neutrality guidelines</li>
</ul>
<h3>Nachrichten und Artikel</h3>
<ul>
<li><a href="http://www.commondreams.org/views06/0609-24.htm" title="http://www.commondreams.org/views06/0609-24.htm">&quot;House Rejects Net Neutrality&quot;</a> by John Nichols, <em>The Nation</em>, June 9, 2006</li>
<li><a href="http://www.commondreams.org/headlines06/0609-06.htm" title="http://www.commondreams.org/headlines06/0609-06.htm">&quot;Defeat for Net Neutrality Backers&quot;</a> by Tom Lasseter, BBC, June 9, 2006.</li>
</ul>
<h3>Abhandlungen von politischen Organisationen</h3>
<ul>
<li><a href="http://www.freedomworks.org/uploads/20060506.pdf" title="http://www.freedomworks.org/uploads/20060506.pdf">A Comprehensive Study of the Effects of Net Neutrality on Consumer Choice, from Freedom Works</a> (PDF)</li>
<li><a href="http://www.freedomworks.org/informed/issues_template.php?issue_id=2622" title="http://www.freedomworks.org/informed/issues_template.php?issue_id=2622">&quot;Whose Property is it?&quot; From the Center for Global Economic Growth</a></li>
<li><a href="http://www.cato.org/pubs/pas/pa507.pdf" title="http://www.cato.org/pubs/pas/pa507.pdf">Cato Institute Paper on Network Neutrality</a></li>
<li><a href="http://www.sandvine.com/general/getfile.asp?FILEID=37" title="http://www.sandvine.com/general/getfile.asp?FILEID=37">(PDF) <strong>Network Neutrality: A Broadband Wild West?</strong>, Sandvine.com (network equipment company)</a></li>
<li><a href="http://aei-brookings.org/admin/authorpdfs/page.php?id=1269" title="http://aei-brookings.org/admin/authorpdfs/page.php?id=1269">(PDF) <strong>The Economics of Network Neutrality</strong>, Robert Hahn and Scott Wallsten, AEI-Brookings Joint Center for Regulatory Studies</a></li>
</ul>
<h3>Artikel und Webseiten von Bef&uuml;rwortern der Netzwerkneutralit&auml;t</h3>
<ul>
<li><a href="http://www.google.com/help/netneutrality.html" title="http://www.google.com/help/netneutrality.html">A Note to Google Users on Net Neutrality</a> &#8211; Google CEO Eric Schmidt&#8217;s open letter to Google users</li>
<li><a href="http://www.itsournet.org/" title="http://www.itsournet.org/">It&#8217;s Our Net</a> &#8211; a pro-regulation campaign financed by service providers Google, Yahoo, Microsoft, eBay and Amazon</li>
<li><a href="http://www.savetheinternet.com" title="http://www.savetheinternet.com">SaveTheInternet.com</a> &#8211; a pro-network neutrality coalition financed by <a href="/wiki/Free_Press" title="Free Press">Free Press</a> and several political actions groups such as Moveon.org and the Christian Coalition of America</li>
<li><a href="http://www.nycwireless.net" title="http://www.nycwireless.net/tiki-index.php?page=BroadbandChallenge">NYCwireless&#8217; Network Neutrality Broadband Challenge</a></li>
</ul>
<h3>Artikel und Webseiten von Gegnern der Netzwerkneutralit&auml;t</h3>
<ul>
<li>Choose Your Cable</li>
<li><a href="http://www.dontregulate.org/" title="http://www.dontregulate.org/">DontRegulate.org</a> &#8211; an anti-regulation campaign financed by telecommunication companies, using a cartoon created by Odd Todd</li>
<li><a href="http://thefuturefasteraction.com" title="http://thefuturefasteraction.com/campaign/net_neutrality">The Future Faster Net Neutrality Campaign</a> &#8211; an anti-regulation coalition of communications and high-tech industry leaders, civic groups and other associations.</li>
</ul>
<h3>Kommentare und Blogs</h3>
<ul>
<li><a href="http://www.comtechnews.net/telecom/the-future-of-net-neturality" title="http://www.comtechnews.net/telecom/the-future-of-net-neturality">Essay on net neutrality from comtechnews.net blog</a></li>
<li><a href="http://dig.csail.mit.edu/breadcrumbs/node/132" title="http://dig.csail.mit.edu/breadcrumbs/node/132"><em>Neutrality of the Net</em></a>, Tim Berners-Lee</li>
<li><a href="http://www.wirelesscommunity.info/network-neutrality" title="http://www.wirelesscommunity.info/network-neutrality"><strong>Network Neutrality</strong></a> Wireless Community blog</li>
<li><a href="http://www.circleid.com/posts/network_neutrality/" title="http://www.circleid.com/posts/network_neutrality/"><em>Network Neutrality</em></a> James Seng, CircleID</li>
<li><a href="http://www.techdirt.com/articles/20060131/2021240_F.shtml" title="http://www.techdirt.com/articles/20060131/2021240_F.shtml">You&#8217;ve Already Paid $2,000 For A Fiber Connection You&#8217;ll Never Get</a>, techdirt.com</li>
</ul>
<h3>Auflistungen von Artikeln</h3>
<ul>
<li><a href="http://blog.mises.org/archives/005177.asp" title="http://blog.mises.org/archives/005177.asp">List of anti-regulation articles and editorials from Mises Institute blog</a></li>
<li><a href="http://www.democraticmedia.org" title="http://www.democraticmedia.org/issues/netneutrality.html">Center for Digital Democracy, The Assault on Network Neutrality</a></li>
<li><a href="http://www.voip-news.com/news/net-neutrality-debate" title="http://www.voip-news.com/news/net-neutrality-debate"><strong>The Net Neutrality Debate</strong>, voip-news.com</a> An early article on the current network neutrality debate</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://graegert.de/artikel/was-bedeutet-network-neutrality/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ROADMs &#8211; Wer hat Was für Wen?</title>
		<link>http://graegert.de/artikel/roadms-wer-hat-was-fur-wen</link>
		<comments>http://graegert.de/artikel/roadms-wer-hat-was-fur-wen#comments</comments>
		<pubDate>Thu, 14 Dec 2006 07:57:26 +0000</pubDate>
		<dc:creator>Steve Graegert</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[raodms]]></category>

		<guid isPermaLink="false">http://localhost/wordpress/?p=494</guid>
		<description><![CDATA[In den letzten Jahren gab es eine Menge Bewegung auf dem Markt der Rekonfigurierbaren Optischen Add/Drop Multiplexer (ROADMs), haupts&#228;chlich weil viele namhafte Carrier anscheinend f&#252;r das Upgrade ihrer SONET- und SDH-Infrastrukturen einsetzen wollten. Das Resultat sind jede Menge Publikationen und Artikel, die, so schien es, ganze Branchen am Leben hielten. Zur Klarheit trugen sie jedoch [...]]]></description>
			<content:encoded><![CDATA[<p>In den letzten Jahren gab es eine Menge Bewegung auf dem Markt der <em>Rekonfigurierbaren Optischen Add/Drop Multiplexer</em> (ROADMs), haupts&auml;chlich weil viele namhafte Carrier anscheinend f&uuml;r das Upgrade ihrer SONET- und SDH-Infrastrukturen einsetzen wollten. Das Resultat sind jede Menge Publikationen und Artikel, die, so schien es, ganze Branchen am Leben hielten. Zur Klarheit trugen sie jedoch nicht bei. Aus diesem Grund habe ich mich entschieden, einen Artikel zu schreiben, der einen m&ouml;glichst umfangreichen &Uuml;berblick &uuml;ber Hersteller und Anbieter von ROADMs und derren Bauteile liefert. F&uuml;r eine allgemeine Einf&uuml;hrung in die optischen &Uuml;bertragungssysteme SONET/SDH verweise ich auf den Artikel <a href="/artikel/wie-funktionieren-sonet-und-sdh">Wie funktionieren SONET und SDH?</a>.</p>
<p><span id="more-494"></span></p>
<h2>Einf&uuml;hrung</h2>
<p>Zu Beginn m&ouml;chte ich kurz auf die Gundlagen eingehen. Mu&szlig; ein DWDM-Netzwerk manuell rekonfiguriert werden, kann diese Aufgabe schnell mal Wochen oder gar Monate in Anspruch nehmen. Mit den wachsenden Anforderungen an das Netzwerk, wird das nicht gerade erleichtert und reicht heute nicht mehr aus. </p>
<p>Die L&ouml;sung liegt in ROADMs. Ger&auml;te, die Netzwerkbetreibern erlauben, einzelnen optischen Switches mitzuteilen, welche Wellenl&auml;ngen in das Netzwerk aufgenommen und welche daraus entfern werden sollen. Diese Technik k&ouml;nnte Carriern eine ganze Menge Geld sparen, da die gef&uuml;rchtete Rolle auf dem LKW nicht mehr ben&ouml;tigt wird und damit schneller Gewinn aus den Investitionen zur&uuml;ckflie&szlig;en kann. </p>
<p>Der Markt f&uuml;r ROADMs k&ouml;nnte bald in neue H&ouml;hen aufsteigen. Eine Infonetics-Studie von 27 bedeutenden Telekommunikationsnetzbetreibern (<em>Carriern</em>) hat gezeigt, das fast alle (26 von 27) in den n&auml;chsten Jahren auf ROADM setzen werden. Rund 25 Prozent der befragten Unternehmen, planen die Einf&uuml;hrung erster ROADMs sogar in den n&auml;chsten zw&ouml;lf Monaten. Erste Sch&auml;tzungen ergeben einen Markt f&uuml;r 2004 von rund 85 Millionen Dollar, so Michael Howard, Pr&auml;sident von Infonetics Research, Inc. und Hauptauthor dieses Berichtes. </p>
<p>Viele prominente Unternehmen sind derzeit entweder in Vertragsverhandlungen oder haben bereits Vertr&auml;ge mit Herstellern von ROADMs geschlossen, darunter AT&amp;T , SBC Communications Inc. und Verizon Communications Inc. . Nat&uuml;rlich d&uuml;rfen offene Bekenntnisse zur ROADM-Technologie von namhaften Herstellern nicht fehlen. So lie&szlig; sich auch Cisco Systems Inc. nicht lumpen und k&uuml;ndigte neue Produkte mit ROADM-F&auml;higkeiten an. </p>
<p>&quot;Jeder Mensch und sogar sein Hund werden in kurzer Zeit eine ROADM-Geschichte zu erz&auml;hlen haben&quot;, scherzt Rob Lane, Vizepr&auml;sident der Marketing und Business Development Unit beim ROADM-Startup Tropic Networks. &quot;Nun da Service Provider gezeigt haben, da&szlig; ROADM tats&auml;chlich Wirklichkeit ist, beeilen sich alle, den Vorsprung aufzuholen&quot;. </p>
<p>An dieser Stelle entfaltet der Infonetics-Bericht seinen Nutzen, denn er hilft Entscheidern, den schnell wachsenden Markt leichter verfolgen zu k&ouml;nnen, indem die Hersteller von ROADM-Bauteilen, sowie deren Komponentenzulieferer (wie etwa Wellenl&auml;ngenblockierer und einstellbare Filter) genannt werden. </p>
<h2>ROADM-Architekturen </h2>
<p>Momentan existieren zwei Kernarchitekturen f&uuml;r rekonfigurierbare optische Add/Drop Multiplexer: </p>
<ul>
<li>Broadcast and Select </li>
<li>Demultiplexing, Switching, Multiplexing </li>
</ul>
<h3>Broadcast and Select </h3>
<p>Diese Art des ROADM-Designs hat sich als sehr popul&auml;r herausgestellt und bereits fr&uuml;h von Herstellern wie Marconi, Ciena und anderen aufgegriffen. </p>
<div id="attachment_499" class="wp-caption aligncenter" style="width: 341px"><img src="/wp-content/uploads/2006/12/img1.png" alt="Broadcast and Select" title="Broadcast and Select" width="331" height="153" class="size-full wp-image-499" /><p class="wp-caption-text">Broadcast and Select</p></div>
<p>Doch wie funktioniert das? Obige Abbildung zeigt den schematischen Ablauf. Das optische Signal tritt auf der linken Seite ein und wird durch einen Splitter gleichm&auml;&szlig;ig auf zwei Pfade aufgeteilt. Der untere Pfad ist f&uuml;r den Drop-Kanal, die durch einstellbare Filter (<em>tunable filters</em>) ausgew&auml;hlt werden. Im anderen Pfad werden Kan&auml;le, die bereits &quot;gedropt&quot; wurden aus der Ausgabe des Switches ausgeschlossen. Das erledigt der sogenannte Wellenl&auml;ngenblocker (<em>wavelength blocker</em>, WB). Anschlie&szlig;end werden die Kan&auml;le durch einen anderen Kuppler f&uuml;r die Ausgabe zusammengef&uuml;hrt. Um vollst&auml;ndige Konfigurierbarkeit zu gew&auml;hrleisten, k&ouml;nnten die neuen Kan&auml;le durch einstellbare Laser eingef&uuml;gt werden. </p>
<p>Ein Grund warum Hersteller diese Architektur so bereitwillig aufgriffen ist der geringe Verlust beim Einf&uuml;gen neuer Wellenl&auml;ngen im Gegensatz zu herk&ouml;mmlichen Switch-Fabrics wie beispielsweise MEMS (<em>micro-electro-mechanical Switches</em>). Dieser Vorteil wird nur solange bestehen, bis andere Techniken verbessert werden und mit &auml;hnlichen, wenn nicht sogar besseren Werten aufwarten k&ouml;nnen. </p>
<p>Ein zweiter Grund k&ouml;nnte in der geringeren Anzahl ben&ouml;tigter Komponenten im Vergleich zu Alternativen liegen. Schlie&szlig;lich reduzieren das die Kosten weiter und erh&ouml;ht die Chancen auf dem Markt. </p>
<h3>Demux, Switch, Mux </h3>
<p>Eine weitaus traditionellere Architektur basiert auf Multiplexern und Schalungsgeflechten (switching fabrics). Alle eintreffenden Wellenl&auml;ngen m&uuml;ssen aufgesplittet (demultiplexing) werden, auf den entsprechenden Pfad geschaltet (switching) und anschlie&szlig;end weider kombiniert (multiplexing) werden. Die Funktionalit&auml;t entspricht also der eines einfachen optischen Standardswitches, wobei nur ein paar Extras auf Seiten des Netzwerkmanagements hinzugef&uuml;gt wurden. Der Vorgang wird in folgender Abbildung dargestellt. </p>
<div id="attachment_500" class="wp-caption aligncenter" style="width: 360px"><img src="/wp-content/uploads/2006/12/img2.png" alt="Demultiplexing, Switching, Multiplexing." title="Demultiplexing, Switching, Multiplexing." width="350" height="172" class="size-full wp-image-500" /><p class="wp-caption-text">Demultiplexing, Switching, Multiplexing.</p></div>
<p>Komponentenhersteller sind ein wichtiger Schl&uuml;ssel f&uuml;r die ROADM-Architekturen. Aus diesem Grund finden Sie nun im &uuml;brigen Teil des Artikels eine Auflistung der wichtigsten Lieferanten und Hersteller von Komponenten und Bauteilen, wie etwa Switching Fabrics, Wellenl&auml;ngenblocker oder einstellbare Filter. </p>
<h2>Hersteller von ROADM-Komponenten </h2>
<h3><a name="SECTION00051000000000000000">Alcatel SA (NYSE: ALA, Paris: CGEP:PA) </a></h3>
<ul>
<li><strong>Produktbezeichnung</strong>: nicht verf&uuml;gbar </li>
</ul>
<h3><a name="SECTION00052000000000000000">Ciena Corp. (Nasdaq: CIEN) </a></h3>
<ul>
<li><strong>Produktbezeichnung</strong>: Corestream Agility </li>
<li><strong>Produktinformationen</strong>:   <br />
    <tt><a href="http://www.ciena.com/products/corestream/soadm.htm">www.ciena.com</a></tt> </li>
</ul>
<h3><a name="SECTION00053000000000000000">Cisco Systems Inc. (Nasdaq: CSCO) </a></h3>
<ul>
<li><strong>Produktbezeichnung</strong>: ONS 15454 Multiservice Transport Platform </li>
<li><strong>Produktinformationen</strong>: <tt><a href="http://www.cisco.com/en/US/products/hw/optical/ps2006/ps5320/">www.cisco.com</a></tt> </li>
</ul>
<p>Cisco f&uuml;hrte ein ROADM-Feature bei seinen ONS 15454er bei der Supercomm Im Juni. Cisco&#8217;s ROADM verarbeitet 32 Wellenl&auml;ngen und erlaubt somit das Aufsschalten oder Ausgliedern bei jeder beliebigen Permutation. Es ist in zwei Teile gegliedert: eine Karte mit doppelter L&auml;nge f&uuml;r den Wellenl&auml;ngen-sensitiven Switch und einer Karte f&uuml;r den Demultiplexer. Angeblich ist stammt die Technologie nicht aus eigenem Hause, aber Cisco sagt nicht, wer der Entwicklungspartner ist.</p>
<h3><a name="SECTION00054000000000000000">Fujitsu Network Communications Inc. (FNC) </a></h3>
<ul>
<li><strong>Produktbezeichnung</strong>: Flashwave 7500 </li>
<li><strong>Produktinformationen</strong>: <tt><a href="http://www.fujitsu.com/us/">www.fujitsu.com</a></tt> </li>
</ul>
<p>Fujitsu hat mehrere ROADMs auf den Markt gebracht: erst k&uuml;rzlich ver&ouml;ffentlichten sie eine Erweiterung f&uuml;r den Flashware 7500 DWDM das es um ROADM-Funktionalit&auml;t erg&auml;nzt. Momentan bietet Fujitsu filterbasierte OADMs in D&uuml;nnfilmtechnologie an, die Teil ihrer Metro-DWDM-Produktpalette sind.</p>
<h3><a name="SECTION00055000000000000000">Marconi Corp. plc (Nasdaq: MRCIY, London: MONI) </a></h3>
<ul>
<li><strong>Produktbezeichnung</strong>: PMA32 </li>
<li><strong>Produktinformationen</strong>: <tt><a href="http://www.marconi.com/Home/customer_center/Products/Core/Optical%20Multiservice%20Core/PMA32">www.marconi.com</a></tt> </li>
</ul>
<p>Marconi hat 1998 mit dem PMA8 das erste ROADM-Produkt &uuml;berhaupt auf den Markt gebracht. Sein Nachfolger, PMA32, war das mit Abstand das erfolgreichste Produkt von Marconi, das gleich mehrere der Ger&auml;te an die British Telecom verkaufen konnte. Die ROADMs verwenden die Broadcast-and-Select-Architektur. Urspr&uuml;nglich kamen fl&uuml;ssigkristallbasierte Wellenl&auml;ngenblocker des Unternehmens Corning zum Einsatz, das die Produktion allerdings einstellte.</p>
<h3><a name="SECTION00056000000000000000">Meriton Networks Inc. </a></h3>
<ul>
<li><strong>Produktbezeichnung</strong>: 7200 Optical Add/Drop Switch (OADX) </li>
<li><strong>Produktinformationen</strong>: <tt><a href="http://www.meriton.com/">www.meriton.com</a></tt> </li>
</ul>
<p>Auf der Supercomm gab Meriton bekannt, da&szlig; von nun an alle Ger&auml;te der Serie 7200 OADX rein optisch konfigurierbar sein. Das Subsystem wird von Capella Photonics Inc. geliefert.</p>
<h3><a name="SECTION00057000000000000000">Movaz Networks Inc. </a></h3>
<ul>
<li><strong>Produktbezeichnung</strong>: RAYROADM </li>
<li><strong>Produktinformationen</strong>: Noch nicht auf Movaz&#8217;s Website vorhanden. </li>
</ul>
<p>Auch Movaz gab auf der Supercomm die Aufnahme von ROADM-Produkten in das Portfolio bekannt. Das RAYROADM getaufte Kind ist eine Metro-Box, die jede Wellenl&auml;nge und jede Kombination von bis zu 40 Wellenl&auml;ngen rekonfigurieren kann. Sie kann entweder als eigenst&auml;ndiges Produkt oder als Upgrade erworben werden. Desweiteren gab das Unternehmen bekannt, eine Partnerschaft mit Lucent Technologies und Motorola Inc. eingegangen zu sein.</p>
<h3><a name="SECTION00058000000000000000">Nortel Networks Ltd. (NYSE/Toronto: NT) </a></h3>
<ul>
<li><strong>Produktbezeichnung</strong>: Common Photonic Layer </li>
<li><strong>Produktinformationen</strong>: <tt><a href="http://www.nortelnetworks.com/products/01/cpl/index.html">www.nortelnetworks.com</a> </tt></li>
</ul>
<p>Nortel integriert die ROADM-Funktionalit&auml;t im Common Photonic Layer, einer DWDM-Plattform, die ebenfalls auf der Supercomm vorgestellt wurde. Weitere Informationen sind mir noch nicht bekannt.</p>
<h3><a name="SECTION00059000000000000000">OpVista Inc. </a></h3>
<ul>
<li><strong>Produktbezeichnung</strong>: MetroVista 100 and 2000. WaveMaster element management system. </li>
<li><strong>Produktinformationen</strong>: <tt><a href="http://www.opvista.com/products/index.htm">www.opvista.com</a></tt> </li>
</ul>
<p>OpVista taufte ihr Product MetroVista, das sich haupts&auml;chlich an Kabelnetzbetreiber richtet und bereits im May 2003 erstmalig vorgestellt wurde. Es setzt eine Technik ein, die jeden Einsatz optischer Switches &uuml;berfl&uuml;ssig macht, indem alle Wellenl&auml;ngen in alle Verteiler des Netzwerkes eingespeist werden. Der Empf&auml;nger an jedem Hub wird auf die jeweilige Wellenl&auml;nge feineingestellt; nat&uuml;rlich &uuml;ber remote.</p>
<h3><a name="SECTION000510000000000000000">Siemens AG (NYSE: SI, Frankfurt: SIE) </a></h3>
<ul>
<li><strong>Produktbezeichnung</strong>: Surpass HiT 7500 </li>
<li><strong>Produktinformationen</strong>: <tt><a href="http://www.siemens.com/index.jsp?sdc_p=t3cz3s4u0o1057523pSUnflmi1026310&amp;sdc_sid=19339336103&amp;">www.siemens.com</a></tt> </li>
</ul>
<h3><a name="SECTION000511000000000000000">Tropic Networks Inc. </a></h3>
<p>keine Infos verf&uuml;gbar. </p>
<h2>Hersteller von ROADM-Komponenten:</h2>
<h3><a name="SECTION00061000000000000000">Switches</a> </h3>
<p>Schl&uuml;sselkomponenten f&uuml;r Mux/SW/Demux-ROADMs sind optische Switches und Wellenl&auml;ngen-Demultiplexer. Einige Switching-Technolgien k&ouml;nnen in Multiplexing-Technologien integriert werden um vollst&auml;ndige ROADM-Subsysteme auf einem Chip zu entwickeln. </p>
<h4><a name="SECTION00061100000000000000">Kleine Switches (1&#215;2, 2&#215;2, etc.) </a></h4>
<ul>
<li>Accelink Technologies Co. Ltd. </li>
<li>AC Photonics Inc. </li>
<li>Agiltron Inc. </li>
<li>Alliance Fiber Optic Products Inc. </li>
<li>AOC Technologies Inc. </li>
<li>Civcom Inc. </li>
<li>DiCon Fiberoptics Inc. </li>
<li>DuPont Photonics Technologies LLC </li>
<li>JDS Uniphase Corp. (Nasdaq: JDSU, Toronto: JDU) </li>
<li>Oplink Communications Inc. (Nasdaq: OPLK) </li>
<li>SK Opto-Electronics Inc. (SKOE) </li>
<li>SpectraSwitch Inc. </li>
</ul>
<h4><a name="SECTION00061200000000000000">Matrix-Switches (8&#215;8 und gr&ouml;&szlig;er) </a></h4>
<ul>
<li>Advanced Optical MEMS Inc. (AOMEMS) </li>
<li>Calient Networks Inc. </li>
<li>Chromux Technologies Inc. </li>
<li>Continuum Photonics Inc. </li>
<li>DuPont Photonics Technologies LLC </li>
<li>Fujitsu Ltd. </li>
<li>Lynx Photonic Networks </li>
<li>Polatis Ltd. </li>
</ul>
<h3><a name="SECTION00062000000000000000">Rekonfigurierbare OADMs </a></h3>
<ul>
<li>Active Optical Networks, Inc. (Produkte geplant) </li>
<li>Alliance Fiber Optic Products Inc. (Nasdaq: AFOP) </li>
<li>Avanex Corp. (Nasdaq: AVNX) </li>
<li>Capella Photonics Inc. </li>
<li>CoAdna Photonics Inc. </li>
<li>DuPont Photonics Technologies LLC </li>
<li>LightConnect Inc. </li>
<li>NeoPhotonics Corp. </li>
</ul>
<h3><a name="SECTION00063000000000000000">ROADM-Komponentenhersteller </a></h3>
<p>Blocker und Filter Broadcast and Select erfordert Wellenl&auml;ngenblocker und einstellbare Filter. </p>
<h4><a name="SECTION00063100000000000000">Wellenl&auml;ngenblocker </a></h4>
<ul>
<li>Avanex Corp. (Nasdaq: AVNX) </li>
<li>Bookham Technology plc </li>
<li>Chromux Technologies Inc. </li>
<li>CoAdna Photonics Inc. </li>
<li>JDS Uniphase Corp. </li>
<li>LightConnect Inc. </li>
<li>Polychromix Inc. </li>
<li>Xtellus Inc. </li>
</ul>
<h4><a name="SECTION00063200000000000000">Einstellbare (tunable) Filter </a></h4>
<ul>
<li>Aegis Semiconductor Inc. </li>
<li>Auxora Inc. </li>
<li>Avanex Corp. </li>
<li>Axsun Technologies Inc. </li>
<li>Chromux Technologies Inc. (partnered with NP Photonics Inc.) </li>
<li>DiCon Fiberoptics Inc. </li>
<li>Engana Pty Ltd. </li>
<li>Iolon Inc. </li>
<li>JDS Uniphase Corp. </li>
<li>Lambda Crossing Ltd. </li>
<li>Little Optics Inc. </li>
<li>Micron Optics Inc. </li>
<li>Ondax Inc. </li>
<li>Oplink Communications Inc. </li>
<li>Optoplex Corp. </li>
<li>OZ Optics Ltd. </li>
<li>Primanex Corp. </li>
<li>Santec Corp.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://graegert.de/artikel/roadms-wer-hat-was-fur-wen/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Grundlagen optischer Übertragungssysteme</title>
		<link>http://graegert.de/artikel/grundlagen-optischer-ubertragungssysteme</link>
		<comments>http://graegert.de/artikel/grundlagen-optischer-ubertragungssysteme#comments</comments>
		<pubDate>Wed, 15 Mar 2006 07:49:52 +0000</pubDate>
		<dc:creator>Steve Graegert</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[netzwerktechnik]]></category>
		<category><![CDATA[switching]]></category>

		<guid isPermaLink="false">http://localhost/wordpress/?p=479</guid>
		<description><![CDATA[Dieser Artikel beleuchtet die wichtigsten Grundlagen optischen Switchings und die Funktionsweise der eingesetzten Ger&#228;te, die unterschiedlichen Typen, wie sie sich von elektronischen Switches unterscheiden, welche Funktionen sie &#252;bernehmen, wie sie verwaltet werden und was sie k&#246;nnen und was nicht. Anschlie&#223;end gehe ich auf die optischen Schaltungsgeflechte (switching fabrics) ein. Genauer gesagt, zeige ich, welche Gr&#246;&#223;en [...]]]></description>
			<content:encoded><![CDATA[<p>Dieser Artikel beleuchtet die wichtigsten Grundlagen optischen Switchings und die Funktionsweise der eingesetzten Ger&auml;te, die unterschiedlichen Typen, wie sie sich von elektronischen Switches unterscheiden, welche Funktionen sie &uuml;bernehmen, wie sie verwaltet werden und was sie k&ouml;nnen und was nicht. Anschlie&szlig;end gehe ich auf die optischen Schaltungsgeflechte (<em>switching fabrics</em>) ein. Genauer gesagt, zeige ich, welche Gr&ouml;&szlig;en und Typen von Switches welche Methoden f&uuml;r das Routing einsetzen.</p>
<p><span id="more-479"></span></p>
<h2>Grundlagen </h2>
<p>So ein Switch hat einen ziemlich einfachen Job. Er nimmt den eintreffenden Verkehr vom Eingangsport entgegen und leitet ihn &uuml;ber eine Geflecht oder eine Backplane weiter zum Ausgangsport (folgende Abbildung). Elektronische Switches, die Pakete mit variablen L&auml;ngen, Zellen mit festen L&auml;ngen und synchrone Zeitschlitze (<em>time slots</em>) behandeln k&ouml;nnen, existieren bereits. </p>
<div id="attachment_482" class="wp-caption aligncenter" style="width: 284px"><img src="/wp-content/uploads/2006/03/img1.png" alt="Arbeitsweise eines elektronischen Switches" title="Arbeitsweise eines elektronischen Switches" width="274" height="217" class="size-full wp-image-482" /><p class="wp-caption-text">Arbeitsweise eines elektronischen Switches</p></div>
<p>Ein optischer Switch auf der anderen Seite arbeitet mit Licht. Er bef&ouml;rdert eine Wellenl&auml;nge oder einen Bereich von Wellenl&auml;ngen vom Eingangsport zum Ausgangsport (nächste Abbildung). </p>
<div id="attachment_483" class="wp-caption aligncenter" style="width: 284px"><img src="/wp-content/uploads/2006/03/img2.png" alt="Arbeitsweise eines optischen Switches" title="Arbeitsweise eines optischen Switches" width="274" height="217" class="size-full wp-image-483" /><p class="wp-caption-text">Arbeitsweise eines optischen Switches</p></div>
<p>Damit die Switches wissen, wie sie die Entscheidungen, welches Paket, welche Zelle oder welche Wellenl&auml;nge(n) wohin weiterzuleiten ist, treffen k&ouml;nnen, bedienen sie sich unterschiedlicher Konzepte. Elektronische Switches entscheiden aufgrund der Information, die in den zu bef&ouml;rdernden Paketen enthalten ist (folgende Abbildung). </p>
<div id="attachment_485" class="wp-caption aligncenter" style="width: 454px"><img src="/wp-content/uploads/2006/03/img3.png" alt="Elektronische Switches lesen die Paketinformationen aus" title="Elektronische Switches lesen die Paketinformationen aus" width="444" height="108" class="size-full wp-image-485" /><p class="wp-caption-text">Elektronische Switches lesen die Paketinformationen aus</p></div>
<p>Ein Ethernet-Switch lie&szlig;t die Ziel-MAC-Adresse aus und wei&szlig; somit, auf welchem Port das jeweilige Paket weiterzuleiten ist. Ein IP-Switch oder -Router benutzt dazu die IP-Adresse des Empf&auml;ngers. Ganz &auml;hnlich geht auch ein MPLS-Router (<em>Multi-Protocol Label Switching</em>) oder -Switch vor, denn er lie&szlig;t das &auml;u&szlig;erste Label des Pakets aus, nachdem ein Label Switch Path (LSP) innerhalb des Netzwerkes etabliert wurde. </p>
<p>Ein optischer Switch funktioniert wie ein analoges Ger&auml;t. Es erkennt keine Bits und schert sich auch nicht um Pakete oder Frames. Die einzige Grundlage zur Entscheidungsfindung ist die Wellenl&auml;nge des eintreffenden Lichts (siehe vorherige Abbildung). </p>
<div id="attachment_486" class="wp-caption aligncenter" style="width: 295px"><img src="/wp-content/uploads/2006/03/img4.png" alt="Optische Switches nutzen die Wellenlängen zur Weiterleitung" title="Optische Switches nutzen die Wellenlängen zur Weiterleitung" width="285" height="134" class="size-full wp-image-486" /><p class="wp-caption-text">Optische Switches nutzen die Wellenlängen zur Weiterleitung</p></div>
<p>Da die meisten optischen Switches in DWDM-Installationen (<em>Dense Wave Division Multiplexing</em>) eingesetzt werden, m&uuml;ssen wir uns &uuml;berlegen, wie die einzelnen Wellenl&auml;ngen aufgespaltet werden k&ouml;nnen, um anhand einer Wellenl&auml;nge eine Entscheidung treffen zu k&ouml;nnen. Aus der vorherigen Abbildung geht hervor, wie die eintreffende Wellenl&auml;nge von einem Detektor erkannt und in ein elektronisches Signal (also in Elektronen) umgewandelt wird, um hinterher wieder ein Paket, einen Rahmen, eine Zelle oder einen Zeitschlitz zu formen. </p>
<p>Die Empf&auml;nger sind breitbandig. Das bedeutet, wenn zwei oder mehr Wellenl&auml;ngen auf einen spezifischen Empf&auml;nger treffen, wird das resultierende Signal eine verst&uuml;mmelte Kombination aller Wellenl&auml;ngen aller Kan&auml;le sein. </p>
<h2>OEO oder OOO? </h2>
<p>In den Monaten unmittelbar vor dem vermeintlichen technologischen Zusammenbruch des Jahres 2000, konnte das Hinzuf&uuml;gen des Wortes &quot;optisch&quot; zu den Produktnamen daf&uuml;r sorgen, da&szlig; der Aktienwert des Unternehmens beachtliche Steigerungen verzeichnete. Dadurch erfuhren auch die Marketing-Abteilungen einen neuen H&ouml;henflug und warteten mit sehr kreativen Bezeichnungen von Technologien und Produkten auf. </p>
<p>Eine der am&uuml;santesten Versuche, ein bestimmtes Thema zu pushen, war der Begriff &quot;OEO&quot;, der f&uuml;r <em>Optical-Electrical-Optical</em> steht. Bei dieser Art von Switch traten die Eingangssignale als optische Signale (Photonen) auf, wurden durch eine interne Logik in elektrische Signale umgewandelt, um &uuml;ber die interne elektrische Backplane an den Ausgangsport geleitet zu werden, wo sie vor der Ausgabe erneut in optische Signale konvertiert wurden. </p>
<p>Wenn Ihnen diese Technik bekannt vorkommt, m&uuml;ssen Sie nicht &uuml;berrascht sein, denn genau diese Vorgehensweise liegt FDDI, SONET/SDH-Crossconnects, ATM, Ethernet-Switches und Routern mit ATM/FDDI/POS-Schnittstellen zu Grunde und haben sich nun seit mehr als eine Dekade bew&auml;hrt. Dennoch wurde der Term OEO den &quot;neuen&quot; SONET/SDH-Ger&auml;ten mit auf den Weg gegeben. </p>
<p>Der Vorteil von OEO war die wohl erprobte Technologie. Wir erhalten als Bonus quasi eine vollst&auml;ndige Digitale Regenerierung des Signals (<em>Reshaping</em>, <em>Retiming</em> und <em>Synchronisierung</em>) durch die optisch/elektrische Konvertierung. Die Kehrseite ist, da&szlig; die Elektronik nicht dauerhaft mit der wachsenden Kapazit&auml;t optischer Mechanismen Schritt halten kann. </p>
<p>Als digitale Ger&auml;te sind OEO-Switches au&szlig;erdem auch abh&auml;ngig von der Bitrate und ben&ouml;tigen einen passenden Protokollstapel (<em>protocol stack</em>), damit bestimmte Protokolle &uuml;berhaupt geroutet werden k&ouml;nnen. Beispiele sind sicherlich IP in POS (<em>Packet over SONET</em>), ESCON (IBM&#8217;s <em>Enterprise System Connection Protocol</em>) oder Fibre Channel. </p>
<p>Die Abk&uuml;rzung OOO ist aus einer relativ jungen Entwicklung hervorgegangen. Dabei handelt es sich um ein vollst&auml;ndig analoges Ger&auml;t, bei dem beide E/A-Module und die Backplane optisch sind. Der gr&ouml;&szlig;te Vorteil dieser Technik ist die bessere Skalierbarkeit gegen&uuml;ber OEO-Ger&auml;ten. Tats&auml;chlich sind solche <em>all-optical</em> Switches nicht bitratenabh&auml;ngig und vollst&auml;ndig protokolltransparent. </p>
<p>Dennoch m&uuml;ssen wir beachten, da&szlig; die meisten Technologien vollst&auml;ndig optischer Switches sich noch immer entwickeln und momentan nur in einer &quot;sub-optimalen&quot; Form vorliegen. Aktuell haben wir &quot;nur&quot; eine Granularit&auml;t auf Ebene von Wellenl&auml;ngen (<em>Lambda-Level Granularity</em>) und k&ouml;nnen nicht weiter differenzieren. Als reines analoges Ger&auml;t haben wir keinen &Uuml;berblick &uuml;ber die Fehlerbitrate (<em>Bit Error Rate</em>, BER), was Monitoring und Festlegung auf Service-Level Agreements zu einer Herausforderung macht. Au&szlig;erdem m&uuml;ssen wir Verst&auml;rkung im Gegensatz zur Regenerierung zur Erneuerung bzw. Auffrischung der Signal einsetzen. Das mag vielleicht aus Kostengr&uuml;nden ein Vorteil sein, doch wirft es v&ouml;llig neue Aspekte im Netzwerkdesign auf. </p>
<p>Um die Verwirrung noch weiter auf die Spitze zu treiben, brachten findige Experten den Begriff OEO-O-OEO ins Spiel. Das ist ein interessanter Kompromiss aus den beiden anderen Techniken. Anstatt eine elektronische Backplane zu verwenden, findet die elektronische Konvertierung innerhalb der E/A-Module statt. Damit wird etwas Druck von dem Argument Skalierung genommen, da die Kapazit&auml;t eines einzelnen E/A-Moduls immer geringer sein wird, als die Gesamtkapazit&auml;t einer optischen Backplane. </p>
<p>Durch die Verlagerung der elektronischen Stufe in die E/A-Module erhalten wir eine 3R-Regenerierung (<em>Reshaping</em>, <em>Retiming</em> und <em>Resynchronisierung</em>) und die F&auml;higkeit, Wellenl&auml;ngen&uuml;bersetzungen vorzunehmen. Somit steht auch der Erfassung einer BER nichts mehr im Wege und wir k&ouml;nnen au&szlig;erdem ein OEO- oder ein OOO-Modul auf Portbasis einsetzen, je nachdem, was unser Netzwerk erfordert. </p>
<p>Nachteilig wirkt sich allerdings die steigende Komplexit&auml;t dieses Designs gegen&uuml;ber eines OEO- oder OOO-Switches aus. Desweiteren sind die elektronischen Stufen in den E/A-Modulen isoliert und erschweren damit das Multiplexing und <em>Grooming</em> (im Sinne von Verwalten). </p>
<h2>Optisches Routing mit GMPLS </h2>
<p>Die IETF (<em>Internet Engineering Task Force</em>) arbeitete bis etwa Ende Juni 2004 an einem Standard, der eine vereinheitlichte MPLS-Architektur darstellen sollte. Das ganze l&auml;uft auch heute noch unter der Bezeichnung <em>Generalized MPLS</em>&quot; (GMPLS). </p>
<p>Multi-Protocol Label Switching stellt einen einfachen Weg dar, logische Verbindungen &uuml;ber paketbasierte Netzwerke aufzusetzen. GMPLS wird die in MPLS definierten Kontrollprotokolle ausweiten, so da&szlig; sie zur dynamischen Kontrolle der SONET/SDH- und DWDM-Ausr&uuml;stung eingesetzt werden k&ouml;nnen. </p>
<p>Der GMPLS-Draft definiert eine neue Taxanomie, zur Etablierung einer Vereinheitlichung der F&auml;higkeiten eines &quot;&auml;lteren&quot; SONET/SDH- und DWDM-Switches. Der Draft spricht von vier Interface-Varianten: PSC, TDM, LSC und FSC. </p>
<h3>Packet Switch Capable Interfaces </h3>
<p>Ein PSC-Interface kann Bits erkennen und damit auch Pakete und Zellen in einem Bitstrom. Der Switch kann daher Entscheidungen zur Weiterleitung basierend auf dem Inhalt der Adressfelder t&auml;tigen, wie zuvor im Abschnitt <a href="#sec:Grundlagen">1</a> &quot;Grundlagen&quot; beschrieben. </p>
<p>Eine wichtige Annahme ist, da&szlig; diese Art der Schnittstelle au&szlig;erdem in der Lage ist, Kontrollnachrichten (wie etwa Routing und Signalisierungsnachrichten) zu verarbeiten, die quasi In-Band mit den Daten &uuml;bertragen werden. Aus diesem Grund werden die meisten PSC-Schnittstellen in konventionellen Ethernet-, IP- und ATM-Switches zu finden sein. </p>
<h3>Time-Division Multiplexing Interfaces </h3>
<p>TDM-Schnittstellen erkennen ebenso wie PSC-Interfaces Bits. Doch in diesem Fall basiert die Erkennung auf einer wiederkehrenden, regelm&auml;&szlig;igen Rahmenstruktur, die in einem synchronen Bitstrom vorhanden ist. Somit k&ouml;nnen TDM-Switches Daten weiterleiten oder andere Operationen auf Basis der aktuellen Position im Zeitschlitz (<em>time slot</em>) ausf&uuml;hren. </p>
<p>Wie PSC-Schnittstellen, ist ein TDM-Interface in der Lage, Routing- und Signalisierungsnachrichten (<em>control plane messages</em>) zu verarbeiten. Beispiele f&uuml;r TDM-Anwendungen sind SONET/SDH-ADMs, Digital Crossconnects (DCX) oder Optical Crossconnects (OXC). </p>
<h3>Lambda-Switch Capable Interfaces </h3>
<p>Eine LSC-Schnittstelle arbeitet vollst&auml;ndig analog. Diese Schnittstellen sind naturgem&auml;&szlig; nicht in der Lage, Bits oder andere hochwertigere Strukturen, wie etwa Rahmen oder Pakete zu erkennen. Die Weiterleitung geschieht durch das Aufschalten eines Lichtstromes auf Basis seiner Wellenl&auml;nge oder eines Bereichs von Wellenl&auml;ngen (B&auml;nder bestehend aus zwei oder mehr Kan&auml;len). </p>
<p>Im Gegensatz zu den beiden vorangegangenen Varianten sind vollst&auml;ndig analoge Ger&auml;te nicht in der Lage, Control Plane Messages auszuwerten. Beispiele f&uuml;r den Einsatz von LSC-Schnittstellen sind vollst&auml;ndig optische ADMs oder optische Crossconnects (OXC). </p>
<h3>Fiber Switch Capable Interfaces </h3>
<p>FSC-Schnittstellen bilden die vierte Gruppe der GMPLS-Schnittstellen. Auch diese Variante erkennt keine Bits oder gar Rahmen oder Pakete. Au&szlig;erdem ist es nicht f&uuml;r die Auswertung von Wellenl&auml;ngen oder Wellenb&auml;ndern ausgelegt. Die Daten werden zu den Ports auf Basis ihrer tats&auml;chlichen physikalischen Position in der realen Welt weitergeleitet. Schlie&szlig;lich, wie sollte es auch anders sein, sind FSC-Schnittstellen nicht in der Lage Control Plane Messages zu verarbeiten. </p>
<h3>Schlussfolgerung </h3>
<p>Verbindungen in einem GMPLS-basierten Netzwerk werden als LSPs (<em>Label Switched Paths</em>) bezeichnet. Dieser Begriff schlie&szlig;t folgende Fakten ein: </p>
<ul>
<li>Virtuelle Kreise (<em>circuits</em>) oder Pfade in paket-/zellgeschalteten Netzwerken k&ouml;nnen LSPs sein. </li>
<li>Kreise (<em>circuits</em>) oder Kan&auml;le in SONET/SDH-Netzwerken. </li>
<li>Ketten von Wellenl&auml;ngen, werden in DWDM-Netzen als <em>optical channel trails</em> bezeichnet. </li>
<li>Ketten von Fibern, die als Fiber Paths im PHY-Layer von Telekommunikationsnetzwerken vorliegen. </li>
</ul>
<p>W&auml;hrend eine Vereinfachung der Terminologie vorteilhaft ist, so k&ouml;nnen wir die Tatsache nicht verbergen, das ein Pfad von einem LSC- zu einem PSC-Interface nicht g&uuml;ltig ist. Die Definition der IETF sieht vor, da&szlig; ein LSP in dem Interfacetyp enden mu&szlig;, von dem er gestartet ist. </p>
<h2>Anwendungen vollst&auml;ndig optischer Switches</h2>
<p>Die Hauptanwendungsbereiche von vollst&auml;ndig optischen Ger&auml;ten liegt in der Anbindung von optischen Kernnetzwerken an beispielsweise Metro-Networks oder der Absicherung von Verbindung innerhalb oder zwischen zwei optische Netzwerken. F&uuml;r diese Aufgaben stehen uns unterschiedliche Ger&auml;te zur Verf&uuml;gung. </p>
<ul>
<li><strong>Protection Switches:</strong> weit verbreitet. Normalerweise als 1&#215;2-Einheit verf&uuml;gbar. Werden als Sicherung gegen den Totalausfall einzelner Glasfaserleitungen, wie etwa der Bruch einer solchen oder dem Ausfall eines Verbinders. </li>
<li><strong>Optische Add/Drop Multiplexer (OADMs):</strong> sie fungieren meist als Zugangspunkte von optischen Netzwerken. Hier werden einzelne Wellenl&auml;ngen aufgeschaltet oder umgeleitet, wobei das Signal sowohl von einer PSC- oder TDM-Schnittstelle innerhalb des OADMs stammen kann. </li>
<li><strong>Optische Crossconnects (OXCs):</strong> dienen als Kreuzungen optischer Netzwerke. Sie nehmen im Wesentlichen die Aufgaben von Routern oder ATM-Switches an. </li>
</ul>
<p>In naher Zukunft k&ouml;nnten auch noch folgende Varianten das Tageslicht erblicken: </p>
<ul>
<li><strong>Optical Burst Switches:</strong> erlauben Telekommunikationsnetzbetreiber (<em>carrier</em>) einzelne Ketten von Wellenl&auml;ngen &uuml;ber einzelne Netzwerke hinaus zu etablieren, so wie es OXCs bereits heute anbieten. </li>
<li><strong>Optische Packet Switches:</strong> Verarbeiten Pakete auf optischer Basis auf die gleiche Weise, wie es heutzutage die elektronischen Switches tun. </li>
</ul>
<h2>Herausforderungen </h2>
<p>Optisches Switching ruft viele neue Herausforderungen auf den Plan, doch zwei von ihnen sind wirklich schwer l&ouml;sbar: Lesen und Verarbeiten der Bits bei extrem hohen Geschwindigkeiten und optische Pakete zu Puffern um sie Multiplexen (Aufschalten auf andere Kan&auml;le) zu k&ouml;nnen. </p>
<h3>Lesen und verarbeiten der Informationen </h3>
<p>Mit traditionellen elektronischen Switches, wie beispielsweise IP-Routern oder ATM-Switches, agiert das Ger&auml;t im so genannten <em>Store-and-Forward-Modus</em>. Das Verfahren wird anhand folgender Abbildung illustriert (folgende Abbildung). </p>
<div id="attachment_487" class="wp-caption aligncenter" style="width: 333px"><img src="/wp-content/uploads/2006/03/img5.png" alt="Store and Forward elektronischer Switches" title="Store and Forward elektronischer Switches" width="323" height="178" class="size-full wp-image-487" /><p class="wp-caption-text">Store and Forward elektronischer Switches</p></div>
<p>Wenn Daten am Eingangsinterface eintreffen (1), wird die gesamte Dateneinheit zun&auml;chst in einem <em>Input Buffer</em> zwischengespeichert (2). Noch in diesem Buffer wird die Adresse oder das Label ausgewertet (3), so das der Router oder Switch eine Weiterleitung zum Ausgangsport vornehmen kann (4). </p>
<p>Die schnellsten heute verf&uuml;gbaren Ger&auml;te arbeiten mit bis zu 10 Gbps, auch wenn bereits seit geraumer Zeit 40-Gbps-Schnittstellen f&uuml;r SONET/SDH verf&uuml;gbar sind. Dennoch sind 10 Gbps das derzeitige Limit, da die Prozessoren die Routing-Informationen nicht schneller verarbeiten k&ouml;nnen. </p>
<p>Die Entwicklung zum vollst&auml;ndig optischen Switchings geht mit der &Uuml;berwindung dieser Grenzen einher. Doch optische Switches ben&ouml;tigen noch immer die F&auml;higkeit, Lambda-Pfade durch das Netzwerk aufzusetzen, was die Notwendigkeit, Routing- und Signalisierungsnachrichten zu verarbeiten, einschlie&szlig;t. </p>
<h3>Buffering optischer Pakete </h3>
<p>In elektronischen Switches ist die Situation allt&auml;glich: eine Dateneinheit erreicht den Eingangsport und mu&szlig; sich in die Reihe bereits auf Verarbeitung wartender Pakete einreihen. Gro&szlig;e Zwischenspeicher vereinfachen die Aufl&ouml;sung solcher Engp&auml;sse und erlauben <em>statistisches Multiplexing</em> (d.h. Verbindungen werden nach Wahrscheinlichkeit des tats&auml;chlichen Nutzens hergestellt) und die Kapazit&auml;ts&uuml;berbuchung (z.B. wenn mehrere Dateneinheiten gleichzeitig an verschiedenen Ports eintreffen, aber den gleichen Ausgangsport passieren m&uuml;ssen). </p>
<p>Bei ATM-Switches ist der Mechanismus sogar noch ausgefeilter. Diese Ger&auml;te verf&uuml;gen &uuml;ber <em>intelligente Output Buffer</em>, die es ihnen erlauben, unterschiedliche Warteschlangen (<em>queues</em>) pro Verbindung zu verwalten. Somit k&ouml;nnen diese Warteschlangen unterschiedlich abgearbeitet werden, je nach garantierter Bandbreite, Priorit&auml;t oder anderer Kriterien. Aus diesem Grund sind ATM-Switches die einzigen ihrer Art, die ein netzwerkweites QoS-Schema etablieren k&ouml;nnen. </p>
<p>Die Kernfrage in Sachen optischen Switchings ist nun: wie speichere ich Photonen zwischen? Mal abgesehen von Laborexperimenten, bei denen einzelne Photonen mit Hilfe fl&uuml;ssigen Sauerstoffs &quot;eingefroren&quot; wurden, besteht die einzig praktikable L&ouml;sung in der Verwendung einer Glasfaserwarteschleife (<em>Fiber Delay Line</em>). Da sich Photonen zwar schnell aber mit einer begrenzten Geschwindigkeit in dem Silikatglas fortbewegen (ungef&auml;hr mit 200.000 km/s), sollte es doch m&ouml;glich sein, eine bestimmte Anzahl von Photonen f&uuml;r einen ausreichend langen Zeitraum in dieser Warteschleife zu halten (vorausgesetzt nat&uuml;rlich, diese Schleife ist selbst auch lang genug). Eine kurze &Uuml;berlegung sollte uns einen &Uuml;berblick &uuml;ber die zugrunde liegenden Zeiten f&uuml;r solche Operationen geben. Ein Ethernet-Rahmen ist im Schnitt 10 Kb lang (manchmal l&auml;nger, manchmal k&uuml;rzer, 10 Kb rechnet sich aber recht gut). Wenn wir einen Rahmen mit 10 Gbps transportieren, sollte dieser Rahmen also etwa 200 Meter Glasfaser f&uuml;r sich beanspruchen. Bei 40 Gbps sind es sogar nur 50 Meter. Das Prinzip der Fiber Delay Lines ist eine direkte Analogie zum <em>Delay Line Memory</em> der ersten Computergenerationen und bringen leider auch die gleichen Nachteile mit. Sobald ein Paket in diese Warteschleife eingespeist wurde, m&uuml;ssen wir genau so lange warten, bis es wieder austritt. Wir haben es also nicht mit einer zuf&auml;lligen Zugriffsmethode zu tun. Zwar k&ouml;nnen die Warteschlangen mit Hilfe hierarchischer B&auml;ume und schnellen Switchingelementen aufgebaut werden um eine inkrementelle Verz&ouml;gerung zu etablieren, doch ist diese Technik extrem komplex und erfordert einen geh&ouml;rigen hardware- und softwaretechnischen Mehraufwand f&uuml;r jede Warteschleife. </p>
<h2>Lambda-Switching </h2>
<h3>Manual Wavelength Provisioning</h3>
<p>Die folgende Abbildung zeigt ein stark vereinfachtes Lambda-Netzwerk aus heutiger Zeit. </p>
<div id="attachment_488" class="wp-caption aligncenter" style="width: 399px"><img src="/wp-content/uploads/2006/03/img6.png" alt="Manual Wavelength Provisioning" title="Manual Wavelength Provisioning" width="389" height="154" class="size-full wp-image-488" /><p class="wp-caption-text">Manual Wavelength Provisioning</p></div>
<p>Ziel ist die Etablierung eines Wellenl&auml;ngenpfades von einem MPLS-LSR (<em>Label Switch Router</em>) zum anderen. An jedem der nummerierten Punkte mu&szlig; ein Operator (also ein menschliches Wesen) einen <em>Lambda-Pfad</em> zwischen den beiden angrenzenden Ger&auml;ten einrichten. Dazu bedient er sich einer <em>Network Management Station</em> (NMS). Nachdem alle Ger&auml;te eines Pfades konfiguriert wurden, verf&uuml;gen wir &uuml;ber einen vollst&auml;ndigen Pfad und die LSRs k&ouml;nnen ihre Arbeit aufnehmen und Verbindungen zueinander herstellen. </p>
<p>Diese Art der Bereitstellung bietet dem Betreiber eines solchen Netzwerkes volle Kontrolle &uuml;ber seine Netzwerkresourcen, doch erfordert sie einen enormen Aufwand in der Wartung und &Uuml;berwachung, denn auch Backup-Pfade m&uuml;ssen f&uuml;r jeden erdenklichen Ausfallpunkt eingerichtet werden. Normalerweise wird f&uuml;r diese Zwecke ein Offline-Paket &uuml;ber den Pfad geschickt, um die Pfade neu zu berechnen und zu optimieren. Dennoch ist es immer der Operator, der die &Auml;nderungen vornehmen mu&szlig;. </p>
<p>Es wurden eine Menge Versuche unternommen, die Konfigurationsprozesse zu automatisieren. Die einfachste M&ouml;glichkeit besteht im Einsatz eines 1&#215;2 Protection Switches. Indem ein Signalerkennungskreis in den Switch integriert wird, kann der Failover bei Ausfall der Hauptleitung automatisch geschehen. Ausgefeiltere Designs sehen den Einsatz einer Monitoreinheit vor, die mit einem oder mehreren Protection Switches verbunden ist, um die Bitfehlerraten (<em>Bit Error Rates</em>) aufzuzeichnen und bei Bedarf auf den sekund&auml;ren Pfad auszuweichen. </p>
<p>Im Gegensatz zu den Herausforderungen aus dem vorherigen Abschnitt &quot;Herausforderungen&quot; treten diese Probleme beim Lamda-Switching nicht auf, da wir mit den Wellenl&auml;ngen arbeiten und quasi die Photonen selbst Weiterleiten und keine Interpretation (Auslesen von Adressinformationen, etc.) der Daten vornehmen. Das Statistische Multiplexing findet hier keine Anwendung, da sobald eine Wellenl&auml;nge eingerichtet wurde, sie exklusiv f&uuml;r einen Eingabestrom genutzt wird und damit kein statistisches Multiplexing eingerichtet werden kann. </p>
<h3>Automatische Wellenl&auml;ngenbereitstellung (<em>Automatic Wavelength Provisioning</em>) </h3>
<p>Die manuelle Einrichtung von Pfaden ist nicht gerade fortschrittlich und tr&auml;gt der schnellen Entwicklung der Netzwerke Rechnung. Die Industrie hat daher ein Verfahren zur dynamischen Konfiguration von Lambda-Pfaden entwickelt, bei dem ein generalisiertes MPLS-Protokoll (GMPLS) zum Einsatz kommt. In einem solchen GMPLS-Netzwerk verbinden sich die elektronischen Ger&auml;te &uuml;ber eine optische Benutzernetzwerkschnittstelle (O-UNI, optical User Network Interface) miteinander. Die Kontrollinformationen, welche In-Band &uuml;bertragen werden, werden durch das O-UNI geleitet (folgende Abbildung). </p>
<div id="attachment_489" class="wp-caption aligncenter" style="width: 439px"><img src="/wp-content/uploads/2006/03/img7.png" alt="Automatic Wavelength Provisioning" title="Automatic Wavelength Provisioning" width="429" height="169" class="size-full wp-image-489" /><p class="wp-caption-text">Automatic Wavelength Provisioning</p></div>
<p>Innerhalb der optischen Abschnitte sind nur LSC-Switches enthalten und daher nicht in der Lage, Control Plane Messages zu verarbeiten. Die erste L&ouml;sung dieses Problems liegt in der Verwendung von Out-of-Band-Signalen zur Verbindung der LSC-Ger&auml;te, normalerweise &uuml;ber Fast Ethernet auf dem PHY-Layer. </p>
<p>In einem GMPLS-Netzwerk brauchen wir uns keine Gedanken &uuml;ber die Auswertung er Bits machen denn wie verwenden f&uuml;r die Control Planes Out-of-Band-Signale. Desweiteren m&uuml;ssen wir auch nicht auf das Buffering achten, denn die Wellenl&auml;ngen werden nicht statistisch aufgeschaltet, wenn sie erst einmal etabliert wurden. </p>
<p>Mit Lambda-Switching wird die Wellenl&auml;nge als einzige Information zur Weiterleitung der Str&ouml;me verwendet. Das bedeutet, da&szlig; die Wellenl&auml;nge irgendwie gemessen werden mu&szlig;. Wenn wir also die Photonen eines gewissen optischen Stromes an irgendeinem Punkt in elektronische Signale umwandeln wollen, m&uuml;ssen wir den betreffenden Strom isolieren, denn alle heute eingesetzten Receiver sind Breitbandempf&auml;nger. Die meisten Verfahren zu Wellenl&auml;ngenseparation basieren auf den unterschiedlichen Geschwindigkeiten, mit denen die jeweiligen Wellenl&auml;ngen das Medium durchwandern. Diese Eigenschaft erlaubt uns, verschiedene Techniken zur spatialen Wellenl&auml;ngenseparation anzuwenden. Beispielsweise k&ouml;nnen wir die Separation, die durch den Winkel beschrieben wird, mit Hilfe eine sog. <em>Refracting Devices</em> vorhersagen, wenn wir die Wellenl&auml;nge eines bestimmten Kanals kennen, sobald er in das Netzwerk eingespeist wird. Ger&auml;te mit diesen F&auml;higkeiten setzen dazu Prismen, Filter und Gitter ein. Diese Bauteile sind naturgem&auml;&szlig; statisch und bed&uuml;rfen eines Eingriffs durch einen Fachmann, der sie auf neue Wellenl&auml;ngen justiert. </p>
<h2>Optical Burst Switching </h2>
<p>Schnell wurde eine Schwachstelle des Lamdba-Switching ausgemacht. Wurde eine Wellenl&auml;nge erst einmal zugewiesen, war sie exklusiv belegt. Kommt es also nicht zu einer dauerhaften 100-prozentigen Auslastung der Kapazit&auml;t durch den Besitzer/Nutzer, so wird ein gro&szlig;er Teil verschwendet. Ganz klar eine ineffiziente Nutzung des Netzwerkes. </p>
<p>Eine L&ouml;sung des Problems liegt in der Anforderung einer Wellenl&auml;nge f&uuml;r die Dauer der Nutzung, genannt: <em>Optical Burst Switching</em> (OBS). Das wurde fr&uuml;her als gro&szlig;e Herausforderung betrachtet, da, verglichen mit der Geschwindigkeit der &Uuml;bertragung, der Auf- und Abbau einer Verbindung ein recht langwieriger Prozess ist. Das liegt daran, da&szlig; in traditionellen &Uuml;bertragungssystemen wie ATM oder X.25 stets ein Mehrwege-Handshake f&uuml;r den Auf- und Abbau von Verbindungen n&ouml;tig war. &Uuml;bertr&auml;gt man diese Herangehensweise auf das Optical Burst Switching, wird schnell klar, warum das kein vern&uuml;nftiger Ansatz ist. </p>
<p>Aus diesem Grund wurde ein Mechanismus entwickelt, der momentan als die optimale L&ouml;sung dieses Problems angesehen wird. Wichtig ist dabei, da&szlig; es keine explizite Best&auml;tigung des Verbindungsaufbaus gibt, bevor Daten &uuml;bertragen werden. Bisher ist dieses Verfahren nur simuliert worden und es gibt noch keine verl&auml;sslichen Aussagen &uuml;ber die Auswirkung auf die Netzwerkleistung, wenn ein solches unzuverl&auml;ssiges Verfahren zum Einsatz kommt. </p>
<p>In einem Lambda-Switch, welcher auch als LSC-Interface mit GMPLS Control Plane beschrieben werden kann, ist das Ziel, die Zeit f&uuml;r eine Etablierung eines optischen Pfads von Wochen auf Minuten reduzieren. Ist der Pfad bereitgestellt worden, bleibt er meist f&uuml;r Monate oder gar Jahre aktiv. In diesen Zeitrahmen ist es durchaus akzeptabel, traditionelle, verl&auml;ssliche Signalisierungsmechanismen zu verwenden, beispielsweise RVSP (<em>Resource Reservation Protocol</em>) oder CR-LDP (<em>Constraint-Based Routing-Label Distribution Protocol</em>), die f&uuml;r die Verwendung mit GMPLS erweitert wurden. Die Signalisierung selbst kann hier auch Out-of-Band geschehen, wie etwa &uuml;ber Fast Ethernet. </p>
<p>F&uuml;r OBS gilt es, die Lambda-Switches so zu konfigurieren, das nur ein kurzer Strom (<em>burst</em>) &uuml;bertragen werden mu&szlig;. Dieser mu&szlig; durch ein OEO-Ger&auml;t gepuffert werden w&auml;hrend das Lambda-Ger&auml;t konfiguriert wird. &Uuml;bertr&auml;gt man eine Datei von der Gr&ouml;&szlig;e eines Megabytes &uuml;ber 10 Gbps bleibt f&uuml;r die Konfiguration des Lambda-Switches nur eine Millisekunde. Somit mu&szlig; die Signalisierung sehr schnell sein; traditionelle Handshake-Verfahren sind nicht geeignet. </p>
<p>Die Signalisierung kann Out-of-Band geschehen, mu&szlig; aber den Pfad folgen, der f&uuml;r den Burst vorgesehen ist. Auf den ersten Blick erscheint das merkw&uuml;rdig, denkt man an <em>Basic Rate ISDN</em> (BRI). In dieser Topologie kann ein einziger D-Kanal (&uuml;bernimmt die Steuerung) zur Verwaltung von bis zu 30 B-Kan&auml;len (sie &uuml;bertragen die Nutzdaten) genutzt werden. Die B- und D-Kan&auml;le werden &uuml;ber das gleiche Kabel ausgeliefert und laufen deshalb &uuml;ber die gleiche Topologie. Im optischen Kontext w&uuml;rde eine Wellenl&auml;nge f&uuml;r die Signalisierung aufwenden und sie mit der Geschwindigkeit betreiben, die f&uuml;r eine vern&uuml;nftige Auslastung der Netzwerkprozessoren geeignet ist, z.B Gigabit-Ethernet. </p>
<p>Derzeit gibt es noch einige ungekl&auml;rte Punkte bei OBS, insbesondere was den Aufbau eines verl&auml;sslichen und einfachen Signalisierungsmechanismus angeht. Doch die Vorz&uuml;ge liegen auf der Hand. Dadurch da&szlig; der LSP nur f&uuml;r die Dauer des Bursts offen ist, k&ouml;nnen wir statistisches Mutliplexing in einer angemessenen Zeit anbieten. Das steigert die Effizienz des Netzwerkes im Vergleich zu Lambda-Switching. </p>
<h2>Optisches Packet Switching </h2>
<p>Das optische Packet Switching (OPS) ist ein echtes &Auml;quivalent des elektronischen Packet Switching. Das eingebettete Label wird gelesen und eine Entscheidung &uuml;ber die Weiterleitung anhand der enthaltenen Informationen getroffen. Das OPS-Ger&auml;t k&ouml;nnte zum einen in einem verbindungslosen Modus operieren, beispielsweise durch Nutzung der IP-Adresse des Ziels. Andererseits w&auml;re auch ein verbindungsorientierter Modus m&ouml;glich,indem GMPLS-Protokolle zur Signalisierung der Pfadeinstellungen genutzt werden, wobei die eingebetteten Labels normales Switching zulassen w&uuml;rden. </p>
<p>Es sollte sich den LeserInnen die Frage aufdr&auml;ngen, ob hier nicht auch das Lesen von Paketinformationen bei hohen Geschwindigkeiten zu den gleichen Problemen f&uuml;hren w&uuml;rde, wie sie bereits besprochen wurden. Ist das nicht eigentlich unvermeidlich? </p>
<p>Ein praktische OPS-Experiment wurde in dieser Hinsicht bereits unternommen. Es ist unter dem Titel <em>Keys of Optical Packet Switching</em> (KEOPS) (<tt>http://www.aramis-research.ch/d/6089.html</tt>) bekannt. Dabei handelt es sich um ein Europ&auml;isches Projekt einiger Forschungsanstalten, die von Alcatel angef&uuml;hrt werden. </p>
<div id="attachment_490" class="wp-caption aligncenter" style="width: 443px"><img src="/wp-content/uploads/2006/03/img8.png" alt="KEOPS-Signalisierung" title="KEOPS-Signalisierung" width="433" height="236" class="size-full wp-image-490" /><p class="wp-caption-text">KEOPS-Signalisierung</p></div>
]]></content:encoded>
			<wfw:commentRss>http://graegert.de/artikel/grundlagen-optischer-ubertragungssysteme/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>POSIX: Arbeiten mit Wide Characters</title>
		<link>http://graegert.de/artikel/posix-arbeiten-mit-wide-characters</link>
		<comments>http://graegert.de/artikel/posix-arbeiten-mit-wide-characters#comments</comments>
		<pubDate>Sat, 21 Jan 2006 07:44:43 +0000</pubDate>
		<dc:creator>Steve Graegert</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[posix]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[wchar]]></category>

		<guid isPermaLink="false">http://localhost/wordpress/?p=472</guid>
		<description><![CDATA[Viele Zeichens&#228;tze erfordern den Einsatz von &#34;breiten Zeichen&#34; (wide characters), um die f&#252;r das jeweilige Zeichen notwendigen Informationen zu speichern, da der Zeichensatz durchaus aus mehr als 256 Zeichen bestehen kann. Wide Character sind zu gro&#223; (zu &#34;breit&#34;) f&#252;r den char Datentyp. Daher wurde der wchar_t-Datentyp zur Speicherung solcher Zeichen eingef&#252;hrt. Eine Zeichenkette, der ein [...]]]></description>
			<content:encoded><![CDATA[<p>Viele Zeichens&auml;tze erfordern den Einsatz von &quot;breiten Zeichen&quot; (<em>wide characters</em>), um die f&uuml;r das jeweilige Zeichen notwendigen Informationen zu speichern, da der Zeichensatz durchaus aus mehr als 256 Zeichen bestehen kann. Wide Character sind zu gro&szlig; (zu &quot;breit&quot;) f&uuml;r den <tt>char</tt> Datentyp. Daher wurde der <tt>wchar_t</tt>-Datentyp zur Speicherung solcher Zeichen eingef&uuml;hrt.</p>
<p><span id="more-472"></span></p>
<p>Eine Zeichenkette, der ein L vorangestellt wurde, ist immer eine <em>Wide Character Constant</em>. Intern wird zur Ablage von WC-Konstanten ein Integer-Typ verwendet, der entweder in  <tt><wchar.h></wchar.h></tt> oder <tt><stddef.h></stddef.h></tt> definiert ist. Ebenso wie normale Zeichen mit oktalen oder hexdezimalen Escape-Sequenzen versehen werden k&ouml;nnen, funktioniert das auch mit WC-Konstanten, solange ein L vorangestellt wird.</p>
<p>Die Definition von Wide Character Constants unterscheidet sich nicht von der schmaler Zeichen:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">wchar_t</span> wc <span style="color: #339933;">=</span> L<span style="color: #ff0000;">'Z'</span><span style="color: #339933;">;</span>
<span style="color: #993333;">wchar_t</span> wmc <span style="color: #339933;">=</span> L<span style="color: #ff0000;">'XYZ'</span><span style="color: #339933;">;</span>
<span style="color: #993333;">wchar_t</span> <span style="color: #339933;">*</span>wstring <span style="color: #339933;">=</span> L<span style="color: #ff0000;">&quot;Hello World!&quot;</span><span style="color: #339933;">;</span>
<span style="color: #993333;">wchar_t</span> <span style="color: #339933;">*</span>x <span style="color: #339933;">=</span> L<span style="color: #ff0000;">&quot;Hello World&quot;</span><span style="color: #339933;">;</span>
<span style="color: #993333;">wchar_t</span> z<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> L<span style="color: #ff0000;">&quot;Hello World&quot;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Im Gegensatz zur <tt>NUL</tt>-Terminierung schmaler Zeichenketten ist die Terminierung hier 32 Bit lang.</p>
<p>Zwar lassen sich WC-Konstanten ebenso einfach deklarieren, wie ihre schmalen Pendants, allerdings m&uuml;ssen wir bei der Arbeit mit breiten Zeichen auf Besonderheiten einstellen.</p>
<h2>Nicht <tt>malloc</tt>ieren</h2>
<p>Viele Programmierer gehen bei der Arbeit mit Wide Characters vor, wie Sie es mit schmalen Zeichen gewohnt sind. Folgender Code ist in der schmalen Zeichenbreite durchaus &uuml;blich:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">char</span><span style="color: #339933;">*</span> wc <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">char</span> <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>malloc<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">4</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
strcpy<span style="color: #009900;">&#40;</span>wc<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;abc&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>&Uuml;bertragen auf die breite Zeichenwelt ergeben die beiden obigen Ausdr&uuml;cke nur wenig Sinn: </p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">wchar_t</span><span style="color: #339933;">*</span> wc <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">wchar_t</span> <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>malloc<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">4</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
wcscpy<span style="color: #009900;">&#40;</span>wc<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;abc&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>W&auml;hrend der erste Ausdr&uuml;ck zwar syntaktisch richtig ist, wird nur Speicherplatz f&uuml;r 1 breites Zeichen reserviert (da <tt>wchar_t</tt> als <tt>unsigned int</tt> repr&auml;sentiert wird), weil <tt>malloc</tt> nur <tt>n</tt> Bytes reserviert, in diesem Fall also 4. Desweiteren beschwehrt sich der Compiler &uuml;ber den Versuch eine schmale Zeichenkonstante in einen breiten Datentyp zu kopieren. Besser w&auml;re <tt>wcscpy(wc, L"abc")</tt></p>
<p>Die libc-Bibliothek sieht f&uuml;r die Konvertierung von schmalen Zeichenkonstanten in ihr breites Pendant die Funktion <tt>mbstowcs</tt> vor:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">wchar_t</span><span style="color: #339933;">*</span> wc <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">wchar_t</span> <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>malloc<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">8</span> <span style="color: #339933;">*</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span><span style="color: #993333;">wchar_t</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
mbstowcs<span style="color: #009900;">&#40;</span>wc<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;abc&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">4</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h2>Breite Zeichen lesen und schreiben</h2>
<p>Um breite Zeichen von einem Stream zu lesen, bietet sich die Bibliotheksfunktion <a href="/wp-content/uploads/articles/wchar/fgetwc.c"><tt>fgetwc</tt></a>(3) an, die genauso verwendet wird, wir wir es von <tt>fgetwc</tt>(3) kennen:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;stdio.h&gt;</span>
<span style="color: #339933;">#include &lt;locale.h&gt;</span>
<span style="color: #339933;">#include &lt;stdlib.h&gt;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">int</span> argc<span style="color: #339933;">,</span> <span style="color: #993333;">char</span> <span style="color: #339933;">**</span>argv<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    wint_t  retval<span style="color: #339933;">;</span>
    FILE    <span style="color: #339933;">*</span>fp<span style="color: #339933;">;</span>
    <span style="color: #993333;">wchar_t</span> <span style="color: #339933;">*</span>pwcs<span style="color: #339933;">;</span>
&nbsp;
    setlocale<span style="color: #009900;">&#40;</span>LC_ALL<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>fp <span style="color: #339933;">=</span> fopen<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;file&quot;</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;r&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> NULL<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #808080; font-style: italic;">/* Error handling */</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #808080; font-style: italic;">/* pwcs points to a wide character buffer of BUFSIZ. */</span>
        <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>retval <span style="color: #339933;">=</span> fgetwc<span style="color: #009900;">&#40;</span>fp<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> WEOF<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            <span style="color: #339933;">*</span>pwcs<span style="color: #339933;">++</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">wchar_t</span><span style="color: #009900;">&#41;</span>retval<span style="color: #339933;">;</span>
            <span style="color: #808080; font-style: italic;">/* break when buffer is full */</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #808080; font-style: italic;">/*  Process the wide characters in the buffer  */</span>
    <span style="color: #b1b100;">return</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Das gleiche l&auml;&szlig;t sich auch &uuml;ber <a href="/wp-content/uploads/articles/wchar/getwchar.c"><tt>getwchar</tt></a>(3) sagen:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;stdio.h&gt;</span>
<span style="color: #339933;">#include &lt;locale.h&gt;</span>
<span style="color: #339933;">#include &lt;stdlib.h&gt;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">int</span> argc<span style="color: #339933;">,</span> <span style="color: #993333;">char</span> <span style="color: #339933;">**</span>argv<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    wint_t  retval<span style="color: #339933;">;</span>
    FILE    <span style="color: #339933;">*</span>fp<span style="color: #339933;">;</span>
    <span style="color: #993333;">wchar_t</span> <span style="color: #339933;">*</span>pwcs<span style="color: #339933;">;</span>
&nbsp;
    setlocale<span style="color: #009900;">&#40;</span>LC_ALL<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>retval <span style="color: #339933;">=</span> getwchar<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> WEOF<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #808080; font-style: italic;">/* pwcs points to a wide character buffer of BUFSIZ. */</span>
        <span style="color: #339933;">*</span>pwcs<span style="color: #339933;">++</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">wchar_t</span><span style="color: #009900;">&#41;</span>retval<span style="color: #339933;">;</span>
        <span style="color: #808080; font-style: italic;">/* break on buffer full */</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #808080; font-style: italic;">/* Process the wide characters in the buffer */</span>
    <span style="color: #b1b100;">return</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Zum zeilenweisen Einlesen von Dateien verwenden wir <a href="/wp-content/uploads/articles/wchar/fgetws.c"><tt>fgetws</tt></a>(3):</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;stdio.h&gt;</span>
<span style="color: #339933;">#include &lt;locale.h&gt;</span>
<span style="color: #339933;">#include &lt;stdlib.h&gt;</span>
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">int</span> argc<span style="color: #339933;">,</span> <span style="color: #993333;">char</span> <span style="color: #339933;">**</span>argv<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    FILE    <span style="color: #339933;">*</span>fp<span style="color: #339933;">;</span>
    <span style="color: #993333;">wchar_t</span> <span style="color: #339933;">*</span>pwcs<span style="color: #339933;">;</span>
&nbsp;
    setlocale<span style="color: #009900;">&#40;</span>LC_ALL<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #808080; font-style: italic;">/* Error Handling if fopen was not successful. */</span>
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>fp <span style="color: #339933;">=</span> fopen<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;file&quot;</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;r&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> NULL<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #808080; font-style: italic;">/*  Error handling  */</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #808080; font-style: italic;">/* pwcs points to wide character buffer of BUFSIZ.  */</span>
        <span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span>fgetws<span style="color: #009900;">&#40;</span>pwcs<span style="color: #339933;">,</span> BUFSIZ<span style="color: #339933;">,</span> fp<span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">wchar_t</span> <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>NULL<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
           <span style="color: #808080; font-style: italic;">/*
            * pwcs contains wide characters with null
            * termination.
            */</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Schlie&szlig;lich sehen wir uns noch an, wie <a href="/wp-content/uploads/articles/wchar/fputwc.c"><tt>fputwc</tt></a>(3) und <tt>fputws(3)</tt> arbeiten:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;stdio.h&gt;</span>
<span style="color: #339933;">#include &lt;locale.h&gt;</span>
<span style="color: #339933;">#include &lt;stdlib.h&gt;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">int</span> argc<span style="color: #339933;">,</span> <span style="color: #993333;">char</span> <span style="color: #339933;">**</span>argv<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #993333;">int</span>     index<span style="color: #339933;">,</span> len<span style="color: #339933;">;</span>
    wint_t  retval<span style="color: #339933;">;</span>
    FILE    <span style="color: #339933;">*</span>fp<span style="color: #339933;">;</span>
    <span style="color: #993333;">wchar_t</span> <span style="color: #339933;">*</span>pwcs<span style="color: #339933;">;</span>
&nbsp;
    setlocale<span style="color: #009900;">&#40;</span>LC_ALL<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #808080; font-style: italic;">/* Error Handling if fopen was not successful. */</span>
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>fp <span style="color: #339933;">=</span> fopen<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;file&quot;</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;w&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> NULL<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #808080; font-style: italic;">/* Error handling */</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
       <span style="color: #808080; font-style: italic;">/*
        * Let len indicate number of wide chars to output.
        * pwcs points to a wide character buffer of BUFSIZ.
        */</span>
        <span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>index <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> index <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> len<span style="color: #339933;">;</span> index<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>retval <span style="color: #339933;">=</span> fputwc<span style="color: #009900;">&#40;</span><span style="color: #339933;">*</span>pwcs<span style="color: #339933;">++,</span> fp<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> WEOF<span style="color: #009900;">&#41;</span>
            <span style="color: #808080; font-style: italic;">/* write error occurred */</span>
            <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span> <span style="color: #808080; font-style: italic;">/* errno is set to indicate the error. */</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;stdio.h&gt;</span>
<span style="color: #339933;">#include &lt;locale.h&gt;</span>
<span style="color: #339933;">#include &lt;stdlib.h&gt;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">int</span> argc<span style="color: #339933;">,</span> <span style="color: #993333;">char</span> <span style="color: #339933;">**</span>argv<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #993333;">int</span>     retval<span style="color: #339933;">;</span>
	FILE    <span style="color: #339933;">*</span>fp<span style="color: #339933;">;</span>
	<span style="color: #993333;">wchar_t</span> <span style="color: #339933;">*</span>pwcs<span style="color: #339933;">;</span>
&nbsp;
	setlocale<span style="color: #009900;">&#40;</span>LC_ALL<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">/* Error Handling if fopen was not successful. */</span>
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>fp <span style="color: #339933;">=</span> fopen<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;file&quot;</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;w&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> NULL<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #808080; font-style: italic;">/*  Error handler  */</span>
	<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>retval <span style="color: #339933;">=</span> fputws<span style="color: #009900;">&#40;</span>pwcs<span style="color: #339933;">,</span> fp<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #808080; font-style: italic;">/* Write error occurred                */</span>
			<span style="color: #808080; font-style: italic;">/*  errno is set to indicate the error  */</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<h2>Manipulation breiter Zeichen</h2>
<p>Folgende Bibliotheksfunktionen sind f&uuml;r die Verarbeitung von Wide Character Strings vorgesehen: </p>
<ul>
<li><code>wcrtomb()</code> &#8211; Konvertiert eine WC-Konstante in ein Zeichen (<a href="/wp-content/uploads/articles/wchar/wcrtomb.c">wcrtomb.c</a>) </li>
<li><code>wcscat()</code> &#8211; Verbindet zwei WC-Konstanten(<a href="/wp-content/uploads/articles/wchar/wcscat.c">wcscat.c</a>) </li>
<li><code>wcschr()</code> &#8211; Lokalisiert ein Zeichen in einer WC-Konstante(<a href="/wp-content/uploads/articles/wchar/wcschr.c">wcschr.c</a>) </li>
<li><code>wcscmp()</code> &#8211; Vergleicht zwei WC-Konstanten(<a href="/wp-content/uploads/articles/wchar/wcscmp.c">wcscmp.c</a>) </li>
<li><code>wcscoll()</code> &#8211; Vergleicht zwei WC-Konstanten unter Ber&uuml;cksichtigung der Werte in <tt>LC_COLLATE</tt> (<a href="/wp-content/uploads/articles/wchar/wcscoll.c">wcscoll.c</a>) </li>
<li><code>wcscpy()</code> &#8211; Kopiert eine WC-Konstante in einen breiten Speicherbereich (<a href="/wp-content/uploads/articles/wchar/wcscpy.c">wcscpy.c</a>) </li>
<li><code>wcscspn()</code> &#8211; Bestimmt die L&auml;nge eines komplement&auml;ren Substrings (<a href="/wp-content/uploads/articles/wchar/wcscspn.c">wcscspn.c</a>) </li>
<li><code>wcsftime()</code> &#8211; Konvertiert Datum und Zeit in eine breite Zeichenkonstante </li>
<li><code>wcslen()</code> &#8211; Bestimmt die L&auml;nge einer WC-Konstante</li>
<li><code>wcsncat()</code> &#8211; Verbindet einen Teil einer WC-Konstante mit einer anderen </li>
<li><code>wcsncmp()</code> &#8211; Vergleicht einen Teil einer WC-Konstante mit einer anderen </li>
<li><code>wcsncpy()</code> &#8211; Kopiert einen Teil einer WC-Konstante in einen breiten Speicherbereich </li>
<li><code>wcspbrk()</code> &#8211; Lokalisiert eine Zeichenkette in einer WC-Konstante (<a href="/wp-content/uploads/articles/wchar/wcspbrk.c">wcspbrk.c</a>) </li>
<li><code>wcsrchr()</code> &#8211; Lokalisiert die letzte Position eines Zeichens in einer WC-Konstante (<a href="/wp-content/uploads/articles/wchar/wcsrchr.c">wcsrchr.c</a>) </li>
<li><code>wcsrtombs()</code> &#8211; Konvertiert eine WC-Konstante in ihr schmales Pendant </li>
<li><code>wcsspn()</code> &#8211; Gibt die L&auml;nge eines Substrings in einer WC-Konstante aus (<a href="/wp-content/uploads/articles/wchar/wcsspn.c">wcsspn.c</a>) </li>
<li><code>wcsstr()</code> &#8211; Lokalisiert eine Zeichenkette in einer WC-Konstante (exkl. <tt>NUL</tt>-Terminierung) (<a href="/wp-content/uploads/articles/wchar/wcsstr.c">wcsstr.c</a>) </li>
<li><code>wcstod()</code> &#8211; Konvertiert eine WC-Konstante in einen Wert mit doppelter Pr&auml;zision (<a href="/wp-content/uploads/articles/wchar/wcstod.c">wcstod.c</a>) </li>
<li><code>wcstof()</code> &#8211; Konvertiert eine WC-Konstante in einen Wert mit doppelter Pr&auml;zision </li>
<li><code>wcstoimax()</code> &#8211; Konvertiert eine WC-Konstante in einen Integerwert </li>
<li><code>wcstok()</code> &#8211; Teilt eine WC-Konstante in Einzelteile (<a href="/wp-content/uploads/articles/wchar/wcstok.c">wcstok.c</a>) </li>
<li><code>wcstol()</code> &#8211; Konvertiert eine WC-Konstante in einen <tt>long int</tt> (<a href="/wp-content/uploads/articles/wchar/wcstol.c">wcstol.c</a>) </li>
<li><code>wcstold()</code> &#8211; Konvertiert eine WC-Konstante in einen Wert mit doppelter Pr&auml;zision </li>
<li><code>wcstoll()</code> &#8211; Konvertiert eine WC-Konstante in einen <tt>long int</tt> </li>
<li><code>wcstombs()</code> &#8211; Konvertiert eine WC-Konstante in eine Zeichenkonstante (<a href="/wp-content/uploads/articles/wchar/wcstombs.c">wcstombs.c</a>) </li>
<li><code>wcstoul()</code> &#8211; Konvertiert eine WC-Konstante in einen <tt>unsigned long</tt> (<a href="/wp-content/uploads/articles/wchar/wcstoul.c">wcstoul.c</a>) </li>
<li><code>wcstoull()</code> &#8211; Konvertiert eine WC-Konstante in einen <tt>unsigned long</tt> </li>
<li><code>wcstoumax()</code> &#8211; Konvertiert eine WC-Konstante in einen Integer </li>
<li><code>wcswcs()</code> &#8211; Findet eine WC-Konstante (obsolet) (<a href="/wp-content/uploads/articles/wchar/wcswcs.c">wcswcs.c</a>) </li>
<li><code>wcswidth()</code> &#8211; Anzahl der Spaltenpositionen einer WC-Konstante (<a href="/wp-content/uploads/articles/wchar/wcswidth.c">wcswidth.c</a>) </li>
<li><code>wcsxfrm()</code> &#8211; Transformiert eine WC-Konstante (<a href="/wp-content/uploads/articles/wchar/wcsxfrm.c">wcsxfrm.c</a>) </li>
<li><code>wctob()</code> &#8211; Konvertiert eine WC-Konstante in ein Einzelbytezeichen </li>
<li><code>wctomb()</code> &#8211; Konvertiert eine WC-Konstante in eine schmale Zeichenkette (<a href="/wp-content/uploads/articles/wchar/wctomb.c">wctomb.c</a>) </li>
<li><code>wctrans()</code> &#8211; Definiert das Mapping von Zeichen </li>
<li><code>wctype()</code> &#8211; Definiert eine Zeichenklasse </li>
<li><code>wcwidth()</code> &#8211; Anzahl der Spaltenpositionen eines WC-Codes (<a href="/wp-content/uploads/articles/wchar/wcwidth.c">wcwidth.c</a>) </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://graegert.de/artikel/posix-arbeiten-mit-wide-characters/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
