|
| |
Bandbreiten-, Traffic- und Packet-Shaping unter GNU/Linux
Administration :
Networking : Traffic Shaping : Übersicht
18-Dec-2004/09-Jan-07
Übersicht
Traffic Shaping ist ein Verfahren in der Telekommunikation, bei
dem beim Senden der Fluss von IP-Paketen, ATM-Zellen, Ethernet-Frames oder
anderen Transfer-Einheiten nach definierten Kriterien gesteuert wird. Er ist
unidirektional, d.h. er arbeitet im Gegensatz zur Datenflusskontrolle ohne
Steuerinformationen der Gegenseite. Kriterien können z.B. Prioritäten sein
oder auch der Zell-Jitter. Traffic Shaping kann erforderlich werden, um
bestimmte Dienste wie Voice-over-IP störungsfrei nutzen zu können.
Um den Netzwerkverkehr kontrollieren zu können, ist eine Klassifikation
der Inhalte des Datenstroms erforderlich (z.B. mit
Iptables); Bandbreiten-,
Traffic- und Packet-Shaping sind daher eng verwandt mit Congestion
Management und Quality of Service (QoS).
Der Linux-Kernel unterstützt seit
der Version 2.2 Traffic Shaping; seit Version 2.4.20 wurde die Unterstützung
so weit verbessert, dass es meist nicht mehr notwendig sein dürfte, den
Kernel zu patchen. Die wichtigsten Shaping-Tools sind im Paket Iproute2
enthalten; mit Tcng kann die Konfiguration von Tc vereinfacht
werden.
Tools
Das Paket Iproute2
bzw. Tc (Traffic Control) besteht im
Wesentlichen aus folgenden Tools:
- tc: The main command
- ip: The main command
- tc-bfifo: Byte limited First In First Out
(redirect to pbfifo)
- tc-filter: tc filters in depth
- tc-cbq: The Class Based Queueing qdisc
- tc-cbq-details: The Class Based Queueing
qdisc in gory detail
- tc-dsmark: The DiffServ qdisc
- tc-htb: The Hierarchy Token Bucket qdisc
- tc-pbfifo: Packet & byte limited First In
First Out
- tc-pfifo: Packet limited First In First
Out (redirect to pbfifo)
- tc-pfifo_fast: Default three-band
scheduler
- tc-prio: N-band classful scheduler
- tc-red: Random Early Detection
- tc-sfq: Stochastic Fairness Queueing
- tc-tbf: Token Bucket Filter
Weitere Hilfsmittel (bei
Debian
GNU/Linux installierbar über
apt-get):
- iprelay: User-space bandwidth shaping TCP proxy daemon
- libapache-mod-iptos: Modify IPTOS bits on outbound data for
fine-tuned traffic shaping
- shaper: Traffic shaper init script (cbq.init) for Linux
- shorewall: Shoreline Firewall (Shorewall),
unterstützt Traffic Shaping
- wondershaper: Easy to use traffic shaping script
Konfiguration
Mit dem Userspace-Kommando ip kann man die aktuelle Konfiguration
anzeigen lassen.
Links
Anzeigen der Links:
gw:~# ip link list 1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:04:76:1b:52:34 brd ff:ff:ff:ff:ff:ff 3: eth1: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:01:02:f0:96:9b brd ff:ff:ff:ff:ff:ff 4: sit0: <NOARP> mtu 1480 qdisc noop link/sit 0.0.0.0 brd 0.0.0.0 5: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP> mtu 1492 qdisc pfifo_fast qlen
30 link/ppp
IP-Adressen
Anzeigen der IP-Adressen:
gw:~# ip address show
1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 brd 127.255.255.255 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen
1000
link/ether 00:04:76:1b:52:34 brd ff:ff:ff:ff:ff:ff
inet 192.168.101.1/24 brd 192.168.101.255 scope global eth0
inet6 fe80::204:76ff:fe1b:5234/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen
1000
link/ether 00:01:02:f0:96:9b brd ff:ff:ff:ff:ff:ff
inet6 fe80::201:2ff:fef0:969b/64 scope link
valid_lft forever preferred_lft forever
4: sit0: <NOARP> mtu 1480 qdisc noop
link/sit 0.0.0.0 brd 0.0.0.0
5: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP> mtu 1492 qdisc pfifo_fast
qlen 30
link/ppp
inet 62.158.3.127 peer 217.5.98.87/32 scope global ppp0
Routen
Anzeigen der Routen:
gw:~# ip route show
217.5.98.87 dev ppp0 proto kernel scope link src 62.158.3.127
192.168.101.0/24 dev eth0 proto kernel scope link src 192.168.101.1
default via 217.5.98.87 dev ppp0
Zum Vergleich die Ausgabe des alten Route-Kommandos:
gw:~# route -n
Kernel IP Routentabelle
Ziel Router Genmask Flags Metric Ref Use Iface
217.5.98.87 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
192.168.101.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 217.5.98.87 0.0.0.0 UG 0 0 0 ppp0
ARP
Anzeigen der aktuellen ARP-Tabelle (vgl. Address Resolution
Protocol, RFC 826,
www.faqs.org/rfcs/rfc826.html):
gw:~# ip neigh show
2001:6c8:6:1::3 dev eth0 nud failed
192.168.101.129 dev eth0 lladdr 00:0c:6e:1f:2a:76 nud reachable
Rules
Aneigen der Routing policy database (Rules):
gw:~# ip rule list
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
Einfaches Source Policy Routing
Lokale Routing-Tabelle:
gw:~# ip route list table local
broadcast 192.168.101.255 dev eth0 proto kernel scope link src
192.168.101.1
broadcast 127.255.255.255 dev lo proto kernel scope link src
127.0.0.1
broadcast 192.168.101.0 dev eth0 proto kernel scope link src
192.168.101.1
local 192.168.101.1 dev eth0 proto kernel scope host src
192.168.101.1
broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1
local 62.158.3.127 dev ppp0 proto kernel scope host src 62.158.3.127
local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1
local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1
»Main«-Tabelle:
gw:~# ip route list table main
217.5.98.87 dev ppp0 proto kernel scope link src 62.158.3.127
192.168.101.0/24 dev eth0 proto kernel scope link src 192.168.101.1
default via 217.5.98.87 dev ppp0
Kernel
Thomas M. Eastep, Autor der
Shoreline Firewall (Shorewall),
beschreibt unter
www.shorewall.net/traffic_shaping.htm ausführlich die von ihm
eingesetzte Konfiguration für Traffic Shaping/ Control. Er verwendet
dazu folgende Kernel-Parameter:

