Neuanfang: VPN-Beschleunigung jeglicher Art

Ne ganz andere Frage in dem Zusammenhang:
Durch die ganzen Broadcasts wird die CPU der kleinen Router auch belastet, was wieder auf die Performance geht.
Bei jedem Broadcast Packet das ankommt, schickt das Interface einen interrupt and die CPU.
Auf meinem 841 macht das ohne clients im netz schon 5-10% CPU-Last aus.
Wenn dann noch die ganzen Arp-Requests der Clients dazu kommen, wird es wahrscheinlich noch schlimmer.

Eine Möglichkeit wäre es die Netzmaske auf 255.255.128 oder 255.255.64 zu ändern, aber das hätte zur Folge, das der lokale Router nicht immer unter 10.XXX.254.254 zu erreichen ist.
Ausserdem müsste erst einmal gemessen werden ,wieviel Performance damit überhaupt gewonnen wird.
Es könnte sein, das sich der ganze Aufwand nicht lohnt.

64er Subnetzmaske wird nicht funktionieren, du meinst sicher 192.
Dann gibt es 4 Subnetze (x.x.x.64,128,192) und im letzten (10.x.254.192/26) ist 10.x.254.254 doch auch erreichbar.

jo, das meinte ich, aber Sonntags morgens Kopfrechnen nach der Zeitumstellung ist nicht meins :wink:

Sollte 256-64 = 192 heissen, nicht 64

also 4 subnetze mit je 2048 Adressen/Clients. Das Sollte wohl für doe meisten Netze ausreichen

Das es so ist wie es ist liegt in der Natur der Sache und eine bewusste Designentscheidung. Nämlich die, das Freifunk Netz als flaches Layer2-Netz aufzubauen. Man tat dies im vollen Wissen, dass ein L2-Netz nicht skaliert. Und damit ein L2-Netz funktioniert ist es unumgänglich, dass Broadcast/Multicast an alle Hosts geflutet werden. Da beisst die Maus keinen Faden ab. Stellenweise wird mit Tricks (distributed ARP Table) gearbeitet um das Flooding zu reduzieren, funktional ist es aber zwingend erforderlich. Dagegen zu lamentieren macht ungefähr soviel Sinn, wie sich zu beschweren warum die fundamentalen Wechselwirkungen im Universum so sind wie sie sind.

War keine Beschwerde, sondern eine Bemerkung.

Wenns 'ne bewusste Desingentscheidung war/ist, hat es sich ja schon erledigt.

Anbei nun einmal ein paar Messwerte von einem BananaPi mit OpenWrt Chaos Calmer r45442
Zu Testzwecken habe ich auf dem Gerät fastd v17 und B.A.T.M.A.N. advanced 2014.4.0 (compatibility version 15) aufgesetzt und konfiguriert (analog zu unseren FF Knoten).
In meinem lokalen LAN habe ich eine Gegenstelle (Lenovo ThinkPad X230 mit Intel GB LAN) aufgebaut, die analog zu unseren Gateways („Supernodes“) konfiguriert sind (ebenfalls fastd v17 und BATMAN 2014.4.0). Bei fastd arbeiten wir hier mit MTU 1312 (Unitymedia, yaay) und salsa2012+umac.

Folgende Werte konnte ich mittels iperf3 ermitteln:

Direkt:

root@OpenWrt:/# iperf3 -c 192.168.42.41
Connecting to host 192.168.42.41, port 5201
[  4] local 192.168.42.77 port 34149 connected to 192.168.42.41 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.01   sec  62.5 MBytes   520 Mbits/sec    0    124 KBytes       
[  4]   1.01-2.01   sec  62.5 MBytes   523 Mbits/sec    0    140 KBytes       
[  4]   2.01-3.02   sec  62.5 MBytes   519 Mbits/sec    0    140 KBytes       
[  4]   3.02-4.01   sec  61.3 MBytes   519 Mbits/sec    0    140 KBytes       
[  4]   4.01-5.02   sec  62.5 MBytes   521 Mbits/sec    0    140 KBytes       
[  4]   5.02-6.02   sec  62.5 MBytes   522 Mbits/sec    0    140 KBytes       
[  4]   6.02-7.01   sec  61.3 MBytes   520 Mbits/sec    0    140 KBytes       
[  4]   7.01-8.01   sec  62.5 MBytes   522 Mbits/sec    0    146 KBytes       
[  4]   8.01-9.00   sec  61.3 MBytes   520 Mbits/sec    0    146 KBytes       
[  4]   9.00-10.00  sec  62.5 MBytes   523 Mbits/sec    0    146 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   621 MBytes   521 Mbits/sec    0             sender
[  4]   0.00-10.00  sec   621 MBytes   521 Mbits/sec                  receiver

