500+ gretap tunnel Interfaces in batman einhängen (für wireguard)


#1

FYI … 510 Gretap tunnel aufgemacht und in batman-adv eingehangen (unbenutzt soweit, wobei batman broadcast purzelt da schon real rein) - bis zum 127. soweit kein problem. - batv14
ab 127. dann Error - can’t write to file ‘/sys/class/net/gre128/batman_adv/mesh_iface’: Cannot allocate memory
Dies als Test

Script dazu

# add one if per 3 second and give output, also monitor dmesg
dmesg -w &
for i in `seq 1 255`; do
     # one interface
      ip link add gre$i type gretap local 192.168.99.1 remote 192.168.3.$i ttl 255 dev wg0
      ip link set up dev gre$i
      batctl if add gre$i
      # another inf
      ip link add grex$i type gretap local 192.168.99.1 remote 192.168.4.$i ttl 255 dev wg0
      ip link set up dev grex$i
      batctl if add grex$i
      echo -n $(uptime|cut -d"," -f4-) $(ifconfig wg0|grep TX\ p) $i
      sleep 3
done

Load average: 0.01, 0.00, 0.00 TX packets 80872676 bytes 43983093228 (40.9 GiB) 126Error - can't write to file '/sys/class/net/gre127/batman_adv/mesh_iface': Cannot allocate memory                                                                       
[113990.684849] ------------[ cut here ]------------                                                                                                                                                                                                       
[113990.684861] WARNING: CPU: 0 PID: 12430 at /build/linux-lIgGMF/linux-4.8.11/mm/slab_common.c:861 kmalloc_slab+0x90/0xa0                                                                                                                                 
[113990.684867] Modules linked in: dm_mod ip_gre ip_tunnel gre xt_hashlimit wireguard(OE) ip6_udp_tunnel udp_tunnel intel_rapl x86_pkg_temp_thermal coretemp crct10dif_pclmul evdev crc32_pclmul pcspkr ghash_clmulni_intel batman_adv(OE) libcrc32c ip_tabl
es x_tables autofs4 ext4 crc16 jbd2 crc32c_generic fscrypto ecb mbcache crc32c_intel aesni_intel xen_netfront xen_blkfront aes_x86_64 glue_helper lrw gf128mul ablk_helper cryptd                                                                          
[113990.684907] CPU: 0 PID: 12430 Comm: batctl Tainted: G        W  OE   4.8.0-2-amd64 #1 Debian 4.8.11-1                                                                                                                                                  
[113990.684914]  0000000000000200 0000000052b690a8 ffffffff813269f5 0000000000000000                                                                                                                                                                       
[113990.684921]  0000000000000000 ffffffff8107c16e 0000000002080020 fffffffffffffc00                                                                                                                                                                       
[113990.684929]  ffffffffc017a804 fffffffffffffc00 ffffffffffffff80 fffffffffffffbf8                                                                                                                                                                       
[113990.684936] Call Trace:                                                                                                                                                                                                                                
[113990.684942]  [<ffffffff813269f5>] ? dump_stack+0x5c/0x77                                                                                                                                                                                               
[113990.684947]  [<ffffffff8107c16e>] ? __warn+0xbe/0xe0                                                                                                                                                                                                   
[113990.684955]  [<ffffffffc017a804>] ? batadv_orig_hash_add_if+0x94/0x140 [batman_adv]                                                                                                                                                                    
[113990.684961]  [<ffffffff811a7b10>] ? kmalloc_slab+0x90/0xa0                                                                                                                                                                                             
[113990.684966]  [<ffffffff811e08c5>] ? __kmalloc+0x25/0x580                                                                                                                                                                                               
[113990.684971]  [<ffffffff815ef9d7>] ? _raw_spin_lock_irqsave+0x17/0x39                                                                                                                                                                                   
[113990.684977]  [<ffffffff81432c11>] ? _crng_backtrack_protect+0x31/0x70                                                                                                                                                                                  
[113990.684981]  [<ffffffff811e0ebc>] ? kmem_cache_alloc_trace+0x9c/0x540                                                                                                                                                                                  
[113990.684986]  [<ffffffff814340b7>] ? get_random_bytes+0xe7/0x1c0                                                                                                                                                                                        
[113990.684991]  [<ffffffffc017a804>] ? batadv_orig_hash_add_if+0x94/0x140 [batman_adv]                                                                                                                                                                    
[113990.684999]  [<ffffffffc01779ac>] ? batadv_hardif_enable_interface+0x1cc/0x2e0 [batman_adv]                                                                                                                                                            
[113990.685007]  [<ffffffffc017f2c2>] ? batadv_store_mesh_iface+0xb2/0x150 [batman_adv]                                                                                                                                                                    
[113990.685013]  [<ffffffff8127fa98>] ? kernfs_fop_write+0x118/0x1a0                                                                                                                                                                                       
[113990.685018]  [<ffffffff81202303>] ? vfs_write+0xb3/0x1a0                                                                                                                                                                                               
[113990.685022]  [<ffffffff812036e2>] ? SyS_write+0x52/0xc0                                                                                                                                                                                                
[113990.685039]  [<ffffffff815efa76>] ? system_call_fast_compare_end+0xc/0x96                                                                                                                                                                              
[113990.685044] ---[ end trace 3e82ace6f98e8470 ]---                                                                                                                                                                                                       
[113990.684849] ------------[ cut here ]------------                                                                                                                                                                                                       
[113990.684861] WARNING: CPU: 0 PID: 12430 at /build/linux-lIgGMF/linux-4.8.11/mm/slab_common.c:861 kmalloc_slab+0x90/0xa0                                                                                                                                 
[113990.684867] Modules linked in: dm_mod ip_gre ip_tunnel gre xt_hashlimit wireguard(OE) ip6_udp_tunnel udp_tunnel intel_rapl x86_pkg_temp_thermal coretemp crct10dif_pclmul evdev crc32_pclmul pcspkr ghash_clmulni_intel batman_adv(OE) libcrc32c ip_tabl
es x_tables autofs4 ext4 crc16 jbd2 crc32c_generic fscrypto ecb mbcache crc32c_intel aesni_intel xen_netfront xen_blkfront aes_x86_64 glue_helper lrw gf128mul ablk_helper cryptd                                                                          
[113990.684907] CPU: 0 PID: 12430 Comm: batctl Tainted: G        W  OE   4.8.0-2-amd64 #1 Debian 4.8.11-1                                                                                                                                                  
[113990.684914]  0000000000000200 0000000052b690a8 ffffffff813269f5 0000000000000000                                                                                                                                                                       
[113990.684921]  0000000000000000 ffffffff8107c16e 0000000002080020 fffffffffffffc00                                                                                                                                                                       
[113990.684929]  ffffffffc017a804 fffffffffffffc00 ffffffffffffff80 fffffffffffffbf8                                                                                                                                                                       
[113990.684936] Call Trace:                                                                                                                                                                                                                                
[113990.684942]  [<ffffffff813269f5>] ? dump_stack+0x5c/0x77                                                                                                                                                                                               
[113990.684947]  [<ffffffff8107c16e>] ? __warn+0xbe/0xe0                                                                                                                                                                                                   
[113990.684955]  [<ffffffffc017a804>] ? batadv_orig_hash_add_if+0x94/0x140 [batman_adv]                                                                                                                                                                    
[113990.684961]  [<ffffffff811a7b10>] ? kmalloc_slab+0x90/0xa0                                                                                                                                                                                             
[113990.684966]  [<ffffffff811e08c5>] ? __kmalloc+0x25/0x580                                                                                                                                                                                               
[113990.684971]  [<ffffffff815ef9d7>] ? _raw_spin_lock_irqsave+0x17/0x39                                                                                                                                                                                   
[113990.684977]  [<ffffffff81432c11>] ? _crng_backtrack_protect+0x31/0x70
[113990.684981]  [<ffffffff811e0ebc>] ? kmem_cache_alloc_trace+0x9c/0x540
[113990.684986]  [<ffffffff814340b7>] ? get_random_bytes+0xe7/0x1c0
[113990.684991]  [<ffffffffc017a804>] ? batadv_orig_hash_add_if+0x94/0x140 [batman_adv]
[113990.684999]  [<ffffffffc01779ac>] ? batadv_hardif_enable_interface+0x1cc/0x2e0 [batman_adv]
[113990.685007]  [<ffffffffc017f2c2>] ? batadv_store_mesh_iface+0xb2/0x150 [batman_adv]
[113990.685013]  [<ffffffff8127fa98>] ? kernfs_fop_write+0x118/0x1a0
[113990.685018]  [<ffffffff81202303>] ? vfs_write+0xb3/0x1a0
[113990.685022]  [<ffffffff812036e2>] ? SyS_write+0x52/0xc0
[113990.685039]  [<ffffffff815efa76>] ? system_call_fast_compare_end+0xc/0x96
[113990.685044] ---[ end trace 3e82ace6f98e8470 ]---
Error - can't write to file '/sys/class/net/gre127/batman_adv/mesh_iface': Cannot allocate memory
load average: 0.01, 0.00, 0.00 TX packets 80874265 bytes 43983761422 (40.9 GiB) 127Error - can't write to file '/sys/class/net/gre128/batman_adv/mesh_iface': Cannot allocate memory