Abbildung: Screenshot von einer exemplarischen
QoS-Konfiguration des Linux-Kernels (Quelle:
www.shorewall.net/images/QoS.png; Zugriff: 18-Dec-2004; Lizenz:
GNU FDL)
Anwendungsbeispiel
Beim TCP/IP-Datenverkehr muss der Empfang einer bestimmten Menge an Daten
von der Gegenseite bestätigt werden, bevor der Sender neue Daten versenden
darf. Kommen diese Empfangsbestätigungen nicht schnell genug, muss der
Sender warten und es kommt zu Verzögerungen und Einbrüchen der Transferrate.
Gerade bei ADSL kann es
passieren, dass man einen Download ausbremst, indem man den Rückkanal (der
ohnehin die kleinere Bandbreite hat) mit einem Upload verstopft, so dass
nicht mehr genügend Bandbreite für die Empfangsbestätigungen des Downloads
zur Verfügung steht. Verzögerungen innerhalb der DSL-Strecke tun ihr
übriges, sodass durch Uploads die Transferrate der Downloads einbricht.
Um diesen Effekt zu kompensieren, erhöhen einige DSL-Treiber bzw.
Tuning-Programme die TCP Window-Größe, so dass der Sender mehr Daten
verschicken darf, bevor er auf eine Empfangsbestätigung warten muss. Dieser
Vorteil wird aber durch eine deutliche Erhöhung der Latenz (Ping-Zeiten)
erkauft, so dass das Surfen während eines Datentransfers ungewöhnlich
langsam ist. Messungen haben ergeben, dass Werte für die TCP Window-Größe
über 64k sowieso "nichts mehr bringen", d.h. trotz riesiger Windows kommt
man nicht auf den vollen Datendurchsatz.
Das Traffic Shaping analysiert nun den anfallenden Datenverkehr in beide
Richtungen und priorisiert die Datenpakete so, dass Uploads die DSL-Strecke
nicht mehr verstopfen und Downloads sich nicht gegenseitig ausbremsen. Dies
bringt folgende Vorteile:
- Volle Download-Rate trotz Uploads,
- Volle Download-Rate bei mehreren Downloads und Uploads,
- Responsives Verhalten beim Surfen (bessere Ping-Zeiten)
Siehe auch
Netmarks
Iproute2,
www.tux.org/pub/net/ip-routing.
Netfilter/Iptables,
www.netfilter.org.
Shane Chen: Linux traffic shaping,
www.knowplace.org/shaper,
www.knowplace.org/shaper/protocols.html ,
www.knowplace.org/shaper/qdisc.html,
www.knowplace.org/shaper/requirements.html,
www.knowplace.org/shaper/examples.html,
www.knowplace.org/shaper/resources.html.
LARTC.org: Linux advanced Routing & Traffic Control HOWTO,
lartc.org (ASCII,
HTML,
PostScript,
PDF).
ADSL Bandwidth Management HOWTO,
www.ibiblio.org/.../ADSL-Bandwidth-Management-HOWTO.html
Linux 2.2 Packet Shaping HOWTO,
svana.org/kleptog/Packet-Shaping-HOWTO.txt.
The Traffic Control HOWTO,
www.tldp.org/HOWTO/Traffic-Control-HOWTO.
Quality of Service Networking,
www.cisco.com/univercd/cc/td/doc/cisintwk/ito_doc/qos.htm.
Traffic Control using tcng and HTB HOWTO,
www.ibiblio.org/.../Traffic-Control-tcng-HTB-HOWTO.html.
Shorewall: Traffic Shaping/Control,
www.shorewall.net/traffic_shaping.htm.
Bert Hubert: The Wonder Shaper,
lartc.org/wondershaper.
Traffic Shaping unter Linux,
linuxwiki.org/TrafficShaper.
Jason Boxman: Installing and Using tcng under Debian GNU/Linux,
talk.trekweb.com/~jasonb/articles/tcng_shaping.html.
»Traffic shaping on Linux has been possible for ages, but the
tools and syntax have always been arcane and the machinery behind them
magic. In 2001, Werner Almesberger began work on tcng, a replacement for
the arcane and poorly documented tc command that comes bundled with the
iproute2 package used for traffic control in conjunction with the Linux
kernel. What follows is an attempt to demystify traffic control with
tcng, including installation, configuration, and monitoring«.
Quelle und Lizenz
Ein Teil dieses Artikels stammt aus
Wikipedia, der freien
Enzyklopädie:
Artikel |
Versionen |
Bearbeiten |
Diskussion |
Backlinks |
Drucken.
Stand: 13. Aug 2004 21:37.
Lizenz: Der Inhalt dieser Seite steht unter der
GNU Free Documentation
License.
Anmerkungen
| |
Traffic Shaping: |
|
Name: Besucher.
Online: 4 aktive User.
|
| Login |
Logout
|
|
|
Benachrichtigen bei Änderungen: |
|
|
|
|
Debian GNU/Linux 3.1 »Sarge«,
mit Debian-Anwenderhandbuch.

