Implementierungen
Archivierte Anleitung
Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
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.
Quagga 🇬🇧 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.
BIRD 🇬🇧 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: LINX - BIRD Route Server Daemon Deployment ⮷
Übersichtstabelle¶
Verfügbare Implementierungen | |||
Quagga | BIRD | OLSRd | |
OSPF | Ja | Ja | Nein |
IS-IS | Ja (Hinweis beachten) | Nein | Nein |
RIP | Ja | Ja | Nein |
EIGRP | CISCO eigener Standard | ||
BGP | Ja | Ja | Nein |
RAdv | Ja | Ja | Nein |
OLSR | Nein | Nein | Ja |
Quagga - Beispiel¶
Benötigt werden folgende Pakete:
quagga
Befehl zum Installieren der Pakete:
sudo apt-get install quagga
Oder mit apturl installieren, Link: apt://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: Quagga-Dokumentation 🇬🇧. Für den schnelleren Einstieg dient eine Beispielanleitung 🇬🇧.
BIRD - Beispiel¶
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.
Adresszeile zum Hinzufügen des PPAs:
ppa:cz.nic-labs/bird
Hinweis!
Zusätzliche Fremdquellen können das System gefährden.
Ein PPA unterstützt nicht zwangsläufig alle Ubuntu-Versionen. Weitere Informationen sind der PPA-Beschreibung des Eigentümers/Teams cz.nic-labs zu entnehmen.
Nach dem Aktualisieren der Paketquellen wird folgendes Paket benötigt:
bird (ppa)
Befehl zum Installieren der Pakete:
sudo apt-get install bird
Oder mit apturl installieren, Link: apt://bird
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: Bird-Dokumentation 🇬🇧