#2

Ich verstehe nicht, was dieser Artikel erklärt. Für mich klingt das eher nach etwas, was gerade (so) nicht funktioniert
Oder warum steht der im Erklärbär?
Zumindest liest sich das für mich eher nach einer Frage.
(Und ohne dem Threadstarter direkt widersprechen zu wollen, aber so würde ich das nicht tun. Allein der Versuch, dynamisch Interfaces im laufenden Betrieb in Batman ein- und aushängen zu wollen erscheint mir sehr mutig, zumindest ist es meine Erfahrung, dass das der Stabilität eines Systems mehr als abträglich ist.
Vielleicht verstehe ich aber auch den Ansatz “Lernen durch abschreckendes Beispiel” (?!?) nicht.)


#3

Wie viele Threads zu Wireguard möchtest du denn noch eröffnen?


Das passt doch eigentlich alles in diesen:


#4

@Handle : nö, dann wirds mega unübersichtlich und ich denk ich teil meine Erkenntnisse lieber, dann haben auch andere was davon - in diesem Fall (dieser thread) hätt ich das “(wireguard)” auch weglassen können - nur das dafür eben dieser Test durchgeführt wurde.
genauer - der erste thread ist nicht von mir und diskutiert das generell, der andere baut mit lede und testet unter livebedingungen (generelle gedanken sind da latte) und der letzte baut mit aktuellem gluon (und chaos calmer) und geht konkreter in die Richtung ein eigenes Gluon Paket zu bauen um ähnlich fastd oder dem externen l2tp paket das direkt in die FW einbauen zu können.
aber das hätte auch ne PM getan, an mich - so gehts inhaltlich am Thema vorbei. :wink:

@adorfer, wenn du eine bessere Kategorie hast , bitte - nur zu.
Und ja, das ist ein Test, dass das nicht funktioniert, die Frage konnten viele Menschen so nur mit hmmja, ich glaube … beantworten, daher hab ich ne vm angeworfen, die ans backend gehangen, ein paar reale knoten drangehangen mit Wireguard/gretap/batv14 und dann mal noch gekuckt … was geht denn da so - wenns viel viel viel mehr werden.
Das dynamische Einhängen generell ist kein Problem, damit hatten wir noch nie probleme - dafür ist das da.
und @adorfer, btw du hattest mich nach “überschaubaren” aufgaben gefragt … dies sind 2 davon Wireguard 0.0.20161230 linuxkernel 3.18+ gluon v2016.2.2


#5

Nunja, hier geht es um:

Was sollen wir denn hier begreifen? Dass fuzzle etwas versucht, was auch mit l2tp und prinzipell auch in Multi-batdomain-Servern ein Problem ist, auch mit neueren Batman-Versionen?

Nunja… dann hast Du schlicht Glück gehabt.
Das Standard-Tunneldigger-Setup schaltet da nicht aus reiner Gaudi eine Bridge dazwischen.

Aber wie gesagt, Du wirst Deine Gründe haben.


#6

und da du das alles nicht nur andeuten magst, kannst du mir fundiert auch die l2tp probleme genauer mal verlinken und wo das diskutiert wird. Dann hätt ich (und andere) da auch mehr von, und “lernen” so “häppchenweise”.

(und weiterhin, es steht dir frei die kategorie zu ändern, das ist in der regel erfolgreicher als mich zu belehren und (*verzeih) doof von der Seite zu kommen - und alles so derb ins OT zu schieben)


#7

lese einfach die nächsten paar Beiträge ab diesem Posting von @Cyrusfox

Die Lösung ist die gleiche wie beim Tunneldigger oder für Multidomain-VMs: vswitch, also bridge anlegen!


#8

@CyrusFox @adorfer … liest sich so als ob neben anderen Problemen dort auch das “Limit” von 127 ein Problem sein könnte. Genauer steht das da auch nicht, eher sogar ein paar sehr unterschiedliche Fehlerbilder (im zusammenhang mit l2tp und vor allem Batman)
Wie auch immer, du schlägst vor also 200 If in eine Bridge zu legen und die Bridge in batman einzuhängen. Ich gehe dann davon aus, dass die Bridge dann keinen Traffic weiter zwischen den ganzen Endpunkten hin und herschiebt, ist dem so? Ich dachte sämtlicher Traffic auf einer Bridge ist für sämtliche IF in der Bridge transparent.
… das verwirrt mich jetzt irgendwo, gradeinfach zu spät


#9

Moin,

ich hab das Thema mal in Technik verschoben. Finde es dort besser aufgehoben.

Wir nutzen auch eine Bridge um unsere ganzen L2TP-Interfaces zu bündeln. Batman 15+ legt sich in der Tat gerne mal auf die Nase, wenn man Interfaces rausnimmt. Wie du schreibst, einhängen ist kein Problem. Beim Entfernen besteht ein gewisses Risiko für eine Kernelpanik und das hatten wir dank der DSL-Zwangstrennungen dann so jeden zweiten bis dritten Tag.

Damit die Knoten nicht untereinander kommunizieren, haben wir folgende Restriktion auf die Netzwerkbrücke gelegt:

post-up ebtables -A FORWARD --logical-in $IFACE -j DROP

Das läuft bis etwa 400 Verbindungen ganz stabil. Danach stößt das System an seine Grenzen und trotz relativ niedrigem Durchsatz auf dem physikalischen Interface, bekommt der einzelne Knoten nur noch tröpfchenweise Pakete. Da scheint es eine Ineffizienz zu geben, die nicht richtig skaliert. Ob es am Tunneldigger, am L2TP im Kernel oder an dieser Brücke oder einfach am Batman liegt, wissen wir nicht und haben auch nicht wirklich eine Idee, wie man das eingrenzen könnte.

Grüße
Matthias