DVD-ROM +
Bonus-DVD
EUR
49,90
(versandkostenfrei)
|
Debian GNU/Linux Power Pack.
von
Peter H. Ganten und
Wulf Alex.

946 Seiten, zwei DVDs
EUR 69,95
(versandkostenfrei) |
Ubuntu: |
Ubuntu/Kubuntu 5.10,
mit Handbuch.

EUR
29,90
(versandkostenfrei)
|
SuSE
Linux: |
SUSE
Linux 10.0 deutsch.
von Novell

EUR
48,95
(versandkostenfrei)
|
SuSE
Linux 9.3 Professional
von Novell.

EUR
82,99
(versandkostenfrei)
|
SuSE
Linux 9.3 Professional Update.
von Novell

EUR 59,95
(versandkostenfrei) |
Red
Hat Linux: |
|
Red Hat Linux
Professional Workstation.

EUR 99,95
(versandkostenfrei)
|
Red Hat Linux 9 Personal.
Red Hat Linux 9 Professional.

ab EUR 39,99
(versandkostenfrei) |
|
 |
Thematisch verwandte Subsites:
Apple,
BSD,
Hardware,
Internet,
Microsoft Windows,
Networking,
Open Content,
Open Source & Free Software,
Politik,
Recht,
Safety,
Security,
Shopping,
Software,
The Tark,
Webworking,
Wissen. |
 |
|
|