iperf Done.
root@OpenWrt:/# iperf3 -c 192.168.42.41 -R
Connecting to host 192.168.42.41, port 5201
Reverse mode, remote host 192.168.42.41 is sending
[  4] local 192.168.42.77 port 34151 connected to 192.168.42.41 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec   106 MBytes   889 Mbits/sec                  
[  4]   1.00-2.00   sec   111 MBytes   928 Mbits/sec                  
[  4]   2.00-3.00   sec   111 MBytes   929 Mbits/sec                  
[  4]   3.00-4.00   sec   111 MBytes   928 Mbits/sec                  
[  4]   4.00-5.00   sec   111 MBytes   929 Mbits/sec                  
[  4]   5.00-6.00   sec   111 MBytes   931 Mbits/sec                  
[  4]   6.00-7.00   sec   111 MBytes   927 Mbits/sec                  
[  4]   7.00-8.00   sec   111 MBytes   930 Mbits/sec                  
[  4]   8.00-9.00   sec   111 MBytes   929 Mbits/sec                  
[  4]   9.00-10.00  sec   111 MBytes   929 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  1.08 GBytes   930 Mbits/sec    0             sender
[  4]   0.00-10.00  sec  1.08 GBytes   925 Mbits/sec                  receiver

iperf Done.

fastd v17 salsa2012-umac direkt (ohne BATMAN):

root@OpenWrt:/# iperf3 -c 10.42.42.1
Connecting to host 10.42.42.1, port 5201
[  4] local 10.42.42.2 port 56005 connected to 10.42.42.1 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  5.46 MBytes  45.8 Mbits/sec    0    262 KBytes       
[  4]   1.00-2.00   sec  5.36 MBytes  45.0 Mbits/sec    0    498 KBytes       
[  4]   2.00-3.00   sec  4.59 MBytes  38.5 Mbits/sec   26    460 KBytes       
[  4]   3.00-4.00   sec  5.33 MBytes  44.7 Mbits/sec    0    525 KBytes       
[  4]   4.00-5.00   sec  4.72 MBytes  39.6 Mbits/sec    0    577 KBytes       
[  4]   5.00-6.00   sec  4.71 MBytes  39.5 Mbits/sec    0    610 KBytes       
[  4]   6.00-7.00   sec  4.91 MBytes  41.2 Mbits/sec    4    445 KBytes       
[  4]   7.00-8.00   sec  4.72 MBytes  39.6 Mbits/sec    0    484 KBytes       
[  4]   8.00-9.00   sec  5.38 MBytes  45.2 Mbits/sec    0    507 KBytes       
[  4]   9.00-10.00  sec  4.71 MBytes  39.5 Mbits/sec    0    522 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  49.9 MBytes  41.9 Mbits/sec   30             sender
[  4]   0.00-10.00  sec  48.7 MBytes  40.9 Mbits/sec                  receiver

iperf Done.
root@OpenWrt:/# iperf3 -c 10.42.42.1 -R
Connecting to host 10.42.42.1, port 5201
Reverse mode, remote host 10.42.42.1 is sending
[  4] local 10.42.42.2 port 56007 connected to 10.42.42.1 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  7.55 MBytes  63.3 Mbits/sec                  
[  4]   1.00-2.00   sec  8.03 MBytes  67.3 Mbits/sec                  
[  4]   2.00-3.00   sec  7.92 MBytes  66.5 Mbits/sec                  
[  4]   3.00-4.00   sec  8.01 MBytes  67.2 Mbits/sec                  
[  4]   4.00-5.00   sec  7.96 MBytes  66.7 Mbits/sec                  
[  4]   5.00-6.00   sec  7.80 MBytes  65.5 Mbits/sec                  
[  4]   6.00-7.00   sec  7.80 MBytes  65.4 Mbits/sec                  
[  4]   7.00-8.00   sec  7.33 MBytes  61.5 Mbits/sec                  
[  4]   8.00-9.00   sec  7.76 MBytes  65.1 Mbits/sec                  
[  4]   9.00-10.00  sec  7.62 MBytes  63.9 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  78.2 MBytes  65.6 Mbits/sec   44             sender
[  4]   0.00-10.00  sec  77.9 MBytes  65.4 Mbits/sec                  receiver

