[Berlin-wireless] iptables und die Routingperformance
Frithjof Hammer
olsrexperiment
Di Dez 9 20:32:32 CET 2008
Hallo!
Mehr so nebenbei fiel heute eine, mir unerwartete Erkenntnis ab:
Lädt man auf einem Broadcom Router (ich nahm einen Asus 500 deluxe) die
iptables-Module, so hat dies einen beträchtlichen Einfluss auf die
Routingperformanz: Schaufelte der Router ohne iptables-Module max. 50 MBit/s
durch die Kabel, waren es mit geladenden IP-Tables Modulen nur noch max. 20
Mbit/s.
Hierbei war keine Iptables-Regel angelegt, es waren lediglich die Module
geladen.
Etwas schockierender zeigt es die angehängte Grafik:
-Grün: Router ohne IPtables_module
-Blau: Router mit IPtables
-Lila: Router ohne IPtables, aber mit laufendem tcpdump -i eth0.0 -w /dev/null
-Rot: Referenzmessung mit einem Crossoverkabel zwischen PC A und PC B (ohne
Router)
Meine Testumgebung ist recht einfach, PC A ist mit einem der LAN-Ports des
Routers verbunden, PC B mit dem WAN-Port:
[PC A] ====[LAN Router WAN]====[PC B]
Auf dem Router waren zwei Netzrouten, passend zu den IP Adressen des
jeweiligen Interfaces definiert, ansonsten war die Routing-Tabelle leer, es
lief kein olsrd. Auf den PCs war jeweils eine Route auf das Netz des Anderen
definiert.
Gemessen habe ich mit Netpipe (http://www.scl.ameslab.gov/netpipe/).
Hat jemand eine Idee, warum der Router soweit einbricht? Besonders, dass er
unter das Niveau von tcpdump fällt, ist mir unerklärlich: Ich hätte gedacht,
dass iptables seine Regeln im Kernelspace abfrühstückt, der bei tcpdump
notwendige Kontextswitch also erspart bleibt und somit schneller sein müsste.
Kopfkratzend
Frithjof
Anhang:
root at OpenWrt:~# iptables -t nat -nvL
Chain PREROUTING (policy ACCEPT 24 packets, 2853 bytes)
pkts bytes target prot opt in out source
destination
Chain POSTROUTING (policy ACCEPT 1 packets, 60 bytes)
pkts bytes target prot opt in out source
destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source
destination
====================================
root at OpenWrt:~# iptables -t mangle -nvL
Chain PREROUTING (policy ACCEPT 625K packets, 615M bytes)
pkts bytes target prot opt in out source
destination
Chain INPUT (policy ACCEPT 285 packets, 21399 bytes)
pkts bytes target prot opt in out source
destination
Chain FORWARD (policy ACCEPT 625K packets, 615M bytes)
pkts bytes target prot opt in out source
destination
Chain OUTPUT (policy ACCEPT 169 packets, 20007 bytes)
pkts bytes target prot opt in out source
destination
Chain POSTROUTING (policy ACCEPT 625K packets, 615M bytes)
pkts bytes target prot opt in out source
destination
===================================
root at OpenWrt:~# iptables -nvL
Chain INPUT (policy ACCEPT 59 packets, 6206 bytes)
pkts bytes target prot opt in out source
destination
Chain FORWARD (policy ACCEPT 625K packets, 615M bytes)
pkts bytes target prot opt in out source
destination
Chain OUTPUT (policy ACCEPT 46 packets, 4959 bytes)
pkts bytes target prot opt in out source
destination
root at OpenWrt:~# iptables -t nat -nvL
Chain PREROUTING (policy ACCEPT 21 packets, 2070 bytes)
pkts bytes target prot opt in out source
destination
Chain POSTROUTING (policy ACCEPT 1 packets, 60 bytes)
pkts bytes target prot opt in out source
destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source
destination
root at OpenWrt:~# iptables -t mangle -nvL
Chain PREROUTING (policy ACCEPT 625K packets, 615M bytes)
pkts bytes target prot opt in out source
destination
Chain INPUT (policy ACCEPT 127 packets, 10318 bytes)
pkts bytes target prot opt in out source
destination
Chain FORWARD (policy ACCEPT 625K packets, 615M bytes)
pkts bytes target prot opt in out source
destination
Chain OUTPUT (policy ACCEPT 87 packets, 9415 bytes)
pkts bytes target prot opt in out source
destination
Chain POSTROUTING (policy ACCEPT 625K packets, 615M bytes)
pkts bytes target prot opt in out source
destination
==================================
root at OpenWrt:~# uname -a
Linux OpenWrt 2.6.25.17 #2 Fri Dec 5 15:18:07 CET 2008 mips unknown
=================================
root at OpenWrt:~# lsmod
Module Size Used by Not tainted
nf_nat_tftp 448 0
nf_conntrack_tftp 2448 1 nf_nat_tftp
nf_nat_irc 928 0
nf_conntrack_irc 2768 1 nf_nat_irc
nf_nat_ftp 1440 0
nf_conntrack_ftp 5120 1 nf_nat_ftp
ipt_MASQUERADE 1216 0
iptable_nat 3696 0
nf_nat 12512 5
nf_nat_tftp,nf_nat_irc,nf_nat_ftp,ipt_MASQUERADE,iptable_nat
xt_state 832 0
nf_conntrack_ipv4 8384 3 iptable_nat,nf_nat
nf_conntrack 39632 11
nf_nat_tftp,nf_conntrack_tftp,nf_nat_irc,nf_conntrack_irc,nf_nat_ftp,nf_conntrack_ftp,ipt_MASQUERADE,iptable_nat,nf_nat,xt_state,nf_conntrack_ipv4
ipt_REJECT 2080 0
xt_TCPMSS 2336 0
ipt_LOG 4864 0
xt_multiport 1888 0
xt_mac 704 0
xt_limit 1248 0
iptable_mangle 1056 0
iptable_filter 928 0
ip_tables 8208 3 iptable_nat,iptable_mangle,iptable_filter
xt_tcpudp 1920 0
x_tables 8976 11
ipt_MASQUERADE,iptable_nat,xt_state,ipt_REJECT,xt_TCPMSS,ipt_LOG,xt_multiport,xt_mac,xt_limit,ip_tables,xt_tcpudp
ppp_async 9728 0
ppp_generic 20096 1 ppp_async
slhc 5248 1 ppp_generic
crc_ccitt 992 1 ppp_async
b43 169072 0
mac80211 158256 1 b43
cfg80211 24592 1 mac80211
arc4 832 2
aes_generic 28432 0
deflate 1568 0
ecb 1408 2
cbc 2176 0
crypto_blkcipher 12272 2 ecb,cbc
crypto_hash 992 0
cryptomgr 1696 0
crypto_algapi 8576 7
arc4,aes_generic,deflate,ecb,cbc,crypto_blkcipher,cryptomgr
switch_robo 4192 0
switch_core 5216 1 switch_robo
diag 7760 0
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname : routing_perfomance.png
Dateityp : image/png
Dateigröße : 7886 bytes
Beschreibung: nicht verfügbar
URL : <http://lists.berlin.freifunk.net/pipermail/berlin/attachments/20081209/b25413ba/attachment.png>
Mehr Informationen über die Mailingliste Berlin