Linux Advanced Routing & Traffic Control HOWTO

Bert Hubert

Thomas Graf (Section Author)
Gregory Maxwell (Section Author)
Remco van Mook (Section Author)
Martijn van Oosterhout (Section Author)
Paul B Schroeder (Section Author)
Jasper Spaans (Section Author)
Pedro Larroy (Section Author)

Eine sehr praktische Herangehensweise an iproute2, Traffic Shaping und ein bisschen netfilter.


Table of Contents
1. Widmung
2. Einführung
2.1. Haftungsausschluss & Lizenz
2.2. Vorkenntnisse
2.3. Was Linux für dich tun kann
2.4. Organisatorische Hinweise
2.5. Zugriff, GIT & Updates übertragen
2.6. Mailinglist
2.7. Layout des Dokuments
3. Einführung in iproute2
3.1. Warum iproute2?
3.2. iproute2-Tour
3.3. Voraussetzungen
3.4. Erkunde deine aktuelle Konfiguration
3.4.1. ip zeigt uns unsere Links
3.4.2. ip zeigt uns unsere IP-Adressen
3.4.3. ip zeigt deine Routen
3.5. ARP
4. Regeln (Rules) - Routing-Policy-Datenbank
4.1. Einfaches Quellenrichtlinien-Routing (source policy routing)
4.2. Routing für mehrere Uplinks/Provider (multiple uplinks/providers)
4.2.1. Geteilter Zugang
4.2.2. Load balancing
5. GRE und andere Tunnel
5.1. Ein paar Anmerkungen zu Tunneln:
5.2. IP in IP-Tunneling
5.3. GRE-Tunneling
5.3.1. IPv4 Tunneling
5.3.2. IPv6 Tunneling
5.4. Userland tunnels
6. IPv6-Tunneling mit Cisco und/oder 6bone
6.1. IPv6-Tunneling
7. IPSec: sichere IP übers Internet
7.1. Intro mit händischer Eingabe
7.2. Automatisches Verschlüsseln
7.2.1. Theorie
7.2.2. Beispiel
7.2.3. Automatische Verschlüsselung mit X.509-Zertifikaten
7.3. IPSec-Tunnel
7.4. Andere IPSec-Software
7.5. IPSec-Interoperabilität mit anderen Systemen
7.5.1. Windows
7.5.2. Check Point VPN-1 NG
8. Multicast routing
9. Warteschlangenlehre für Bandbreitenmanagement
9.1. Schlangen- (Queues) und Warteschlangenlehre erklärt
9.2. Einfach klassenlose Warteschlangenregeln (QDisc)
9.2.1. pfifo_fast
9.2.2. Token Bucket Filter
9.2.3. Statistisch faire Warteschlange
9.3. Hinweise bei der Benutzung von Queue
9.4. Terminologie
9.5. Klassenbasierende Warteschlangenregeln (classful qdisc)
9.5.1. Fluss innerhalb klassenbasierende QDiscs & Klassen
9.5.2. Die QDisc-Familie: Wurzeln, Handle, Geschwister und Eltern
9.5.3. Die PRIO QDisc
9.5.4. Die berühmte CBQ-QDisc
9.5.5. Hierarchischer Token Bucket
9.6. Klassifizieren von Paketen mittels Filter
9.6.1. Einige einfache Filter-Beispiele
9.6.2. Alle Filterkommandos die man normalerweise braucht
9.7. Das intermediate queueing Device (IMQ)
9.7.1. Beispielkonfiguration
10. Load sharing over multiple interfaces
10.1. Caveats
10.2. Other possibilities
11. Netfilter & iproute - marking packets
12. Advanced filters for (re-)classifying packets
12.1. The u32 classifier
12.1.1. U32 selector
12.1.2. General selectors
12.1.3. Specific selectors
12.2. The route classifier
12.3. Policing filters
12.3.1. Ways to police
12.3.2. Overlimit actions
12.3.3. Examples
12.4. Hashing filters for very fast massive filtering
12.5. Filtering IPv6 Traffic
12.5.1. How come that IPv6 tc filters do not work?
12.5.2. Marking IPv6 packets using ip6tables
12.5.3. Using the u32 selector to match IPv6 packet
13. Kernel network parameters
13.1. Reverse Path Filtering
13.2. Obscure settings
13.2.1. Generic ipv4
13.2.2. Per device settings
13.2.3. Neighbor policy
13.2.4. Routing settings
14. Advanced & less common queueing disciplines
14.1. bfifo/pfifo
14.1.1. Parameters & usage
14.2. Clark-Shenker-Zhang algorithm (CSZ)
14.3. DSMARK
14.3.1. Introduction
14.3.2. What is Dsmark related to?
14.3.3. Differentiated Services guidelines
14.3.4. Working with Dsmark
14.3.5. How SCH_DSMARK works.
14.3.6. TC_INDEX Filter
14.4. Ingress qdisc
14.4.1. Parameters & usage
14.5. Random Early Detection (RED)
14.6. Generic Random Early Detection
14.7. VC/ATM emulation
14.8. Weighted Round Robin (WRR)
15. Cookbook
15.1. Running multiple sites with different SLAs
15.2. Protecting your host from SYN floods
15.3. Rate limit ICMP to prevent dDoS
15.4. Prioritizing interactive traffic
15.5. Transparent web-caching using netfilter, iproute2, ipchains and squid
15.5.1. Traffic flow diagram after implementation
15.6. Circumventing Path MTU Discovery issues with per route MTU settings
15.6.1. Solution
15.7. Circumventing Path MTU Discovery issues with MSS Clamping (for ADSL, cable, PPPoE & PPtP users)
15.8. The Ultimate Traffic Conditioner: Low Latency, Fast Up & Downloads
15.8.1. Why it doesn't work well by default
15.8.2. The actual script (CBQ)
15.8.3. The actual script (HTB)
15.9. Rate limiting a single host or netmask
15.10. Example of a full nat solution with QoS
15.10.1. Let's begin optimizing that scarce bandwidth
15.10.2. Classifying packets
15.10.3. Improving our setup
15.10.4. Making all of the above start at boot
16. Building bridges, and pseudo-bridges with Proxy ARP
16.1. State of bridging and iptables
16.2. Bridging and shaping
16.3. Pseudo-bridges with Proxy-ARP
16.3.1. ARP & Proxy-ARP
16.3.2. Implementing it
17. Dynamic routing - OSPF and BGP
17.1. Setting up OSPF with Zebra
17.1.1. Prerequisites
17.1.2. Configuring Zebra
17.1.3. Running Zebra
17.2. Setting up BGP4 with Zebra
17.2.1. Network Map (Example)
17.2.2. Configuration (Example)
17.2.3. Checking Configuration
18. Other possibilities
19. Further reading
20. Acknowledgements