Cisco IOS: Per-Tunnel QoS für DMVPN
DMVPN ist eine der elegantesten VPN-Arten, wenn man eine größere Anzahl von Außenstellen hat, die über das Internet verbunden sind. Leider ist die Konfiguration von Quality of Service (QoS) hierbei leicht eingeschränkt. Vor einiger Zeit habe ich es bei einem ersten Kunden gewagt, Per-Tunnel QoS zu konfigurieren. Gewagt deshalb, weil ich dafür von meinem Lieblings-IOS, 12.4(15)T, auf ein neueres IOS wechseln musste. Im aktuellen Fall hat sich 12.4(22)T5 als stabil und zuverlässig genug herausgestellt. Die vorher getestete Version 12.4(22)T4 hatte massive Speicherlecks und war noch nicht einsetzbar.
Was ist Per-Tunnel-QoS?
Beim DMVPN registriert sich der Spoke-Router per NHRP, um seine (dynamische) public IP beim Next-Hop-Server (NHS) zu registrieren. Dabei kann der Router gleich einen Gruppennamen mitgeben, der in der Per-Tunnel-QoS-Konfiguration verwendet wird. Auf dem Hub wird für jede Gruppe eine QoS-Konfiguration angewendet. Damit lässt sich z.B. für jeden Spoke-Router die Datenrate auf die in der Außenstelle verwendete Downstream-Geschwindigkeit shapen. Wenn in der Hauptstelle eine Internet-Anbindung mit 34 MBit/s vorhanden ist, würde man damit normalerweise fast jede Außenstelle überlasten. Mit Per-Tunnel-QoS lässt sich das individuell runter regeln und wichtiger Traffic kann auch priorisiert werden.
Die Spoke-Konfiguration
Diese beschränkt sich auf eine Zeile in der Konfiguration:
interface Tunnel1
description DMVPN-Tunnel Internet
...
ip nhrp group SDSL2000-Std
...
Der Gruppenname (hier SDSL2000-Std) wird auf der Hub-Seite für die Auswahl der richtigen Policy verwendet. In diesem Beispiel ist die Außenstelle mit einer 2 MBit/s SDSL-Leitung angebunden, in der kein Voice verwendet wird. Die 2 MBit/s-Außenstelle mit Voice benutzt dann z.B. den Gruppennamen SDSL2000-Voice.
Die Gruppen sind auf dem Hub sichtbar:
HUB-Router#sh ip nhrp
...
10.255.255.8/32 via 10.255.255.8
Tunnel1 created 2w5d, expire 01:43:49
Type: dynamic, Flags: registered used
NBMA address: 79.x.y.z
Group: SDSL2000-Std
10.255.255.9/32 via 10.255.255.9
Tunnel1 created 20:53:37, expire 01:46:01
Type: dynamic, Flags: registered
NBMA address: 88.x.y.z
Group: HSDPA-Std
10.255.255.16/32 via 10.255.255.16
Tunnel1 created 2w5d, expire 01:54:05
Type: dynamic, Flags: registered used
NBMA address: 80.x.y.z
Group: SDSL2000-Std
10.255.255.152/32 via 10.255.255.152
Tunnel1 created 2w5d, expire 01:29:46
Type: dynamic, Flags: registered
NBMA address: 80.x.y.z
Group: ADSL3000-Voice
...
Die Hub-Konfiguration
Auf dem Hub wird als Minimum eine Policy für Shaping konfiguriert, die von der NHRP-Gruppe abhängig ist:
policy-map SDSL2000-Std-Parent
class class-default
shape average 2000000
policy-map HSDPA-Std-Parent
class class-default
shape average 3000000
Diese Policy-Map wird im DMVPN-Tunnel an die Ziel-NHRP-Gruppe gebunden:
interface Tunnel1
description DMVPN-Tunnel Internet
ip nhrp map group HSDPA-Std service-policy output HSDPA-Std-Parent
ip nhrp map group SDSL2000-Std service-policy output SDSL2000-Std-Parent
Für alle Standorte, die diese NHRP-Gruppen verwenden, wird die ausgehende Datenrate auf zwei, bzw. auf drei MBit/s begrenzt.
Für die Standorte, die auch Voice benutzen, muss innerhalb dieser begrenzten Datenrate aber der Voice-Traffic bevorzugt werden. Dafür wird eine hierarchische Policy-Map konfiguriert:
class-map match-all EF-TRAFFIC
match dscp ef
!
policy-map ADSL3000-Voice
class EF-TRAFFIC
priority 256
class class-default
fair-queue
policy-map ADSL3000-Voice-Parent
class class-default
shape average 3000000
service-policy ADSL3000-Voice
Hier wird in der Parent-Policy der Traffic auf 3 MBit geshaped. In diesen drei MBit/s wird 256 kBit/s für Voice-Traffic priorisiert. Auch das weitere gewünschte QoS-Verhalten würde in der Child-Policy konfiguriert werden. In dem Tunnel-Interface wird dann auch hier die Parent-Policy an die NHRP-Gruppe gebunden:
interface Tunnel1
ip nhrp map group ADSL3000-Voice service-policy output ADSL3000-Voice-Parent
Die Wirkung der QoS-Implementierung kann man dann mit “show dmvpn detail” und “show policy-map multipoint” überprüfen:
HUB-Router#sh dmvpn detail
...
1 80.x.y.z 10.255.255.16 UP 20:38:56 D 10.255.255.16/32
NHRP group: SDSL2000-Std
Output QoS service-policy applied: SDSL2000-Std-Parent
1 80.x.y.z 10.255.255.152 UP 2w5d D 10.255.255.152/32
NHRP group: ADSL3000-Voice
Output QoS service-policy applied: ADSL3000-Voice-Parent
HUB-Router#sh policy-map multipoint
Interface Tunnel1 <--> 80.x.y.z
Service-policy output: ADSL3000-Voice-Parent
Class-map: class-default (match-any)
3643772 packets, 1136319199 bytes
5 minute offered rate 0 bps, drop rate 0 bps
Match: any
Queueing
queue limit 750 packets
(queue depth/total drops/no-buffer drops) 0/0/0
(pkts output/bytes output) 3744389/1409612078
shape (average) cir 3000000, bc 12000, be 12000
target shape rate 3000000
Service-policy : ADSL3000-Voice
queue stats for all priority classes:
Queueing
queue limit 64 packets
(queue depth/total drops/no-buffer drops) 0/0/0
(pkts output/bytes output) 1046668/312237672
Class-map: EF-TRAFFIC (match-all)
1045840 packets, 242902872 bytes
5 minute offered rate 0 bps, drop rate 0 bps
Match: dscp ef (46)
Priority: 256 kbps, burst bytes 6400, b/w exceed drops: 0
Class-map: class-default (match-any)
2597932 packets, 893416327 bytes
5 minute offered rate 0 bps, drop rate 0 bps
Match: any
Queueing
queue limit 686 packets
(queue depth/total drops/no-buffer drops/flowdrops) 0/0/0/0
(pkts output/bytes output) 2697721/1097374406
Fair-queue: per-flow queue limit 171
...
Verbleibende potentielle Probleme:
Auch Per-Tunnel QoS löst natürlich nicht alle Probleme. Wenn man z.B. mehrere Hubs hat, die Traffic zu den Spokes senden, dann weiß Hub1 nicht, wieviel Traffic Hub2 sendet. Auch haben die Hubs keine Information, ob die Spokes evtl. durch lokalen Internet-Traffic oder aber durch Spoke-to-Spoke-Kommunikation überlastet sind. Trotzdem kann die Kommunikation mit diesem Modell in vielen Fällen optimiert werden.
Zusätzlich werden einzelne Pakete durch das Shaping evtl. länger zurückgehalten, wodurch sich die Reihenfolge der IPSec-Pakete ändern kann. Der Replay-Buffer der Router muss also deutlich vergrößert oder der Replay-Check gar komplett ausgeschaltet werden:
crypto ipsec security-association replay window-size 1024
no crypto ipsec security-association replay window-size
Bye, Bye Cisco Security Agent
Den CSA (Cisco Security Agent) habe ich eigentlich recht gut gefunden. 2003 hat Cisco ihr HIPS-Produktportfolio mit dem Aufkauf der Firma Okena abgerundet. Aufgrund des hohen Preises hatte ich zwar keine Kunden für dieses Produkt, aber auf etlichen eigenen Windows-PCs lief er früher bei mir und hat den einen oder anderen Angriff abgehalten.
Nun ist er abgekündigt, es gibt keinen direkten Cisco-Nachfolger:
EOL for the Cisco Security Agent
Ab jetzt mit dem iPad unterwegs
Ziemlich schnell war mir klar, dass ich mir das iPad kaufen will. Alles, was sonst so an e-Book-Readern angeboten wurde, gefiel mir einfach nicht (das Lesen von PDFs ist mein geplantes Haupt-Einsatzgebiet; Mail und Web ist natürlich auch nicht schlecht) oder ist nicht lieferbar. Die Frage war nur, welche Version es sein sollte. Die 32GB-Version hätte mir sicher gereicht, mit der UMTS-Version habe ich von vornherein geliebäugelt. Auch an die WiFi-only-Version habe ich gedacht, denn ein MiFi, oder das Huawei-E5830, von dem ich gerade bei Tom Schimana gelesen habe, hätte dafür sorgen können, dass ich mit einem UMTS-Gerät für Notebook, iPad und Handy auskäme. So richtig darüber nachgedacht habe ich noch nicht, denn als ich die Vorbestellungs-Termine für den 28. Mai und dann auch noch für den 7. Juni verpasst habe, bin ich sowieso davon ausgegangen, erst Ende Juni ein iPad zu bekommen. Als ich aber gestern Vormittag bei meinem lokalen Apple-Dealer angerufen habe, waren doch tatsächlich noch welche vorrätig. Auf die Schnelle habe ich mich für ein Gerät mit 32GB und UMTS entschieden, dieses war dann aber doch schon ausverkauft, als ich in den Laden kam (Vor dem Apple-Store zu übernachten, schien mir dann doch ein wenig übertrieben!). Das iPad mit 64GB und UMTS war allerdings noch da … Naja, eigentlich kann man nie genug Speicher haben … Und wenn schon eines verfügbar ist, dann muss man natürlich zugreifen.
Welche Programme (sorry, Apps natürlich …) benötige ich:
1Password: Vor einiger Zeit schon bin ich auf dem MAC von KeepassX auf 1Password umgestiegen, da sich das einfach sehr gut in den Browser integriert. Die iPad-Version ist zwar ziemlich teuer, aber der Komfort synchronisierter Passwörter ist es wert, auch wenn die iPad-Version bei weitem nicht so komfortabel ist, wie die MAC-Version.
GoodReader: Ein sehr guter PDF-Betrachter. Entgegen meinen ersten Befürchtungen lassen sich Dokumente auf dem iPad sehr gut lesen. Das Glossy-Display, welches ich bei den Notebooks überhaupt nicht mag, stört so gut wie überhaupt nicht. Die Fingerabdrücke (meine Frau stand sofort mit einem Lappen hinter mir!!!!
) sind aber schon ein wenig nervig.
Clients für SSH, RDP und VNC suche ich noch.
Mental Case lässt leider noch auf sich warten. Das benutze ich zum Lernen auf dem MAC und warte jetzt auf die iPad-Version.
iWork und OmniGraffle benutze ich auf dem MAC; mit den iPad-Versionen könnte man auch unterwegs arbeiten, ohne immer das Notebook herausholen zu müssen. Vermutlich werde ich damit aber bis zur iPad-Software 4 warten, denn ohne eine gescheite Möglichkeit, zwischen den Programmen zu wechseln, ist das “richtige” Arbeiten nicht wirklich gut möglich.
Tja, und der Rest muss sich zeigen.
Tagebuch eines DRM-Opfers
Cisco hat sich schon vor einiger Zeit entschieden, die von den Trainern benötigten Kursunterlagen, als DRM-geschützte PDFs an seine CCSIs (Cisco Certified Systems Instructors) herauszugeben. Das hat mich mit meinen Kursen (hauptsächlich CCSP und CCIP) bisher nicht gestört, da die noch alle als PPT vorlagen. Aber für die neuen Kursversionen musste ich mich jetzt auch damit befassen:
Tag 0: Eine E-Mail erreicht mich, in der mir beschrieben wird, wie ich den Locklizard PDF-Viewer herunter laden kann. Sowohl Windows, als auch MacOS sind die unterstützten Plattformen. Erste Ernüchterung, die Mac-Version kann nicht drucken. Die Software ist trotzdem schnell installiert.
Tag 1: Ich verbringe ca. zwei Stunden auf der Cisco-Seite, auf der Suche nach den Downloads der Trainer-Materialien. An der Stelle, an der man den Download starten möchte, lädt der Browser immer automatisch eine .exe herunter. Einen Mac-User bringt das aber nur bedingt weiter.
Tag 2: Auf der Seite kann man per Chat Hilfe anfordern. Dies mache ich und werde in freundlicher deutscher Sprache im Chat begrüßt: “Guten Tag Karsten Iwen, mein Name ist Harish, wie kann ich Ihnen helfen?” Auf Deutsch formuliere ich mein Problem, erste Antwort, “please send your question in english”.
Alles noch einmal auf Englisch formuliert. Bekomme dann die Antwort, dass es zwar einen Viewer für den Mac gibt, aber der Download zwingend unter Windows erfolgen muss.
Ich starte meine VM-Session, da kommt von Harish der Nachsatz “weder der Downloader, noch der Viewer funktionieren in einer VM”. Klasse.
Tag 3: Ich stelle fest, dass ich keinen PC mit Windows mehr habe. Auch alle PCs in meinem Lab laufen mit Linux und mein Arbeits-Rechner ist halt der MAC. Windows ist zwar in mehreren Version vorhanden, aber immer virtualisiert. Ich mache ein Notebook platt und installiere ein XP, zu welchem ich noch eine CD gefunden habe.
Tag 4: Von dem Win-Notebook (komplett installiert und durchgepatched) lade ich die Download-Anwendung erneut herunter. “Die Anwendung konnte nicht richtig initialisiert werden (0xc0000135). Klicken Sie auf OK, um die Anwendung zu beenden”. Im Chat ist wieder Harish.
Harish: “ich solle nur ein oder zwei Dateien zur Zeit herunterladen”
Ich: “Aber die Software läuft noch nicht einmal, sie stürzt beim Starten ab”
Harish , einige Minuten später: “ist es eine nicht-Win-Umgebung?”
Ich: “WinXP SP3″
Harish will meine CCO-ID haben, ich frage ob eventuell .NET benötigt wird, den Hinweis habe ich bei Google gefunden.
Harish , einige Minuten später: “ich müsse sicherstellen, dass zum Download die Ports 80, 443 und 21 offen sind”
Ich: “so weit bin ich noch nicht, die Anwendung startet nicht”
Harish, einige Minuten später: “Ob ich das .NET-Framework 2.0 installiert hätte, das würde nämlich benötigt”
Ich: sprachlos …
Tag 5: .NET ist installiert, jetzt kann der Download endlich losgehen. Oder doch nicht? Nach ca. 50 MB stoppt das Download-Programm einfach und lädt nicht mehr weiter … Neustart hilft nicht. Irgendwie habe ich jetzt schon keine Lust mehr!
Tag 6 (genauer eine Woche später): Der Download hat geklappt! Ich kopiere die Dateien auf meinen Mac, auf dem ich die Lizenz installiert habe. Leider lassen sich die meisten Dateien nicht öffnen: “Invalid server response”.
Tag 7: Harish ist wieder im Chat, ich schildere mein Problem. Ich deinstalliere die Lizenz, installiere sie erneut und muss mehrmals erklären, dass ich die Dateien nicht öffnen kann. Harishs Antwort, dass das Problem beim Drucken auftaucht, bringt mich irgendwie nicht weiter, denn dass das nicht auf dem MAC geht, ist ja dokumentiert. Nach einer halben Stunde kommt Harish auf die Idee, meine Lizenz neu zu erzeugen. Nach der erneuten Installation ist das Problem aber immer noch da. Harish muss erstmal das “concern department” kontaktieren und will sich dann wieder melden.
Später: Per e-Mail erfahre ich, dass die Probleme gelöst seien und jetzt alles funktionieren soll. Öffnen lassen sich die Dokumente leider immer noch nicht.
Noch einmal später: Bei weiteren Tests merke ich, dass man es nur mehrmals hintereinander probieren muss. Eine Datei öffnete nach fünf Fehlversuchen, eine andere nach 17 Fehlversuchen (alle mitgezählt, nachdem mir das aufgefallen ist).
Tag 8: Shan vom Cisco Marketplace Support Team mailt mir, dass ich für drm.mediuscorp.com einen statischen Host-Eintrag anlegen müsse. Ich entgegne, das DNS funktioniert (inklusive DIG-Ausgabe), füge den Eintrag aber trotzdem hinzu, um bei der Problemlösung mitzuarbeiten. Der Fehler ist erwartungsgemäß trotzdem nicht weg.
Später: Shan schlägt vor, die Lizenzdatei zu bearbeiten und die URL zum DRM-Server von https auf http zu ändern. Schlechte Idee, denn danach lässt sich die Lizenz überhaupt nicht mehr installieren.
Tag 9: Harish schlägt vor, die Software zu deinstallieren und neu von vorne anzufangen. Schon bevor ich das gemacht habe, wusste ich eigentlich, wie viel das bringen würde …
Um das Problem weiter zu ergründen, wollte ich die Lizenz auf einem Windows-Rechner installieren, nachdem ich die Lizenz auf dem MAC deaktiviert habe. Geht leider auch nicht, da ich “keine Lizenz zur Verfügung habe …”. Ich will überhaupt nicht die Stunden zählen, die ich mit diesem Kram schon verbracht habe.
Tag 10 (wieder eine gute Woche später): Ich habe eine Lösung gefunden. Mein Plan, diese Arbeit unter MacOS zu machen, war von vornherein zum Scheitern verurteilt. Der Mac-Viewer mag zwar zum Lesen von Dokumenten geeignet sein, aber nicht, um Präsentationen zu zeigen. So hat er z.B. keinen Vollbildmodus und auch keine sinnvolle Tastatur-Steuerung zum Wechseln der Seiten. Von der fehlenden Unterstützung einer Fernbedienung mal ganz abgesehen. Auf meine diesbezügliche Anfrage beim Support habe ich dann auch überhaupt keine Antwort bekommen.
Ich habe jetzt Bootcamp installiert und dort eine neue Lizenz aktiviert, was dann auch funktioniert hat. Jetzt muss ich für Trainings zwar immer neu booten und habe auch keinen Zugriff auf meine normale Arbeits-Umgebung, um mal etwas aus der Reihe zu zeigen, wie z.B. aus GNS3. Aber zumindest komme ich mehr oder weniger an die Dokumente. Wie ich mich damit auf neue Kurse oder Kurs-Versionen vorbereiten kann, weiß ich aber noch nicht. Denn um mal nebenbei in den Unterlagen zu lesen, müsste ich ja auch neu booten (die Benutzung einer VM widerspricht den Lizenzbedingungen). Und das Ausdrucken ist nur auf lokale Drucker erlaubt (und das auch nur zweimal), aber alles, was ich für diese eher umfangreichen Druckjobs an Druckern zur Verfügung habe, sind Netzwerk-Drucker.
Bleiben mir nur die folgenden Gedanken:
- Derjenige, der sich das ausgedacht hat, der hat noch nie vor einer Klasse gestanden! Denn vor dem Training hat man anderes zu tun, als darüber zu grübeln, ob man überhaupt seine Unterlagen öffnen kann.
- Warum nur hasst Cisco seine Trainer so abgrundtief, dass die so etwas machen???
- XKCD und Brad Colbow haben halt doch Recht.
- Ich fühle mich darin bekräftigt, doch lieber eigene Workshops zu machen. Bei denen arbeite ich entweder am Whiteboard (für manche Sachen habe ich auch Slides) oder die Teilnehmer sitzen an der Konsole. Das macht einfach mehr Spaß.
- Bei der Suche nach einer Lösung bin ich auch auf den “LockLizard PDC Un Protector” gestoßen. Aber wer den benutzt, muss als “Raubkopierkinderschandmörder” bestimmt gleich mit einer Hausdurchsuchung rechnen.
Weiterhin sind diese Crackprogramme sowieso nur “Trojanerschleudern” und schon deshalb nicht zu benutzen.
IPv6 readiness
Bei Jens Link habe ich einen Hinweis auf die “Test your IPv6 connectivity”-Seite gefunden. Und ja, ich denke, das sieht gut aus:
![]()
Aber die “Real-Life”-Geschwindigkeit wurde dabei nicht getestet. Und die ist mit dem HE-Tunnel leider nicht wirklich gut.
Die Bahn mal wieder
Eigentlich wollte ich heute von Hamburg nach München fliegen. Aber das durfte heute vermutlich nicht einmal Superman. Da das gestern aber schon absehbar war, habe ich mir vorsorglich ein Bahnticket gekauft. Auf “Genuss in vollen Zügen” habe ich mich dabei auch eingestellt, auch wenn es in der Presse hieß, dass die Bahn zusätzliche Züge einsetzen will. Und das hat sie vermutlich auch. Und damit auf einer anderen Strecke ein zusätzlicher Zug möglich ist, fiel “mein” ICE halt aus. Naja, das ist eben meine Theorie, die durch lange Zeit der Erfahrungssammlung mit der Bahn entstanden ist.
Pünktlichkeit
Gerade will ich meinen Flug zur diesjährigen Networkers in Las Vegas buchen. Continental Airlines bietet sich durchaus an, da die von Hamburg aus mit nur einem Stop fliegen. Aber bei manchen Angaben fragt man sich schon, ob man nicht einige Tage vorher losfliegen müsste, um pünktlich anzukommen:

Und wer sich dann entscheidet, doch über Houston zu fliegen, der hat ganz schlechte Karten:

Aber überhaupt so eine Statistik zu haben, finde ich schon gut.
Es geht voran mit IPv6
So werden morgen z.B. für 24 Stunden die DNS-Rootserver abgeschaltet, um sie für IPv6 umzurüsten. Danach werden allerdings Benutzer älterer Systeme wie Windows XP offline bleiben.
Nähere Informationen gibt es bei tagesschau.de.
Überprüfen von ASA-Konfigurationen
Bisher galt Nipper als Werkzeug der Wahl, um Router-Konfigurationen zu überprüfen. Für die Cisco ASA kommt mit Flint ein neuer Kandidat ins Spiel, der recht zuversichtlich aussieht.
Flint kann als fertige VM heruntergeladen oder aber aus den Sourcen installiert werden. Über ein Web-Interface übergibt man die ASA-Konfiguration, die dann auf Konfigurations-Probleme untersucht wird.
Noch merkt man Flint den frühen Versions-Stand (aktuell 1.0.4) an. Ein paar Bugs sind noch drin, Probleme werden angeprangert, die nicht wirklich Probleme sind und manche Konfigurationszeilen kann Flint überhaupt nicht analysieren. Trotzdem sollte Flint in keiner Werkzeugkiste eines ASA-Admins fehlen. Und auch Benutzer anderer Firewalls sollen Flint später benutzen können. Laut Readme ist die Unterstützung von Cisco IOS, BSD PF und Linux IP-Tables geplant.
Den Hinweis auf Flint habe ich auf darknet.org.uk gefunden.
Softwareauswahl für ein “christliches” Linux
Bei Jesux sieht das dann z.B. so aus:
qmail replaces sendmail as the standard MTA (sendmail was written by a prominent homosexual)
Bei unseren Kirchen gibt es sowas ja zum Glück nicht, oder?
Den Link darauf habe ich bei Kristian Köhntopp gefunden.


