[[Vorlage(Archiviert)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:sudo: Root-Rechte] }}} In diesem Artikel geht es um Implementierungen für [:Dynamisches Routing:]. Das Feld der verfügbaren Implementierungen teilt sich in zwei Routing-Suites und spezielle Einzelimplementierungen. Bei den Suites stehen sich Quagga und BIRD gegenüber. Beide decken ungefähr den gleichen Funktionsumfang ab. * [http://www.nongnu.org/quagga/ Quagga] {en} ist die ältere Implementierung, wird aber u.a. von Canonical weiterentwickelt. Die Suite startet für jedes Protokoll einen eigenen Daemon, die untereinander kommunizieren. Das hat den Vorteil, dass einzelne Daemonen abstürzen können, ohne gleich den ganzen Router unbrauchbar zu machen. Für Linux-Systeme ungewöhnlich gestaltet sich die Konfiguration der Daemonen. Jeder Daemon macht einen Telnetport auf, über den er Befehle entgegen nimmt. Diese Befehlssyntax ähnelt stark der CISCO Syntax. Prinzipiell ist es möglich, die Daemonen mit einer Minimalkonfiguration zu starten, via Telnet on-the-fly zu konfigurieren und abschließend die Konfiguration speichern zu lassen. * [http://bird.network.cz/ BIRD] {en} entstand ursprünglich als Studentenprojekt, hat sich mittlerweile aber als ernstzunehmende Alternative zu Quagga etabliert. Einige Internet-Exchanges setzten zum Beispiel auf BIRD anstatt auf Quagga. In den Publikationen wird sowohl die Performance als auch die Stabilität gegenüber Quagga hervorgehoben. BIRD bietet zwar auch ein Commandline-Interface, ist jedoch nicht über Telnet erreichbar und dient auch nicht zur Konfiguration. Die komplette Konfiguration läuft UNIXartig über eine einfach gehaltene Konfigurationsdatei. Quelle: [https://www.uknof.org.uk/uknof15/Preston-Routeserver.pdf LINX - BIRD Route Server Daemon Deployment] {dl} == Übersichtstabelle == {{{#!vorlage Tabelle <-4 tablestyle="width: 75%;" rowclass="titel">Verfügbare Implementierungen +++ <:>Quagga <:>BIRD <:>OLSRd +++ OSPF Ja Ja Nein +++ IS-IS Ja (Hinweis beachten) Nein Nein +++ RIP Ja Ja Nein +++ EIGRP <-3:>CISCO eigener Standard +++ BGP Ja Ja Nein +++ RAdv Ja Ja Nein +++ OLSR Nein Nein Ja }}} ##aasche: obsolet ##{{{#!vorlage Hinweis ##In den Paketquellen von Ubuntu 10.04 wird die Quagga Suite in Version 0.97.3 ausgeliefert. Diese enthält die IS-IS Implementierung (`isisd`). Der aktuelle Quellcode enthalten diesen Daemon ebenfalls. Jedoch ist die Projektseite nicht mehr erreichbar und auch auf der Quagga-Projektseite bzw. im Referenzhandbuch wird die Implementierung nicht mehr erwähnt. Aufgrund fehlender Hardware konnte nicht getestet werden, ob die Quagga-Implementierung mit anderen IS-IS Implementierungen zusammenarbeitet. ##}}} == Quagga - Beispiel == Benötigt werden folgende Pakete: {{{#!vorlage Paketinstallation quagga }}} Nach der Installation findet man unter '''/etc/quagga/''' zwei Konfigurationsdateien: * '''daemons''' und * '''debian.conf''' In '''daemons''' wird definiert, welche Dienste gestartet werden sollen. Der Zebra-Dienst wird immer gebraucht, wenn Routen in den Kernel exportiert werden sollen. {{{ zebra=yes bgpd=no ospfd=yes ospf6d=no ripd=no ripngd=no isisd=no }}} Die Datei '''debian.conf''' legt fest, auf welchen Interfaces die Telnet-Ports aufgemacht werden. Standardmäßig wird dort an das Loopback-Interface gebunden. Für den einfachen Start findet man unter '''/usr/share/doc/quagga/examples''' Beispielkonfigurationen für alle Dienste (Daemonen). Hier ein sehr einfaches OSPF-Beispiel: '''/etc/quagga/zebra.conf''': {{{ !setzt den Routernamen hostname ospf-router !aktiviert das Logging über syslog log syslog !starte Konfiguration für Interface br0 interface br0 !Aktiviert die Überwachung des Medialinks link-detect interface ath1 link-detect }}} '''/etc/quagga/ospf.conf''': {{{ log syslog !Starte Konfiguration des br0 Interfaces für OSPF-Parameter interface br0 !Das Interface hat die fiktiven Kosten 10. Dieser Wert wird für die Gewichtung der besten Route benutzt. ip ospf cost 10 !Ein HELLO-Packet wird alle 30 Sekunden an die Nachbarn verteilt. WICHTIG: Dieser wert muss bei allen Teilnehmern gleich sein. ip ospf hello-interval 30 !Bei einer fehlgeschlagenen Aktualisierung wird das Paket nach 5 Sekunden wiederholt. ip ospf retransmit-interval 5 !Meldet sich ein Router nach 120 Sekunden nicht, wird er als "nicht verfügbar" angesehen und seine Routen werden verworfen. ip ospf dead-interval 120 ip ospf network broadcast !Aktiviere OSPF router ospf !setzt die Router-ID - wird zum Bestimmen des "designated Routers" benötigt. ospf router-id 10.10.69.2 !Aktiviere OSPF auf br0 (diesem ist 10.10.69.2 zugeordnet network 10.10.69.0/24 area 0 !Verteile (statische) Routen die im Kernel hinterlegt wurden redistribute kernel !Verteile alle direkt angeschlossenen Netzwerke redistribute connected !Aktiviere logging für diverse Events debug ospf ism status debug ospf nsm status debug ospf zebra }}} Im Beispiel sind an den Router zwei Netzwerkinterfaces angeschlossen, jedoch wird OSPF nur auf dem `br0`-Interface betrieben. Eine komplette Dokumentation aller Konfigurationsbefehle gibt es hier: [http://www.nongnu.org/quagga/docs.html Quagga-Dokumentation] {en}. Für den schnelleren Einstieg dient eine [http://openmaniak.com/quagga_tutorial.php Beispielanleitung] {en}. == BIRD - Beispiel == {{{#!vorlage Hinweis Die BIRD-Version, die mit Ubuntu 12.04 und 14.04 ausgeliefert wird, ist stark veraltet. Einige Funktionen werden noch nicht unterstützt und die verwendete iBGP-Implementierung entspricht nicht dem Standard. Ein "Personal Package Archiv" (PPA) wird direkt vom Entwickler angeboten und gepflegt. }}} [[Vorlage(PPA, cz.nic-labs/bird)]] Nach dem Aktualisieren der Paketquellen wird folgendes Paket benötigt: {{{#!vorlage Paketinstallation bird, ppa }}} Nach der Installation findet man die Konfiguration unter '''/etc/bird/bird.conf'''. Hier ein einfaches OSPF-Beispiel: {{{ #Aktiviert das Logging über syslog log syslog all; #setzt die Router-ID (wird zum bestimmen router id 10.11.0.1; protocol kernel { #Alle gelernten Routen werden dem Kernel bekannt gemacht. export all; } protocol device { #Überprüft die Interfaces alle 60 Sekunden scan time 60; } protocol ospf { #Legt fest was geloggt werden soll. debug { states, routes, interfaces }; area 0 { interface "eth0" 10.10.69.0/24 { cost 10; #legt die Kosten für die Route fest. type broadcast; hello 30; #Ein HELLO-Packet wird alle 30 Sekunden an die Nachbarn verteilt. WICHTIG: Dieser Wert muss bei allen Teilnehmern gleich sein. retransmit 5; #Bei einer fehlgeschlagenen Aktualisierung wird das Paket nach 5s wiederholt. wait 10; #Nach dem Hochfahren des Dämons wird 10s gewartet, bis die Wahl des Designated Routers gestartet wird. dead 120; #Meldet sich ein Router nach 120s nicht, wird er als "nicht verfügbar" angesehen und seine Routen werden verworfen. authentication none; #Es wird keine Authentifizierung der LSA-Pakete vorgenommen. check link; #Der MediaLink wird überprüft. }; interface "eth1.1" 192.168.99.0/24 { cost 10; #legt die Kosten für die Route fest. stub; #OSPF-Bird propagiert keine angeschlossenen Netzwerk. Um ein Lokales Netz bekannt zu machen, aber nicht als OSPF-Netz zu nutzen, wird STUB verwendet. check link; }; } }}} Wie im Quagga-Beispiel wird hier ein Netz für OSPF freigeschaltet, ein weiteres wird nur bekannt gemacht. Eine komplette Dokumentation aller Konfigurationsbefehle gibt es hier: [http://bird.network.cz/?get_doc&f=bird.html Bird-Dokumentation] {en}