iperf Done.

Freifunk-like Setup (über BATMAN 2014.4.0 via fastd v17 salsa2012+umac):

root@OpenWrt:/# iperf3 -c 10.13.37.1
Connecting to host 10.13.37.1, port 5201
[  4] local 10.13.37.2 port 50192 connected to 10.13.37.1 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  3.66 MBytes  30.7 Mbits/sec    0    181 KBytes       
[  4]   1.00-2.00   sec  3.74 MBytes  31.4 Mbits/sec    0    351 KBytes       
[  4]   2.00-3.00   sec  3.37 MBytes  28.3 Mbits/sec   20    294 KBytes       
[  4]   3.00-4.00   sec  3.55 MBytes  29.8 Mbits/sec    0    331 KBytes       
[  4]   4.00-5.00   sec  3.78 MBytes  31.7 Mbits/sec    0    355 KBytes       
[  4]   5.00-6.00   sec  3.30 MBytes  27.7 Mbits/sec    2    270 KBytes       
[  4]   6.00-7.00   sec  3.55 MBytes  29.8 Mbits/sec    0    290 KBytes       
[  4]   7.00-8.00   sec  3.55 MBytes  29.8 Mbits/sec    0    300 KBytes       
[  4]   8.00-9.00   sec  3.55 MBytes  29.8 Mbits/sec    0    303 KBytes       
[  4]   9.00-10.00  sec  3.55 MBytes  29.8 Mbits/sec    0    303 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  35.6 MBytes  29.9 Mbits/sec   22             sender
[  4]   0.00-10.00  sec  35.4 MBytes  29.7 Mbits/sec                  receiver

iperf Done.
root@OpenWrt:/# iperf3 -c 10.13.37.1 -R
Connecting to host 10.13.37.1, port 5201
Reverse mode, remote host 10.13.37.1 is sending
[  4] local 10.13.37.2 port 50194 connected to 10.13.37.1 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  3.34 MBytes  28.0 Mbits/sec                  
[  4]   1.00-2.00   sec  3.42 MBytes  28.6 Mbits/sec                  
[  4]   2.00-3.00   sec  3.37 MBytes  28.2 Mbits/sec                  
[  4]   3.00-4.00   sec  3.38 MBytes  28.4 Mbits/sec                  
[  4]   4.00-5.00   sec  3.37 MBytes  28.3 Mbits/sec                  
[  4]   5.00-6.00   sec  3.38 MBytes  28.4 Mbits/sec                  
[  4]   6.00-7.00   sec  3.37 MBytes  28.3 Mbits/sec                  
[  4]   7.00-8.00   sec  3.39 MBytes  28.4 Mbits/sec                  
[  4]   8.00-9.00   sec  3.37 MBytes  28.3 Mbits/sec                  
[  4]   9.00-10.00  sec  3.36 MBytes  28.2 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  33.8 MBytes  28.4 Mbits/sec   46             sender
[  4]   0.00-10.00  sec  33.8 MBytes  28.4 Mbits/sec                  receiver

iperf Done.

Und weil’s so schön war hier nochmal ohne Verschlüsselung bei fastd (null method):

Direkt

root@OpenWrt:/# iperf3 -c 10.42.42.1
Connecting to host 10.42.42.1, port 5201
[  4] local 10.42.42.2 port 56011 connected to 10.42.42.1 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  13.8 MBytes   115 Mbits/sec    0    631 KBytes       
[  4]   1.00-2.00   sec  10.8 MBytes  90.6 Mbits/sec   25    514 KBytes       
[  4]   2.00-3.00   sec  7.69 MBytes  64.5 Mbits/sec    0    568 KBytes       
[  4]   3.00-4.00   sec  12.8 MBytes   107 Mbits/sec    0    607 KBytes       
[  4]   4.00-5.00   sec  12.6 MBytes   105 Mbits/sec    1    453 KBytes       
[  4]   5.00-6.00   sec  12.1 MBytes   102 Mbits/sec    0    490 KBytes       
[  4]   6.00-7.00   sec  12.9 MBytes   108 Mbits/sec    0    512 KBytes       
[  4]   7.00-8.00   sec  12.9 MBytes   108 Mbits/sec    0    523 KBytes       
[  4]   8.00-9.01   sec  12.8 MBytes   107 Mbits/sec    0    529 KBytes       
[  4]   9.01-10.00  sec  12.1 MBytes   102 Mbits/sec    0    529 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   120 MBytes   101 Mbits/sec   26             sender
[  4]   0.00-10.00  sec   119 MBytes   100 Mbits/sec                  receiver

