Wireguard - technische Diskussion

Ich frage mal vorsichtig, wie denn Stand ist bei Euch.
Nicht, dass ich mit L2TP völlig unglücklich wäre, trotzdem würde ich gern etwas „Mit Crypto“ anbieten können und würde dann den Fastd-Build auf den Altenteil schicken.

es scheint stabil zu laufen, da man aber nicht schneller ist als mit fastd (im Vergleich zu Wireguard plus l2tpv3) und fastd im Moment auch das kleinere Paket ist bleiben wir dabei.
von der crypto tun die beiden sich nichts.
wireguard frisst den ganzen Memory auf wenn man den mit udp in großem Maß beschiesst und der OOM Killer schiesst dann wahllos Programme ab. (auf den kleinen 32MB kisten, auf den Servern haben wir das nicht beobachtet, aber das liegt wohl daran das der irgendwas um die 90 Mb mximal buffern würde … nur ne Vermutung basierend auf Infos aus Wireguard Dev Liste )

Für die kleinen Geräte - kann man machen, hat aber keinen Vorteil. Bzw. wenn man Layer 3 Routing macht und eben kein Riesenbatman Layer2 Switch (sondern nur lokal Batman hat) dann ist das vielleicht ne saubere alternative.
für die Supernode < > Supernode geschichte sind wir noch dran, denn da ist die Performance sehr gut. Wir denken das wir Tinc damit austauschen werden.

diesen Link kennste ? 841v11 - FASTDv18 - 841v11 iperf tests

Danke für die Einschätzung.

Da bleibe ich bei gretap, um die batman-Interfaces zusammenzubinden.

gretap = unverschlüsselt? (sn < > sn ?)… auch gut, bei uns jedoch ist wo immer es geht verschlüsselter Traffic (local policy)

ich experimentiere grade mit anytun wobei das bisher nicht automatisch läuft mit dem tunnelaufbau key-austausch.

mal sehen wie sich das schlägt

nach dem neuen Wireguard mit Ankündigung von Speicher Alignment auf den kleinen Routerkisten … hab ich neu gebaut und getetestet.

Ich verstehs nicht ganz, aber wir bekommen in die eine Richtung 30Mbit und in die andere etwa 11-14 Mbit. Hatten gestern keine Lust das weiter zu debuggen - aber an sich sehr Bemerkenswert.

[ ID] Interval           Transfer     Bandwidth
[  5]   0.00-10.04  sec  0.00 Bytes  0.00 bits/sec                  sender
[  5]   0.00-10.04  sec  13.9 MBytes  11.6 Mbits/sec                  receiver

[ ID] Interval           Transfer     Bandwidth       Retr
[  5]   0.00-10.06  sec  38.7 MBytes  32.3 Mbits/sec   50             sender
[  5]   0.00-10.06  sec  0.00 Bytes  0.00 bits/sec                  receiver

[ ID] Interval           Transfer     Bandwidth
[  5]   0.00-10.03  sec  0.00 Bytes  0.00 bits/sec                  sender
[  5]   0.00-10.03  sec  14.2 MBytes  11.8 Mbits/sec                  receiver

