[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