iperf Done.
root@OpenWrt:/# iperf3 -c 10.42.42.1 -R
Connecting to host 10.42.42.1, port 5201
Reverse mode, remote host 10.42.42.1 is sending
[  4] local 10.42.42.2 port 56013 connected to 10.42.42.1 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  14.3 MBytes   119 Mbits/sec                  
[  4]   1.00-2.00   sec  15.5 MBytes   130 Mbits/sec                  
[  4]   2.00-3.00   sec  7.90 MBytes  66.3 Mbits/sec                  
[  4]   3.00-4.00   sec  10.5 MBytes  88.0 Mbits/sec                  
[  4]   4.00-5.00   sec  8.09 MBytes  67.8 Mbits/sec                  
[  4]   5.00-6.00   sec  11.7 MBytes  98.0 Mbits/sec                  
[  4]   6.00-7.00   sec  11.0 MBytes  92.8 Mbits/sec                  
[  4]   7.00-8.00   sec  7.85 MBytes  65.8 Mbits/sec                  
[  4]   8.00-9.00   sec  7.65 MBytes  64.2 Mbits/sec                  
[  4]   9.00-10.00  sec  7.35 MBytes  61.7 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   102 MBytes  85.8 Mbits/sec   81             sender
[  4]   0.00-10.00  sec   102 MBytes  85.6 Mbits/sec                  receiver

iperf Done.

Freifunk-like

root@OpenWrt:/# iperf3 -c 10.13.37.1
Connecting to host 10.13.37.1, port 5201
[  4] local 10.13.37.2 port 50206 connected to 10.13.37.1 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  5.88 MBytes  49.3 Mbits/sec    0    283 KBytes       
[  4]   1.00-2.00   sec  5.59 MBytes  46.9 Mbits/sec   19    290 KBytes       
[  4]   2.00-3.00   sec  5.71 MBytes  47.9 Mbits/sec    0    328 KBytes       
[  4]   3.00-4.00   sec  5.69 MBytes  47.7 Mbits/sec    0    354 KBytes       
[  4]   4.00-5.00   sec  5.63 MBytes  47.2 Mbits/sec    1    273 KBytes       
[  4]   5.00-6.00   sec  5.46 MBytes  45.8 Mbits/sec    0    290 KBytes       
[  4]   6.00-7.00   sec  5.68 MBytes  47.6 Mbits/sec    0    298 KBytes       
[  4]   7.00-8.00   sec  5.68 MBytes  47.6 Mbits/sec    0    301 KBytes       
[  4]   8.00-9.00   sec  5.70 MBytes  47.8 Mbits/sec    0    301 KBytes       
[  4]   9.00-10.00  sec  5.67 MBytes  47.5 Mbits/sec    0    301 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  56.7 MBytes  47.5 Mbits/sec   20             sender
[  4]   0.00-10.00  sec  56.4 MBytes  47.3 Mbits/sec                  receiver

iperf Done.
root@OpenWrt:/# iperf3 -c 10.13.37.1 -R
Connecting to host 10.13.37.1, port 5201
Reverse mode, remote host 10.13.37.1 is sending
[  4] local 10.13.37.2 port 50208 connected to 10.13.37.1 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  4.58 MBytes  38.4 Mbits/sec                  
[  4]   1.00-2.00   sec  4.52 MBytes  37.9 Mbits/sec                  
[  4]   2.00-3.00   sec  5.04 MBytes  42.3 Mbits/sec                  
[  4]   3.00-4.00   sec  5.13 MBytes  43.0 Mbits/sec                  
[  4]   4.00-5.00   sec  4.44 MBytes  37.3 Mbits/sec                  
[  4]   5.00-6.00   sec  4.49 MBytes  37.7 Mbits/sec                  
[  4]   6.00-7.00   sec  4.50 MBytes  37.7 Mbits/sec                  
[  4]   7.00-8.00   sec  4.54 MBytes  38.1 Mbits/sec                  
[  4]   8.00-9.00   sec  6.03 MBytes  50.6 Mbits/sec                  
[  4]   9.00-10.00  sec  4.65 MBytes  39.0 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  48.0 MBytes  40.3 Mbits/sec   76             sender
[  4]   0.00-10.00  sec  48.0 MBytes  40.3 Mbits/sec                  receiver