[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  38.3 MBytes  32.1 Mbits/sec   40             sender
[  4]   0.00-10.00  sec  37.9 MBytes  31.8 Mbits/sec                  receiver

[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-4.00   sec  0.00 Bytes  0.00 bits/sec                  sender
[  4]   0.00-4.00   sec  6.78 MBytes  14.2 Mbits/sec                  receiver

[ ID] Interval           Transfer     Bandwidth       Retr
[  5]   0.00-10.04  sec  38.7 MBytes  32.4 Mbits/sec   46             sender
[  5]   0.00-10.04  sec  0.00 Bytes  0.00 bits/sec                  receiver

##########################
#  Blanko Kabeltest/IF Test Laptop/Laptop
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  5]   0.00-10.04  sec  1.09 GBytes   930 Mbits/sec    0             sender
[  5]   0.00-10.04  sec  0.00 Bytes  0.00 bits/sec                  receiver

[WireGuard] [ANNOUNCE] Snapshot experimental-0.0.20161001 Available

1 „Gefällt mir“

getestet 842v3 mit wireguard und gretap und batv14,
tests mit lede und 4.4 Kernel

irgendwas mach ich da noch nicht so ganz richtig, hier vergleichsergebnisse unter live test bedingungen. Freu mich über anregungen, nachmacher*innen und so.
edit: backend lahmte … siehe Post3

841v9 550Mhz 100Mbyte 2:30 - 5,4Mbit - mit Lede testbuild, fastd
842v3 650Mhz 100Mbyte 4:40 - 2,9Mbit - mit Lede testbuild, wireguard + gretap
842v3 650Mhz 100Mbyte 0:54 - 15 Mbit - mit Lede testbuild, wireguard + gretap
842v3 650Mhz 100Mbyte 0:30 - 26,7Mbit- mit Lede testbuild, wireguard

im Vergleich dazu Gluon v2016.2.2 noch mit Chaos Calmer OpenWRT:
(dort auch Hardware CPU infos zu den Geräten)

Setup wg0 WireGuard Interface

Wireguard - Server

# wg genkey > wg_privatekey
# wg pubkey < wg_privatekey > wg_publickey
# cat wg.sh
ip link del dev wg0 2>/dev/null || true
ip link add dev wg0 type wireguard
wg set wg0 private-key /home/freifunk/wg_privatekey
wg addconf wg0 /home/freifunk/wg_conf
ip addr add fe80::$(cat /sys/class/net/eth0/address)/64 dev wg0
ip addr add fdf1::$(cat /sys/class/net/eth0/address)/64 dev wg0
# <me> peer <the other>
ip address add 192.168.99.1/24 dev wg0
ip link set up dev wg0

Wireguard - peer - 842v3

# wg genkey > wg_privatekey
# wg pubkey < wg_privatekey > wg_publickey
# cat wg.sh
ip link del dev wg0 2>/dev/null || true
ip link add dev wg0 type wireguard
wg set wg0 private-key /home/freifunk/wg_privatekey
wg addconf wg0 /home/freifunk/wg_conf
ip addr add fe80::$(cat /sys/class/net/eth0/address)/64 dev wg0
ip addr add fdf1::$(cat /sys/class/net/eth0/address)/64 dev wg0
# <me> peer <the other>
ip address add 192.168.99.2/32 peer 192.168.99.1/32 dev wg0
ip link set up dev wg0
# it seems we need initializer like this 
ping 192.168.99.1 -c2

Setup gretap tunnel

gretap: Server

# these are the ips from wg0 if
ip link add gre1 type gretap remote 192.168.99.2 local 192.168.99.1
sleep 2
ip link set up dev gre1

gretap Peer 842v3

# these are the ips from wg0 if
ip link add gre1 type gretap remote 192.168.99.1 local 192.168.99.2
sleep 2
ip link set up dev gre1

ontop Batman

batv14: Server und Peers

batctl if add gre1

related :
gre-tunnel-interface-in-batman-adv-einhaengen
fastd-841nv9-vs-940nv3-vs-842nv3-live-test-poor-mans-speed-test
wireguard-als-zukuenftige-vpn-loesung
lede-test-wireguard-und-blanko-durchsatz-tp841nv11-1-und-bug

2 „Gefällt mir“

connect direct to backbone

26Mbit only wireguard tunnel

time -v wget http://192.168.99.1:80/random100M -O /dev/null
Downloading 'http://192.168.99.1:80/random100M'
Connecting to 192.168.99.1:80
Writing to '/dev/null'
/dev/null            100% |*******************************|   100M  0:00:00 ETA
Download completed (104857600 bytes)
	Command being timed: "wget http://192.168.99.1:80/random100M -O /dev/null"
	User time (seconds): 2.45
	System time (seconds): 5.31
	Percent of CPU this job got: 26%
	Elapsed (wall clock) time (h:mm:ss or m:ss): 0m 29.49s
	Average shared text size (kbytes): 0
	Average unshared data size (kbytes): 0
	Average stack size (kbytes): 0
	Average total size (kbytes): 0
	Maximum resident set size (kbytes): 2912
	Average resident set size (kbytes): 0
	Major (requiring I/O) page faults: 0
	Minor (reclaiming a frame) page faults: 44
	Voluntary context switches: 4088
	Involuntary context switches: 256
	Swaps: 0
	File system inputs: 0
	File system outputs: 0
	Socket messages sent: 0
	Socket messages received: 0
	Signals delivered: 0
	Page size (bytes): 4096
	Exit status: 0

connect backbone

### fw server via batman - and gretap (lame backend)

fw server via batman - and gretap

# time -v wget http://[fdf0:9bb:7814:a630:1c61:19ff:fefd:3ed2]/random100M -O /dev/null
Downloading 'http://[fdf0:9bb:7814:a630:1c61:19ff:fefd:3ed2]/random100M'
Connecting to fdf0:9bb:7814:a630:1c61:19ff:fefd:3ed2:80
Writing to '/dev/null'
/dev/null            100% |*******************************|   100M  0:00:00 ETA
Download completed (104857600 bytes)
	Command being timed: "wget http://[fdf0:9bb:7814:a630:1c61:19ff:fefd:3ed2]/random100M -O /dev/null"
	User time (seconds): 2.51
	System time (seconds): 6.10
	Percent of CPU this job got: 15%
	Elapsed (wall clock) time (h:mm:ss or m:ss): 0m 53.87s
	Average shared text size (kbytes): 0
	Average unshared data size (kbytes): 0
	Average stack size (kbytes): 0
	Average total size (kbytes): 0
	Maximum resident set size (kbytes): 2912
	Average resident set size (kbytes): 0
	Major (requiring I/O) page faults: 0
	Minor (reclaiming a frame) page faults: 45
	Voluntary context switches: 4637
	Involuntary context switches: 229
	Swaps: 0
	File system inputs: 0
	File system outputs: 0
	Socket messages sent: 0
	Socket messages received: 0
	Signals delivered: 0
	Page size (bytes): 4096
	Exit status: 0

compare fastd (lede build)

just as comparison

## time -v wget http://[fdf0:9bb:7814:a630::7]/random100M -O /dev/null
Downloading 'http://[fdf0:9bb:7814:a630::7]/random100M'
Connecting to fdf0:9bb:7814:a630::7:80
Writing to '/dev/null'
/dev/null            100% |*******************************|   100M  0:00:00 ETA
Download completed (104857600 bytes)
	Command being timed: "wget http://[fdf0:9bb:7814:a630::7]/random100M -O /dev/null"
	User time (seconds): 5.47
	System time (seconds): 9.78
	Percent of CPU this job got: 9%
	Elapsed (wall clock) time (h:mm:ss or m:ss): 2m 39.03s
	Average shared text size (kbytes): 0
	Average unshared data size (kbytes): 0
	Average stack size (kbytes): 0
	Average total size (kbytes): 0
	Maximum resident set size (kbytes): 2512
	Average resident set size (kbytes): 0
	Major (requiring I/O) page faults: 0
	Minor (reclaiming a frame) page faults: 46
	Voluntary context switches: 76215
	Involuntary context switches: 55
	Swaps: 0
	File system inputs: 0
	File system outputs: 0
	Socket messages sent: 0
	Socket messages received: 0
	Signals delivered: 0
	Page size (bytes): 4096
	Exit status: 0

jetzt hatte ich mich selber genatzt.
unser backend lahmt an dieser speziellen Stelle zwischen den Servern, leg ich mir die 100Mbyte Random Testdatei direkt auf den Uplinkserver mess ich folgendes.
(immer mehrere Messungen , hier ein mittleres Ergebnis)

reines routing direkt - 0:25 (time -v wget http://136.243.153.228:10080/random100M -O /dev/null)
wg0 IF - 0:30 (time -v wget http://192.168.99.1/random100M -O /dev/null)
gre1 IF - 0:54 (time -v wget http://[fdf0:9bb:7814:a630:1c61:19ff:fefd:3ed2]/random100M -O /dev/null)

(00:26:03) cccfr_fuzzle: yay ... irgendwas stimmt mit der backendanbindung des servers nicht : 
(00:26:03) cccfr_fuzzle: ipv4 - nur wg - ca 30 sek.
(00:26:03) cccfr_fuzzle: ipv6 - wg+gre - ca 54 sek.
...
(00:27:00) cccfr_fuzzle: 54 sek sind etwa 15 Mbit (unter livebbedingungen (wie ich die gerade immer nenne))

btw. Voluntary context switches: 4637 (dropped from60k++)

wireguard erlaubt seit letzter Woche auch Kernel 3.18++
dass ist nicht nur super für Android Geräte, sondern auch für aktuelles Gluon (2016++). Die sind im Moment in der Regel noch bei ~ 3.18 Kerneln.

damit kann man wireguard/gretap auch auf den 841er laufen lassen, soweit bin ich derweil. Nun stehen Geschwindigkeit Tests und ein Plan für Key/IP Austausch Peer<>Server noch an.

also von Hand unter ./gluon/openwrt/package/kerne/network - wireguard Ordner entsprechend angelegt und Makefile sowie files/wireguard.sh hinzugefügt.
(von hier kopiert https://github.com/openwrt/packages/tree/master/net/wireguard , sonst müsste man alternativ an den OpenWRT Commit als Grundlage drehen und das explodiert erfahungsgemäss gerne mal an vielen anderen Stellen)
(evtl im Ordner gluon/openwrt make menuconfig ausführen und wireguard sowie gre zum bauen vormerken)

danach die fastd-pakete aus der site.mk entfernt und die für wireguard/gre nötigen Pakete hinzugefügt. Wenn man nicht für die 4Mb Geräte baut, kann man fastd durchaus auch drin lassen.

# hinzugeügte Pakete zu site.mk
kmod-gre kmod-gre6 ip-full kmod-wireguard wireguard-tools \

# entfernte Pakete
#         gluon-config-mode-mesh-vpn \
#        gluon-mesh-vpn-fastd

related links
lede-wireguard-gretap-ergebnisse-unter-livebedingungen
wireguard-als-zukuenftige-vpn-loesung
erste wg tests
wireguard-tag

script für all incl auf knoten

# cat foo.sh 
#!/bin/sh

# every peer should have its own ip
IP=192.168.99.2

# check if key exist
[ -f /root/wg_privatekey ] || wg genkey > /root/wg_privatekey && wg pubkey < /root/wg_privatekey > /root/wg_publickey

# del and make new wg0
ip link del dev wg0 2>/dev/null || true
ip link add dev wg0 type wireguard

# if conf not exist make 
if [ ! -f /root/wg_conf ]; then
cat<<EOF > /root/wg_conf
[Interface]
ListenPort = 10099

[Peer]
PublicKey = Gqntn/96zfRrz6SedcNXzw7b+vyjn6IfZlFM8+6U63E= 
Endpoint = 136.243.153.228:10099
AllowedIPs = 0.0.0.0/0,fe80::/0
EOF
fi

# addconf
wg addconf wg0 /root/wg_conf
wg set wg0 private-key /root/wg_privatekey
ip addr add fdf1::$(cat /sys/class/net/eth0/address)/64 dev wg0
ip addr add fe80::$(cat /sys/class/net/eth0/address)/64 dev wg0
# <me> peer <the other>
ip address add $IP/32 peer 192.168.99.1/32 dev wg0
# test if v6 is sufficient , so own ip could be uniq
#ip address add fdf1::$(cat /sys/class/net/eth0/address) peer fdf1::16:3e:75:72:af/64 dev wg0
ip link set up dev wg0

# grestuff
ip link add gre4 type gretap remote 192.168.99.1 local $IP
ifconfig gre4 up

# batman
batctl if add gre4

helpfull lines for server…

# nebst dem anderen foo , siehe peer config ...  neuer peer zu server hinzufügen
# angenommen der server lauscht auf 10099 und wg0 intern auf 192.168.99.1
wg genkey > /root/wg_privatekey && wg pubkey < /root/wg_privatekey > /root/wg_publickey

wg set wg0 peer lustigerneuerpeerkey= allowed-ips 192.168.99.5/32
ip link add gre5 type gretap remote 192.168.99.5 local 192.168.99.1 ttl 255
ifconfig gre5 up
10 „Gefällt mir“

Echt Klasse, dass du dich da so reinhängst! Weiter so!!!

…ich hab zwar nicht mal die Hälfte technisch verstanden, was Du da genau machst, aber wenn es funktioniert: Super!

Danke für Dein Engagement!

Es gibt hier vermutlich viele Dutzend Leute, die sehr, sehr gespannt in Eurer Richtung schauen und positiven Meldungen entgegenfiebern.

Wenn irgendwelche „überschaubare“ Aufgaben zu übernehmen sind oder ihr Resourcen braucht, dann meldet Euch bitte!

danke - im großen sinds nunmehr detail und design fragen,
neben dem testen auf Geräten und Geschwindigkeit wären da noch fragen wie

  • wie wieviele gretap tunnel if kann man so auf nem server aufmachen (>500)
  • wieviele dieser tunnel interface kann man in batman einhängen (>500)
  • hat das unvorhergesehene performance impacts
  • wie gestaltet man die keyverwaltung (inkl. der nötigen ip)
  • ein passendes paket dazu bauen für den config mode
  • Freifunk durch Freifunk verhindern = erkennen von echtem uplink oder mesh
  • soll es sowas wie ein fallback geben (ähnl. wie bei fastd mehrere supernodes)
  • macht 4.4 kernel (gerade lede) oder 3.18 nen großen unterschied?

im grunde wäre es super andere bauen das auch mal zusammen um da erfahrungen zu sammeln.
mit starker vorsicht zu geniessen wären diese sysupgrade
v2016.2.x.2-wg (v14 und v15 da) openfreiburg.de
(vorsicht da u.a emergency script (mit reboot wenn keine batgw für 10 min) darin und ssh keys von uns aus freiburg)

3 „Gefällt mir“

Die Tunnel laufen super und stabil und der durchsatz ist gut, mag jemand da mit an einem Gluon package basteln … ? direkte PM an mich

3 „Gefällt mir“

Kannst du vielleicht nochmal kurz die Fakten zusammen fassen:

  • Wireguard ist ein VPN Tunnel? Layer ?
  • greTAP ist auf diesem Tunnel nötig?
  • die Kombination greTAP und Wireguard kann kann fastd / L2TP ersetzen?
  • Gibt es eine Verschlüsselung?
  • Läuft es im Kernel oder im Userspace?
  • Man will Wireguard weil?

Gruß
Tarnatos

1 „Gefällt mir“

Layer 3 crypto Routing Protokoll - ähnlich OpenVpn wird dort ein IP>IP Tunnel aufgemacht und UDP benutzt., Generell ist die Seite von wireguard, da sehr gut und Informativ https://www.wireguard.io/

um für batman-adv das nötige layer 2 zur verfügung zu stellen. Man kann natürlich auch fragen wofür man eigentlich Batman in Richtung Backend will. Aber für einen smoothes ersetzen von bestehenden Lösungen (und großen Batman Netzen) ist das nötig.

für l2tp kann ich nix sagen, wenn damit auch l2tp-eth gemeint ist bestimmt. Für Fastd trifft das zu, es wird dann der gretap-tunnel der auf dem wireguard IF liegt in Batman-adv eingehängt. Die Lösung funktioniert auf den Routern und gegenüber einem Endpunkt dann genauso wie fastd. Auf Serverseite hat man dann neben dem wg0 IF pro peer ein zusätzliches gretap Link-IF.

[quote=„Tarnatos, post:7, topic:14122“]
Gibt es eine Verschlüsselung?
[/quote]fast identisch zu fastd - daher find ich das so charmant. einen mind. 3mal so schnellen Tunnel auf den embedded Devices zu haben wie fastd.
siehe dazu auch Protocol & Cryptography - WireGuard

kernelspace, wireguard sowie gretap - contextswitche sind am Ende nur 1/10 derer von fastd… (vgl. 100Mb download>dev/null 74000 zu 5600 )

weil man einen verschlüsselte Tunnel zu seinem Backend/freifunk-netz/exit will. Man kann auch die Server im Backend mit Wireguard verbinden statt dem anfälligen tinc, oder den unverschlüsselten Lösungen, das ist aber nicht was ich gerade hier meine.(Wireguard link auf Serverebene auf GB Link >800Mbit ).

5 „Gefällt mir“

das gleiche script für V6 in dem WG tunnel IF

#!/bin/sh

SERVERIPWG=fdf1::16:3e75:72af
MASK=128
SERVERIPEXT=136.243.153.228
SERVERPORT=10099
IP=fdf1::$(cat /sys/class/net/eth0/address|awk 'BEGIN{FS=":"}{print $1$2":"$3$4":"$5$6}')

# check if key exist
[ -f /root/wg_privatekey ] || wg genkey > /root/wg_privatekey && wg pubkey < /root/wg_privatekey > /root/wg_publickey

# del and make new wg0
ip link del dev wg0 2>/dev/null || true
ip link add dev wg0 type wireguard

# if conf not exist make 
if [ ! -f /root/wg_conf ]; then
cat<<EOF > /root/wg_conf
[Interface]
ListenPort = $SERVERPORT 

[Peer]
PublicKey = Gqntn/96zfRrz6SedcNXzw7b+vyjn6IfZlFM8+6U63E= 
Endpoint = $SERVERIPEXT:$SERVERPORT
AllowedIPs = 0.0.0.0/0,fe80::/0
EOF
fi

# addconf
wg addconf wg0 /root/wg_conf
wg set wg0 private-key /root/wg_privatekey
# ip addr add fdf1::$(cat /sys/class/net/eth0/address|awk 'BEGIN{FS=":"}{print $1$2":"$3$4":"$5$6}')/64 dev wg0
ip addr add fe80::$(cat /sys/class/net/eth0/address|awk 'BEGIN{FS=":"}{print $1$2":"$3$4":"$5$6}')/64 dev wg0
# <me> peer <the other>
# v4
# ip address add $IP/32 peer 192.168.99.1/32 dev wg0
# v6
ip address add $IP/$MASK peer $SERVERIPWG/$MASK dev wg0

ip link set up dev wg0

# grestuff
# v6
ip link add gre6 type ip6gretap remote $SERVERIPWG local $IP
ifconfig gre6 up
# v4 legacy
# ip link add gre4 type gretap remote $SERVERIPWG local $IP   
# ifconfig gre4 up

# batman
# or gre4
batctl if add gre6

echo $IP
cat /root/wg_publickey

edit: aktualisiert - fehler bitte als PM an mich , dann kann ich das korrigieren

1 „Gefällt mir“

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
1 „Gefällt mir“

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.)