 Sind wir im Stream? Ich glaube ja. Also erst mal hallo und guten Abend an alle, die im Stream sind. Entschuldigt, dass wir ein bisschen spät dran sind, aber wir haben hier eine relativ intensive erste Lab-Session hinter uns. Die Köpfe haben überall ein bisschen geraucht, aber es hat, glaube ich, so positiven Ergebnissen geführt. Es ging um das Thema statisches Routing vor allem, Ding. Und ja, ich habe die Ehre jetzt hier den nächsten Vortrag anzusagen. Der Oliver steht schon da und hat was zum Thema OSPF vorbereitet. Das ist der Vortrag, auf dem ich mich am meisten gefreut habe. Denn ich denke, einigen wird bewusst werden, dass das Thema OSPF vielleicht in einen oder anderen Schmerz lindern kann, wie das geht, warum das so ist und was das Ganze bringt, erklärt euch der Takt. Viel Spaß. Ich habe eine Sache vergessen. Sorry. Es gibt im Hackint ein Channel Routing Days. Da können Fragen gestellt werden, auch an die Leute im Stream oder bei Twitter. Unter dem Hashtag Routing Days. Das werden wir sammeln und dann wird der Oliver die am Ende beantworten. Jetzt aber. Danke. Ja, ich werde was zur OSPF erzählen. Wir haben gerade statisch Routen konfiguriert und wir haben gemerkt, dass es relativ schmerzhaft. Die Aufgabe, die hatte, das sind zwei Stunden, da waren es vor R3, stand darin, dass ihr eigentlich fünf Routen auf jeweils vier Routen konfigurieren solltet. Und das hat schon zu ganz schön viel Ärger geführt. Ja, die Agenda, ich werde kurz darauf eingehen, was dynamisches Routing überhaupt ist. Warum machen wir das? Wo wird es verwendet? Wie funktioniert das grundlegend? Wie lernen sich Routen kennen? Was ist die Linkset-Datenbank? Warum ist die wichtig? Was ist ein kleines Pathtree und wie entsteht der? Darf ich noch kurz auf eingehen, was Multi-Area-OSPF ist? Das ist nicht allzu wichtig für euch. Bleiben wir bei den Basics heute und aber hier gibt es noch ein paar Literatur-Hinweise. So, was für ein dynamisches Routing? Das bedeutet, dass die Routing-Tabelle automatisch gebildet wird. Das heißt, ihr müsst nicht mehr manuell IP-Route-Add jeder einzelne Route da eintragen, sondern der Router weiß, wie das Netzwerk aussieht und er weiß, welche Routen er braucht und er trägt sie automatisch ein. Damit ist die ganze Arbeit ihr gerade gemacht habt, vollkommen überflüssig. Das setzt voraus, dass die Router voneinander wissen, damit sie wissen, wie das Netzwerk aussieht. Wenn sich was ändert, dann passt der Router automatisch die Routing-Tabelle an die Umstände an, hoffentlich. Es gibt zwei Varianten. Es gibt Distance-Vector-Protokolle, zum Beispiel RIP. Das bedeutet, Router A erzählt Router B, welche Subnetze er für welche Metrik erreichen kann. Zum Beispiel sagt der Router A zum Router B, ich kann den Router C für Metrik 3 erreichen. Dadurch weiß der Router A aber nicht, wie das ganze Netzwerk aussieht. Der weiß nur, wo er lang muss. Das ist so, ich erzähle beim Nachbarn, wenn du nach da willst, dann musst du da lang. Aber das ist nicht das Nachbar, den ich gerade erzählt habe, eine komplette Karte von der Gegend hat, wie die aussieht. Das ist der Fall bei Linkstate-Protokoll, bei Linkstate-Protokollen weiß jeder Router, wie das ganze Netzwerk aussieht. Der kennt jeden einzelnen Link, der weiß, wie lang der Link ist oder welche Kosten der hat. Und der kann daran an dieses Abbilds, kann er eine Route berechnen von sich selbst zu allen anderen Knoten und damit kann er die Routing-Tabelle bauen. Beispiele für diese Protokoll sind OSPF, OpenShot is par first und IS to IS, Intermediate System das wird mehr in der Carrier-Welt verwendet, OSPF mehr so in der Enterprise. Es gibt auch ISPs, die OSPF verwenden oder Leute, die ISIS in der Enterprise-Netz verwenden, also es ist nicht exklusiv, das ist nur so die Geschmacksrichtung. Im Grunde funktionieren die beide gleich diese Protokolle. Die haben aber einige Details, die sich unterscheiden, was die Skalierung angeht. Wozu wird das verwendet? Das wird verwendet, um innerhalb einer Organisation oder eines Netzes eine Routing-Informationsaustausch herzustellen. Das heißt, es wird nicht dazu verwendet, um Routing-Information mit anderen Organisationen auszutauschen. Dafür gibt es das BGP, das Border Gateway Protocol. Da sprechen wir morgen darüber. Also heute geht es immer noch darum, innerhalb eures Netzes, dieser zwischen diesen vier Routern, die Erreichbarkeit herzustellen. Ja, wie funktioniert das grundlegend? Ich habe gerade schon gesagt, so ein Router muss ein Abbild haben vom kompletten Netzwerk, damit er das weiß, was es gibt, muss jemand erzählen, was er weiß. Wenn alle allen erzählen, was sie wissen, dann wissen alle alles. Haben alle die Link-State-Datenbank. Und mit der Link-State-Datenbank kann jeder seinen kürzesten Weg zu allen anderen Knoten berechnen. Die berechnenden Routen werden an die Kernrouting-Tabelle installiert und dann kann es losgehen. Dann kann ich bei IP-Pakete fließen, so die Theorie. OSPF verwendet kein UDP und kein TCP. Das wird direkt in IP übertragen mit der Protokoll Nr. 89. Das heißt, wenn ihr Firewalls fahrt, IP-Tables, Stichwort, und ihr wollt das aufmachen, dann müsst ihr nicht ein TCP-Port öffnen, UDP-Port öffnen, so ein ganzes Protokoll mit der Nr. 89. So, Hello-Protokoll. Zwei Router sind miteinander verbunden. Jetzt müssen sie sich irgendwie kennenlernen. Was machen die? Die schicken sich gegenseitig Pakete zu. So, der Link ist da, der Link ist konfiguriert als ein OSPF-Link und dann legen wir mal los und sagen, Hallo, ich bin so und so. Ist da jemand? Das gibt zwei verschiedene Möglichkeiten. Entweder haben wir einen Point-to-Point-Link. Das wäre so eine serielle Verbindung, eine PPP-Verbindung, zum Beispiel. Es ist also ein Link, an dem maximal zwei Geräte angeschlossen sind. Router A und Router B. Nicht mehr. Das ist ein Point-to-Point-Link. In dem Fall wird das nicht an die Broadcast-Adresse gesendet, bin ich recht entsinnbar, sondern an die Broadcast-Adresse. Haben wir ein Ethernet dazwischen? Also, sprich, eine Broadcast-Dumente, ein Lea-2-Netz, wo mehrere Rechner dran hängen können. Dann haben wir etwas mit Multicast zu tun. Wie sollte ich denn der Broadcast geschrieben? Multicast. Multicast bedeutet, diese Pakete sind nicht eins zu any, sondern eins zu n. Nur die Leute, die Router, die das haben wollen, empfangen diese Pakete, sprich, eine OSPF-Router, der diese Pakete haben möchte. Der sagt, der konfiguriert, ich möchte in dieser Gruppe teilen, in dieser Gruppenkommunikation auf diesem LAN-Segment. Und über dieses LAN-Segment werden dann die Hello-Pakete ausgetauscht über diese Adresse da. Das heißt, wenn ihr das aufmachen wollt in der Firewall, die Destination-Adresse von diesen Hello-Paketen bis 24.005, die müsst ihr aufmachen. Wenn die zu ist, dann kommt da keine Adjacency zustande. Da gibt es ein paar wichtige Details. Wenn man so ein Hello-Protokoll konfiguriert, es gibt ein Hello-Intervall, das sagt an, wie oft sagt ein Router zu seinem Nachbarn, Hallo. Standard ist, dass das alle 10 Sekunden tut. Es gibt auch ein Intervall, der festlegt, wann ein Router als Tod angenommen wird. Wenn ich viermal so lange wie das Hello-Intervall war, nichts von meinem Nachbarn gehört habe, dann gehe ich davon aus, dass er tot ist. Das Default dafür ist 40 Sekunden. Das heißt, wenn der Link, wenn der Nachbar stirbt, aber mein Interface oben bleibt, dann dauert es 40 Sekunden, bis ich erkenne, dass mein Nachbar tot ist. Und so lang schicke ich den Pakete, obwohl er weg ist. Das heißt, das da möchte man unter Umständen ein bisschen aggressiver gestalten. Das kann man runterdrehen bis auf Hello eine Sekunde und Dead of 4 Sekunden. So fahren wir das im Backbarn. Wichtig ist zu wissen, dass Hello-Intervall und das Dead-Intervall, die müssen auf den beiden Nachbarn übereinstimmen. Wenn die nicht übereinstimmen, dann werden die keine Adjacency aufbauen. Das heißt, die werden sich nicht gegenseitig als Nachbarn akzeptieren und Routerinformation austauschen. Das wird nicht passieren. Ja, was setzt es voraus, damit noch, also mit der Adjacency entstehen kann. Ich gerade gesagt habe, der Hello-Intervall muss gleich sein, der Dead-Intervall muss gleich sein auf beiden Seiten. Die IP-Adressen, die konfigurieren auf den Interfaces, müssen exakt im selben Subnetz liegen. Also, wenn der eine im Sesh 24 liegt und der andere in dem Sesh 25, was ein Teil von dem Sesh 24 ist, funktioniert nicht. In dem Hello-Paket steht drin, für welches Subnetz dieses Hello-Paket gedacht ist. Und wenn die Subnetz waske nicht übereinstimmt, dann baut er keine Adjacency auf. Man kann Authentifizierungen konfigurieren, sprich, das limitiert, mit wem ich überhaupt sprechen möchte, aus Sicherheitsgründen. Ich mach vielleicht OSPF an auf einem Netz, aber da kommen vielleicht auch Besucher, die auch an dieses Netz ran können, mit ihren Laptops, so wie hier. Aber ich möchte mit denen keine OSPF sprechen, weil die könnten mir eine Routinginformation erzählen, die ich immer jetzt gar nicht haben möchte. Die ernauen mir irgendwie 8888 und dann kriegen die mein ganzes Dernestreffekt ja nicht zu Google sollte. Deswegen kann man da ein Passwort setzen, im Klartext oder als MD5, was ich empfehlen würde. Es gibt ein Konfigurierungsparameter Area, was ein Area ist, da komme ich gleich noch drauf. Die muss identisch sein, sprich, wenn ich zwei Router habe und ich konfiguriere diese links an diesen beiden Routern, dann muss die area, die konfiguriert zu beeinstimmen. Wenn der einen Area 0 ist, dann wird die Adjacency nicht hochkommen. Hello-Dat-Interval, hab ich gerade schon gesagt. Die MTU, die konfiguriert ist die Maximum-Zwischen-Unit, also die maximale Paketgröße, die durch ein Interface durchgeht, die muss übereinstimmen mit Anmerkung. Theoretisch muss sie das nicht, praktisch muss sie das schon, dass sonst, wenn die MTU nicht übereinstimmt an beiden Enden, dann führt es dazu, dass der Router A, der die größere MTU hat, große Pakete los schickt und der Router B sagt so, nee, das ist aber zu groß, ich kann ihn nicht und es gibt aber keinen Weg, wie der Router B dem Router A mitteilen kann, dass das zu groß war und dann bleibt der ganze Prozess da stecken. Das heißt, sie fangen an, ihre Links-Date-Daten auszutauschen, aber in eine Richtung kommen die Pakete nie an. Das sieht man dann daran, dass die Adjacency in einem Status hängen bleibt, der als X start bezeichnet wird, deswegen ist darauf zu achten, dass die MTU übereinstimmt. So, so eine Adjacency, wie sieht das aus? Das geht los mit down und dann fängt man an, erst mal ein Hello-Paket rauszuschicken. Ich habe selber noch kein Hello-Paket empfangen, ich schicke eins los, dann wechselt der Status von dieser Adjacency in den Status init. Der Nachbar schickt ein Hello-Paket zurück und listet mich als einem inbekannten Nachbarn. Das Paket bekomme ich zurück, ich sehe mich selbst in diesem Paket, dann weiß ich, okay, mein Paket ist bei ihm angekommen, er hat mich gesehen und ich sehe, dass sein Paket bei mir ankommt, damit habe ich ein Two-Way-State. Das ist eine bidirektionale Kommunikation, die ist da, die funktioniert. X start, das heißt die Router verhandeln, wer hier der Master ist, im Austausch der Linkstate-Datenbank. Exchange heißt, wir tauschen die Informationen gerade aktiv aus, das kann man ein paar Sekunden dauern, je nachdem wie busy so eine Router gerade ist. Exchange tauscht aus, wie die Datenbank aus ist, das ist ein Beschreibungspaket. Loading überträgt die eigentliche Datenbank, also das kann man sich so vorstellen, da werden Informationen übertragen, welche Linkstate-Einträge existieren, aber nicht wie aussehen. Und bei Loading wird dann die eigentliche Information erst übertragen, wie denn die Linkstate-Information aussieht. Wenn wir dann einen Full-State erreicht haben, dann ist die Adjacency vollständig und wir können anfangen, unsere Routing-Tabel dazu berechnen. Das heißt, in dem Moment haben wir ein vollständiges Abbild vom Netzwerk. Wir wissen, dass die Router A mit B verbunden ist, B mit C und C mit D und welche Alpiere sind da drauf und so weiter und so fort und zu welchen Kosten. Wie sieht so eine Linkstate-Datenbank aus? Hier ist mal ein Beispielennetz, ein kleines. Und eine Linkstate-Datenbank dazu, da steht quasi genau drin, von welchem Element zu welchem Element, zu welcher Metrik eine Erreichbarkeit gegeben ist. Also wer mit wem direkt verbunden ist. Mit diesen Informationen, die rechts in der Tabelle stehen, kann ich mir links den Grafen komplett herleiten. Das ist eine 1 zu 1 Beschreibung. Mit dieser Tabelle kann der Router hingehen und sich selbst berechnen, wie der kürzeste Weg von sich selbst zu allen anderen Systemen lautet. Das ist hier mal exemplarisch dargestellt für den Router R4. Der Router R4 hat hier also berechnet, dass ein kürzester Weg zum Knoten N1 über den R3 führt. Das heißt, er stellt eine gute und sagt, die Dupag-Adresse von dem N1 oder das Subnetzwasser drauf ist, das konfiguriere ich mit dem Nextop, der auf R3 zeigt. Und das macht er für alle Elemente im Netzwerk. Und dann ist die Routin-Tabelle vollständig. Und dann ist die Magie auch schon vorbei. Ist das zu schnell? Also die Linkstate-Datenbank, die ist eine Darstellung in tabularischer Form von diesem Netzwerk, was ihr auf der linken Seite seht. So, hier der Knoten hat eine Beschriftung, eine Bezeichnung. Das ist der R1 und zum Beispiel der R2 oben links. Nehmen wir uns die mal raus. Wenn man sich jetzt hier anguckt zwischen der R1 und R2, da liegt noch N2. Und wenn ich jetzt schaue, ich nehme den R2 zu N2. Wo ist denn das? Das ist ziemlich genau da. Da steht, dass da eine Metrik von eins ist. Das ist dieser Link hier, hier hier. Und von dem R2 zu N2, R2 N2, das ist der hier, also das war der hier so eben. Das sind die beiden links, dieser Link und dieser Link. So, dieser Link, der kommt von R3, das gucke ich hier R3 nach N2, das ist dieser Link. Man sieht also anhand dieser Tabelle, habe ich ein vollständiges Abbild von dem Netzwerk im Speicher. Das bedeutet, also die Frage war, was das bedeutet, wenn da ein Strich steht, das bedeutet, dass diese beiden Knoten keine direkte Verbindung miteinander haben. Genau. Das ist keine Routing-Information. Das ist eine Information, wie das Netzwerk aussieht. Das ist eine Link-Zustandstabelle. Da steht quasi drin, zwischen R1 und N1 gibt es einen Link zur Metrik 2. Das sind die Kosten. Daran kann ich berechnen, wie weit ist das. Wenn das eine Straße will, dann wäre das die Länge in Kilometern. Genau, die kann ich konfigurieren, diese Metrik. Die denke ich mir aus. Die wird per Default abgeleitet von der Bandbreite, die ich habe. Es gibt eine Referenzbandbreite, die wird dividiert durch die Bandbreite meines Interfaces. Wenn ich eine Referenzbandbreite von einem Gigabit habe und ich habe ein 100 Megabit Link, dann ist die Metrik 10. Die kann ich aber auch aktiv konfigurieren, was ich immer empfehlen würde. Weil ich bestimmte Wege in meinem Netzwerk bevorzugen möchte oder nicht bevorzugt haben möchte. Das ist deswegen so, weil das N2, das ist ein Switch. Das ist eine Broadcast-Domaine. Das hat selber keinen Status, das hat keinen USPF. Die Frage war, warum hier bei N2 zu R2 und R1, das ist bei beiden gleich, warum da der Null steht und andersrum, warum das nicht so ist. Das ist deswegen so, weil die Metrikangabe, die ist unidirektional, die ist von dem Router ausgehend und das Element N2 ist eine Broadcast-Domaine, das ist ein Switch. Und diese Broadcast-Domaine wird beschrieben. Da steht dann drin, in der linken Datenbank, steht quasi drin, der Router 1, 2 und 3, die hängen an einem gemeinsamen Switch und der Router 1 hat die Metrik 1 konfiguriert. Und der Router 2 hat die Metrik 1 konfiguriert und der Router 3 hat die auch konfiguriert. Das Element N2 ist selber kein aktiver Router. Ah, ich habe ein Mikro. Herr Vorragend, also die Tabelle ist zu lesen, oben die Horizontale, quasi wenn ich von oben nach unten gehe, das ist die Quelladresse oder das Quellrechner, Quellrouter und wenn ich jetzt runtergehe, das ist das Ziel. Richtig. Danke. So, an dieser Information kann man jetzt sich berechnen, wie der kürzeste Weg von einem Knoten aus zu allen anderen Knoten lautet. Dafür gibt es einen Dijkstrahl-Grythmus, den erkläre ich jetzt hier nicht, wie der funktioniert. Wer den nachschauen möchte, der tue das. Jedenfalls ist das der Baum, der daraus kommt. So, und dann ist klar, wo es lang geht. So, von R4, wenn R4 nach N3 möchte, dann installiert er eine Route Richtung R3. Der R3 wiederum geht hin und berechnet an und derselben Linkstatusdatenbank, die er hat. Selber von sich aus den kürzesten Weg zu allen anderen Knoten. Das heißt, der R3 berechnet sich, dass sein kürzester Weg zu N3 über N2 geht und installiert sich die Routen. Der R2 hier, der wiederum Router ist, der macht das Gleiche. Der hat die Linkstate-Datenbank, der berechnet sich den kürzesten Weg zu allen anderen Knoten und eine konsistente Routing-Tabelle raus, die verteilt ist nach einem Netzwerk. Deswegen haben wir nicht das Problem, dass Router A zu B rutet und Router B zu Router A zurück. Alle haben die gleiche Linkstate-Datenbank und alle berechnen von sich den kürzesten Weg zu allen anderen Knoten. Moment, Mikro kommt. Das heißt, die Metrik, die sich aus der Bandbreite ergibt, muss aber auch für allen Routern auch die gleiche sein. Da wird die gleiche Ergebnis bei rauskommen. Die Linkstate-Datenbank steht, die ist für jeden Link. Du hast einen Link auf Router A in der Datenbank und auf Router B in der Datenbank. Das ist der selbe Link. Der hat natürlich die selbe Metrik. Wenn ich sage, die Linkstate-Datenbank ist gleich, dann heißt das sie ist komplett identisch. Jeder Router in diesem Netzwerk hat diese Tabelle. Diese Tabelle hier, die ist nicht Router-spezifisch. Diese Tabelle hat jeder Router, exakt so, nicht anders. Du hast vorhin gesagt, dass sich aus der Metrik, wie geroutet wird, dir auch noch die Bandbreite des Kabel genutzt wird. Ja. Du kannst die Metrik selber zuteilen. Das muss ich dann aber logischerweise für alle Router machen. Wenn ich nur Teil der Router verwalte, würde es keinen Sinn ergeben. Warum? Wenn deine Metrik, was deine 1 entspricht, also dein Gigabit Port, auf einem anderen Router anders gesetzt ist, dann ist es nicht mal eindeutig. Du kannst also die Bandbreite haben und kannst es daran abbilden. Das führt auch nicht zu Problemen. Ich habe das Gefühl, das Missverständnis dazwischen ist, wie die Routing-Tabelle zu den Routern kommt. Wenn ich das richtig verstanden habe, tauschen die Router Teilbestände der Routing-Tabelle untereinander aus, bis es ein gemeinsames Bild gibt. Nein. Die Router tauschen Linkstate-Informationen aus. Das ist keine Routing-Tabelle. Die Router tauschen dieses Ding hier aus. Diese Tabelle. Die bauen die auf. Der Router A sagt, ich habe folgende Netzwerk-Interfaces und folgende IP-Adressen. Der Router B sagt, ich habe folgende Interfaces und folgende IP-Adressen. Der Router A sagt, das alle sind in anderen Nachbarn weiter. Alle haben nachher ein Abbild davon, wer mit wem verbunden ist. Es ist keine Routing-Information. Es ist eine Information, dass dieser Link hier existiert. Das sagt nicht aus, welche Route danach herauszukommen hat. Sobald alle diese gleiche Tabelle haben im Speicher, führen die alle den gleichen Algorithmus aus, um von sich selbst zu allen anderen Knoten den kürzesten Weg zu berechnen. Da die alle das auf Basis derselben Information tun, geschieht auch keine Routing-Loops. Deswegen geht ein Paket immer in eine Richtung und kommt nicht auf einmal wieder zurück. Die Frage war, ob der Speicher vollläuft, wenn das Netz zu groß wird. Der Speicher ist nicht wirklich das Problem. Das Problem ist die Laufzeit des Algorithmus. Denn der ist in O von N². Das heißt, mit jedem Link, den ich hinzufüge, verdoppelt sich die Laufzeit von dem Dijkstraal-Algorithmus. Das führt dazu, dass du so ein Netz normalerweise nicht mit mehr als 500 Knoten fahren möchtest. Innerhalb einer Area. Was es mit der Area auf sich hat, da komme ich gleich noch zu. Ich habe eine Frage. Gibt es einen Master, der das verwaltet, um Eigeninformationen dieser Tabelle selber zusammenfällt? Also fällt es auf, wenn irgendwann einen Router seine Informationen weglässt oder ausgetauscht wird? Die Links-der-Datenbank hat jeder selber. Die verbreite Links-der-Datenbank, da gibt es eine besondere Rolle in einem Broadcast-Segment. Das ist der designierte Router. Das ist quasi ein Platzhalter für alle Router, die an einem Broadcast-Segment hängen. Das heißt, an diesem Lahn hier oben, einer von diesen drei hier oben links, wird ein designated Router sein. Das sind eigentlich Details, auf die ich heute nicht eingehen wollte, weil die nicht wirklich relevant sind für den täglichen Betrieb. Aber da du jetzt danach fragst, mach ich das trotzdem. Dieser designated Router, der hat noch eine andere IP-Adresse. Das habe ich eben gesehen, das war die 24005. Ich bin nicht tausche. Und der designated Router, der hat die 24006. Das wird ausgehandelt. Das hat eine Priorität, die man auch konfigurieren kann. Jeder Router hat ein Prioritätswert. Und der, der den höchsten Prioritätswert hat, der ist der designated Router. Und der hat diese Sondachrolle. Alle anderen, die an diesem Lahn da oben hängen, die wissen an der designated Router ist, und die schicken erst mal ihre linkser Information nur an diesen einen. Jemand davon aus, der R2 ist der designated Router. D.h. der R3 und der R1 werden ihre linkser Information erst mal nur an den R2 schicken. Aber die wiederum an alle anderen, die da oben an diesem Lahn angeschlossen sind, diese Informationen zu verteilen. Beantwortet es die Frage. Es gibt auch ein Backup der designated Router. Der Vollständigkeit halber. Der hört auf die selber Adresse. Das ist ja mit der zweithöchsten Priorität. Der springt ein, wenn der erste verschwinden sollte. Wenn einer weg ist, das waren 40 Sekunden, glaube ich, per Default. Ist das in der Praxis auch so, da hat der irgendwie Methoden, dass das schneller geht, dass es schon relevant ist, es gibt ein paar verschiedene Ansätze, wie man das behandeln kann. Das stumpste Möglichkeit ist, wie ich gesagt habe, den Hello Time runterzusetzen und den Dead Time auch. Hallo 1 und Dead 4, da braucht man noch 4 Sekunden. 4 Sekunden sind in manchen Umgebungen nicht akzeptabel. Hauptsächlich, wenn man beruflich arbeitet, dann sind 4 Sekunden eher nicht so cool. Eine Lösung ist, dass die Interface immer direkt von Router zu Router steckt. Wenn nämlich jetzt hier, der Link hier, kaputt gehen sollte, dann registriert der R3 und der F4 das und die nehmen die adjacency sofort runter, weil sie merken, das ist das Interface, was sie benutzt haben, um die adjacency aufzubauen, dass das kaputt ist. Die warten dann nicht 40 Sekunden, sondern die nehmen das sofort down und berechnen sofort eine neue Routing-Tabelle und informieren sofort alle ihre Nachbarn, dass dieser Link hier weg ist, damit diese Tabelle abgedatet wird. Wenn diese Tabelle abgedatet ist, das ist die Idee. Dann gibt es noch so etwas, das nennt sich BFD, Bidirectional Forward Detection. Das macht in der Praxis fast kein Mensch. Das bedeutet, wenn nachbarte Router sich im Millisekunden-Takt BFD-Hello-Pakete zu schicken und die definieren nur, solange das BFD funktioniert, mache ich auch OSPF. Wenn das BFD kaputt geht, dann mache ich das OSPF da sofort aus. Aber das ist praktisch nicht wirklich relevant. Ich habe es noch nie in Aktion gesehen. Ich habe es mit meinem Lab versucht zwischen der Arista und der Juniperbox. Wenn dann da ein Bandel ist und mehr in der Interface ist, dann geht das Problem schon los, weil da nicht definiert ist, wer wo lang welches Paket schickt. Weil es im Standard nicht steht und jede Herstelle das anders macht. Deswegen ist BFD vergisst das, das willst du nicht machen. Ist das jetzt klarer geworden? Ninkende Gesichter, das finde ich gut. Schwarzes Path Tree und damit auch das ist jetzt so weit klar. Das ist eine andere Darstellung der Routing-Tabelle. Im Endeffekt. Das bedeutet für R4, alles was da links ist, bekommt einen Next-Top, der auf R3 zeigt und alles was da rechts hängt, bekommt einen Next-Top, der auf R7 oder R6 zeigt. N5 kann kein Next-Top sein, weil N5 ist ein Broadcast, wenn es ein Switch ist. Da muss doch noch ein Router identifiziert werden, wenn es einem Switch hängt. Das heißt, der hat im Endeffekt R4 drei verschiedene Next-Tops für seine Routen. Nämlich den R3, den R6 und den R7. Und keine anderen. Jeder Router berechnet das. Das ist eine Routing-Tabelle. Da hinten gibt es eine Frage. Wenn der N5 jetzt eine Broadcast-Domain ist. Der R6 und R7 jeweils Router. Ja. Zwischen N5 und den jeweiligen R6 oder 7 habe ich eine Metrik von 0. Zwischen N5 habe ich eine Metrik von 1. Wenn der N5 kein Router ist, welche Metrik geht denn da eigentlich? Für den R4 zu R6 und 7 ist die Metrik 1. Von R6 und 7 zu R4 ist die Metrik 0. Die Metrik ist pro Richtung. Die muss nicht symmetisch sein. Ich kann von A nach B eine Metrik 1 haben und von B nach A eine Metrik 5. Guter Punkt. Aber dennoch könnte es so konfiguriert haben, wie ich gerade gesagt habe. Diese Metriken hier. Magst du mal herkommen? Und den Punkt mal klarmachen. Zeig nochmal die Tabelle. Die LSDatenbank. Das sind die Zeilen da oben, wo eine 0 drin steht. Wenn man ausgehend von dem Netz guckt, von der Broadcast-Domain, die ja kein Router ist, haben wir die Metrik 0. Jetzt nochmal zum Bild. Was er gerade sagte, mit den Kosten können in unterschiedliche Richtungen unterschiedlich sein, dass der R6 von R4 ist. Die Gegenrichtung interessiert uns gar nicht. Was das also ist, sind die 0-Einträge aus der Tabelle vom Netz aus. Aus dem Netz zu einem Router kostet es ja nichts. Korrekt. Der R6 zu R4. Eigentlich muss man das hier angucken. Der R6 ist der hier. Das ist die Metrik 1 an diesem Link. Der R4 hängt an dieser Broadcast-Domain. Das heißt, die Metrik ist eigentlich 1. Was du hier siehst, das ist quasi die Metrik, die der N5 hat, um den R4 zu erreichen. Die gibt es nicht, weil das eine Broadcast-Domain ist. Aber dann ist mein Weg von R6 zu R4 immer halt 1. Wenn da jetzt 2 statt der 0-Stinde, dann was wäre es dann? Die Summe? Mach mal das Bild wieder mit dem Baum. Zwischen N5 und R6. Angenommen, da stehen eine 2. Da steht immer eine 0. Ach so, weil es hier ein 5 ist. Ja, vergiss mal. Genau, das war der Punkt. Das ist jetzt klar. An dem Punkt ist die Erreichbarkeit aller Netze praktisch gegeben innerhalb einer Area. Da von so einem Ausgang jetzt alles in einer Area ist. Was ist eine Area? Eine Area ist einfach nur ein Bereich. Den kann ich festlegen. Es gibt verschiedene Areas. Es gibt die Area 0. Die hat eine besondere Rolle. Die verbindet alle anderen Areas miteinander. Alle anderen Areas müssen mit Backbone verbunden sein. Verdefinition. Warum das so ist, ist erst mal egal, wir glauben das erst mal. Das ist so. Es gibt die Möglichkeit, virtuelle Links zu definieren durch Areas. Das heißt, ich habe eine Area 0, gleich eine Area 1 dran und die Area 2 hängt an Area 1. Aber da muss ich virtuelle Link bauen. Die muss ich konfigurieren und die Area 0 hängt. Ein Router, der Interfaces in mehreren Areas hat, wird als ABR bezeichnet. Das ist ein Area Border Router. Signifikant für ein Area ist, dass jede Area eine eigene Links-Date-Datenbank hat. Das heißt, die Area 0 hat eine, die Area 1 hat eine eigene Datenbank, die Area 2 und die Area 3 ebenfalls. Das bedeutet auch, dass der ABR mehr als eine Links-Date-Datenbank hat. Das heißt, dieses gesamte Netzwerk, das man jetzt sieht, das ist nicht mehr eine große Links-Date-Datenbank. Das sind vier Stück. Manche Router haben mehr als ihre eigene. Das sind die ABRs, die Area Border Router. Die kennen nicht nur ihr eigenes Netzwerk, die Area 0, sondern die kennen auch die anderen Areas. Dieser hier kennt noch die Area 1 und der hier kennt noch die Area 3. Aus dem kennt er auch noch die Area 2. Ja, die hätte ich am Anfang gesagt. Innerhalb jeder Area passiert das, was ich gerade erklärt habe. Das heißt, in dem Fall macht die Area 0, macht das, was ich erklärt habe, mit ihrer Links-Date-Datenbank und macht den Shortest Path Tree. Die Area 1 macht das intern und die Area 2 macht das intern. Damit jetzt eine Erreichbarkeit zwischen Area 1 und Area 0 entstehen kann, das sieht Folgendes. Der ABR berechnet seinen Shortest Path Tree zu diesen drei Routern hier unten und der flattet diese Information und zwar nicht als Linksstatus, sondern die Route an sich. Die geteilt der seinen anderen Nachbarn hiermit in der Area. Der erzählt seinem Router hier oben und sagt, hier unten die ganzen Router, die kann ich erreichen für folgende Metriken. Da steht nicht mehr drin, dass da unten Link von da nach da ist. Der sagt nur, ich habe die IP-Adresse und die IP-Adresse und die IP-Adresse und die kann ich für Metrik X erreichen. Dadurch steigt die Laufzeit für den Links-Date für den Shortest Path Tree, auch wenn die Area 1 größer wird. Das ist der Trick. So kann ich das skalieren. Ich packe 500 Router in Area 1 und 500 Router in Area 0 und 500 in Area 2 und in Area 3 und dann kann ich das richtig groß machen. Das machen wir praktisch nicht, weil das andere Problem mit sich bringt in Service Provider Netzen, da baut man noch was als Area 0. Deswegen machen wir hier im Labhaut auch nur Area 0. Bei diesen Areas gibt es ein paar Spezialfälle, aber darauf gehen wir heute der Einfachheit halber nicht ein. Es sei denn, wie man möchte das unbedingt und ist daran interessiert, so wie jemand an dem Designated Router interessiert war. Das gibt es eine Frage. Die einzige Frage, die ich da zur Hätte wäre, gibt es außer der Größe noch andere Gründe, das aufzuteilen, oder ist es wirklich nur die Anzahl der Knoten, die irgendwann zu groß wird? Es geht nur um Skalierung dabei. Okay, danke. Typischerweise. Wir haben andere Ideen davon, aber eigentlich sehe ich keinen anderen Grund für. Der Kommunikationsoverhead ist der gleiche. Wenn ich innerhalb einer Area kommuniziere, ist der dieselbe Menge an Daten, wie wenn ich zwischen Areas kommuniziere? Meinst du jetzt die Nutzdaten oder das Protokoll? Protokoll. Innerhalb der Area wird die Linkset-Datenmark ausgetauscht. Da kommt hinzu, dass für jede Area die Routen dadurch gejagt werden müssen, wäre halt die Frage, wenn ich an verschiedenen Standorten mache ich für verschiedene Standorte, verschiedene Areas, um die VPN-Verbindung, die ich dazwischen habe zu schauen, oder mache ich eine große OSPF-Wolke? Da gibt es eine folgende Detailarbeit zu beachten. Immer dann, wenn sich ein Linkset-Datenbank ändert, wird für diese eine Linkset-Datenbank die komplette Routing-Tabel erneut berechnet auf jedem Router. Das heißt, angenommen du hast jetzt ein Netz mit ganz vielen wackelegenden Verbindungen wie deine VPNs, dann kannst du dich schon mal verschwinden, weil DSL-Zwangstrendung oder was egal, und du warst alles in Area 0, und irgendein DSLR geht aus, dann geht der Abstimmrouter hin und verbreitet dann alle anderen Router in einer Area 0, dass dieser Link nicht mehr da ist, und dann geht jeder Router hin und berechnet seine Routing-Tabel komplett neu. Mit dem Gleichsträger wird es nicht je größer das ist, umso mehr CDU-Zeit brauchst du dafür. Deswegen möchtest du bei solchen wackelegen Verbindungen nicht alles in eine Area reinsetzen. Das ist plausibel. Sonst noch was? Multi-Area habe ich gerade erklärt. Zwischen Areas kann man auch Routen filtern. Das Ding ist ja, innerhalb einer Area hat ja jeder diese Link-State-Datenbank. Und weil ich einen Link-State-Datenbank habe, haben auch alle Routen. Ich kann nicht hingehen und sagen, diese eine Route möchte ich aber nicht, denn nicht dieses Netzwerk hier nehme und ich sage auf diesem einen Router hier. Aber diese eine Route, aus was weiß ich, was wir gründen. Dann macht er das zwar, aber der R4 sagt immer noch, der R7 ist mein kürzester Weg zu R8 und da denke ich davon, ob der R7 jetzt lokal konfiguriert, dass er die Route installiert oder nicht. Wenn er die Route nicht installiert und er bekommt das Paket, dann kann er das nicht weiterleiten. Und im Morgen wurde auch in dem Test her die Frage gestellt, was macht eine Router mit einem Paket, zu dem er keine Route hat, die einfach das F verwirft ist und damit ist die Kommunikation unterbrochen. Hier möchte ich jetzt ein bestimmtes Präfix nicht installieren in meiner Routing-Tabelle. Das möchte ich nicht haben, das geht nicht. Das kann man an genau einem Punkt machen und das ist hier am ABR. Da kann ich hingehen und definieren ein bestimmtes IP-Netz, was hier unten in R1 benutzt wird, soll nicht in die R0 verbreitet werden. Da kann ich solche Filterkonstrukte bauen und sonst geht das nicht. Das ist noch eine Frage. Wenn ein Router wegfliegt, teuer, weil alle müssen neu berechnen in ihre Linkstates. Wenn ich einen Router habe, der in anderen Quellenrouten kriegt, die sich ständig ändern. Ich habe einen Router, der spricht in die andere Richtung BGP, kriegt sich da ändernde Routen. Das ist aber kein Problem. Das kommt darauf an, was du konfiguriert hast. Wenn du die Routen bekommst, die per BGP, du verteilst die per BGP, da interessiert das das OSPF ja natürlich nicht. Wenn du aber die BGP-Routen nimmst und sie in dein OSPF hinein redistributierst, kannst du damit schon eine Menge Stress auch darin trotzdem noch erzeugen. Du hast da kein neues Shortspuff-Tree erstellt. Aber OSPF ist nicht dafür gedacht, um da eine halbe Million Routen drins zu übertragen. Als external routes. Dafür ist es nicht gedacht. Kannst du noch mal auf das Bild zurückgehen? Ja. Auf das andere mit dem Shortspuff. Du hast ja gesagt, der R7 kann nicht keine Route zu R8 anbieten, sonst geht das kaputt. Du hast ja gesagt, R7 kann jetzt nicht die Route zu R8 weggeschmeißen, weil dann endet R4 ihm trotzdem noch Paket, weil er nicht... Weil die Linkstate-Datenbank sagt, da ist der kürzeste Weg. Kann R7 nicht schon beim Aufbau der Linkstate-Information diese Informationen verschweigen, dass er R8 hat und das quasi gar nicht in die Linkstate-Datenbank melden, dann hätte ich doch auch quasi eine ignorierte Route... Klar, das geht. Aber dafür musst du das OSPF auf dem Link ausmachen. Wenn hier keine Adjacens hier ist zwischen den beiden Routern, wenn R7 und R8... Ja, also der Hinweis war, wenn der R6er einen Link hätte zum R8er und der R7er macht hier so ein OSPF aus, dann hätte ich natürlich hier einen anderen Weg. Aber so kann ich halt nur hängen, wenn ich das hier nicht benutzt haben möchte, dann muss ich auf dem R7 das OSPF auf dem Link einfach ausknipsen. Und dann verschwindet das natürlich auch aus der Linkstate-Datenbank hier, dann ist der Link hier nicht mehr drin und da kann man nicht mehr rauskommen, dass das der kürzeste Weg ist. Und zu den Areas noch eine Frage. Kann ich jetzt... Kannst du auf das Bild mit den Areas gehen? Ja. Kann ich jetzt aus der Area 3 eine Route in die Area 1 würde die immer über den Backbone führen? Ja. Das heißt, ich kann die nicht... Ich kann nicht sagen, der kürzeste Weg ist über Area 2 zu routen, sondern die Routen müssen quasi den selben Weg gehen, wie die Linkstate-Datenbanken auch. Genau. Du kannst mit dem Link konfigurieren zwischen Areas... Du hättest jetzt Areas 3, wir hättest nicht an Areas 0 angeschlossen, sondern vor aus ist ein Areas 2 angeschlossen. Dann kannst du mit dem Link konfigurieren zwischen diesem Router hier und dem ABR. Und in dem Moment geht das dann trotzdem. Da geht der Treffig auch nicht... Wenn du dann zu Areas 2 willst, geht der Treffig natürlich auch nicht so, sondern der geht direkt in Areas 2 rein. Aber das habe ich auch schon erläutert. Ja, das ist eigentlich die Strategie dahinter. Wer da mehr zu wissen will, der kann das EFC lesen. Schon ein paar Jahre älter, wie die ganze Literatur hier. Dieses Buch, OSPF, erinnert mich auf ein Inter-Draughting-Protokoll von John Timoy vor 98. Ist immer noch topaktuell. Das kostet irgendwie 35 Euro auf Amazon. Kann ich echt empfehlen. Da stehen alle Details zur OSPF drin, die man irgendwie mal brauchen könnte. Ein grundsätzlicher Hinweis, wenn es um Routing im Internet geht, Routing in the Internet von Christian Hultema ist auch ein relativ gutes Buch, um zu lernen, wie Internet eigentlich funktioniert. Sprich, Routing innerhalb eines ISs, zwischen ASen, BGP und so weiter und so fort. Das ist da alles ziemlich gut drin erklärt. Also, wer hier nach der Veranstaltung da weitergehend sich beschäftigen möchte, dem würde ich das mal ans Herz legen, das zu lesen. Ja, wenn es keine weiteren Fragen gibt. Aus dem IRC haben gerade noch die Frage, bzw. aus dem Pad, ob sie Folien nachher auch zum Download geben würde, irgendwo. Ich denke doch, ja. Sonst keine Fragen aus dem Internet? Per Twitter kam gerade noch rein, um welche OSPF-Version es sich handelt, eins, zwei oder drei? OSPF eins ist tot. Das ist nie ausgerollt worden. OSPF v3 ist für IPv6 gedacht. Das ist also OSPF v2 offensichtlich, was wir hier tun. Deswegen auch das RFC zu Version 2. Okay. Und selbe Person fragt bei Twitter oder bemerkt bei Twitter noch an, da braucht man eigentlich keinen Port rausnehmen, wenn man den nicht einrichtet, zumindest bei v1. Das kommt auf die Implementierung an. Das hängt nicht am Protokoll. Das hängt auf der Implementierung deines Rooting-Demons ab, ob der auf den Link OSPF einschaltet oder nicht. Ich kenne keinen, der per Default überall OSPF anmacht. Es könnte ihn aber geben. Das sage ich jetzt mal so. Also, in Börd muss man für jeden Link auf dem OSPF sprechen, möchte es auch explizit einschalten. Das gilt auch für Juniper, Cisco, Quagger, weil es der Henker was noch so gibt. Okay. Twitter und IRC schweigen. Das ist gut. Dann danke ich. Wir machen jetzt 15 Minuten Pause und danach geht es mit einem kleinen Lab weiter, was euch hoffentlich deutlich weniger Schmerzen bereichen wird als das Static-Routing. Weil ihr euch nicht mehr mit Rooting-Information auseinandersetzen müsst ihr nur damit, dass OSPF auf Interfaces gesprochen wird. Euch.