iperf Done.
7 „Gefällt mir“

Danke für den Bericht.

Also wenn ich das richtig interpretiere, ist Badman die mega Bremse.

1 „Gefällt mir“

Ja. Es dürfte hier vor allem an der Fragmentierung liegen, die BATMAN durchführen muss. Nur leider bekommen wir mit fastd wohl nie unfragmentierten BATMAN Traffic durch.

Kannst du die Fragmentierung nochmal genauer erkären, hat das etwas mit MTU zu tun?

@MPW: wenn ein Datenpacket grösser ist als die auf dem Medium größte mögliche Übertragungsgröße, so ‚teilt‘ der Router das Datepacket in kleinere Einheiten, die kleiner sind als die größte mögliche Übertragungsgröße auf dem ‚anderen‘ Netzwerk des Routers.
Dass nennt man Fragmentieren.

Beispiel: ein PC im LAN sendet ein TCP Packet, z.B. von einem Dateitransfer, and den Router. Im LAN kann das Packet 1024 Byte Größe haben. Der Router muß das Packet auf über sein WAN Interface weiterleiten, aber auf der WAN-Leitung ist die größte Packetgröße 256 Byte. Der Router teilt das Packet also in 4 Päckchen a 256 byte und sendet diese über das WAN. Der Router auf der anderen Seite setzt aus den 4 Teile wieder das Originalpacket zusammen und sendet das dann Über sein LAN an den Zielrechner.

Die Maximale Tranfergröße is abhänging vom Medium und von verwendeten Level 2 Übertragungsprotokol und heist MTU ( Maximum Transfer Unit)

1 „Gefällt mir“

Jup, das stimmt. Frage ist, warum man bei Batman nicht die MTU kleiner einstellt?

Ob Batman oder ein Router fragmentiert macht keinen großen Unterschied.

Naja doch, offensichtlich behindert es den VPN-Traffic. Wenn die Daten schon von dem Router vorher fragmentiert werden, wäre das effizienter, zumindest wenn der Client nicht am Knoten hängt, der auch für den Uplink zuständig ist.

Bei DSL stellt man das doch auch so ein, dass es passt und nicht nachfragmentiert werden muss.

Ausserdem kann immer nur der Router fragmentieren, der den link mit der kleineren MTU auf seinem Interface angeschlossen hat. Bei Tunneln kann es nicht funktionieren, ausser das Tunnelinterface wird mit einer kleineren MTU konfiguriert. Es auch gibt ausser dem Cisco-eigenen EIRGP kein Routingprotokoll, das die MTU’s auf der gesamten Strecke zum Ziel in die Routingentscheidung einbezieht.

Im Übrigen macht es fast keinen Unterschied, ob fragmentiert wird, oder die Daten gleich mit der kleinen Schüppe (MTU) ins Netz geschaufelt werden.

Doch! Wenn Batman fragmentiert dann kenne ich zumindest derzeit kein Szenario in dem es zum Totalausfall kommt.
(Was man bei Fragmentierung im Heimrouter schon hinbekommen kann. Siehe den ganzen Spass bei DS-Lite und OpenVPN)

Das gilt nur, wenn das „Don’t Fragment“-Flag (DF) nicht gesetzt ist. Ist es gesetzt (Standard bei modernen BS), sendet der Router ein ICMP Type 3 Code 4: „Fragmentation Needed and Don’t Fragment was Set“ und das Paket wird verworfen.

Bei IPv6 gibt es generell keine Fragmentierung durch Router mehr.

Danke! Immerhin, VDSL25 bekommt man also mit einem BananaPi als Offloader saturiert. Was wohl auch mit einem 1043v2 klappt. sigh

Vielleicht bringt der RPi 2 ja genug power dass es sich lohnt (vor allem kostenmäßig)

Fastd kann keine Parallelisierung, also wird der nicht wirklich viel mehr Leistung haben als die älteren Modelle.

Vier Instanzen von was? FastD Tunnel? Das müssten dann auch auf dem Supernode so sein. Da Batman aber kein Loadblancing macht hättest du dann 3 Tunnel auf denen nur OGM rein und raus gehen und Clienttraffic geht nur auf einem Tunnel rein und raus. Also kein Gewinn.

1 „Gefällt mir“