Repository : ssh://git@diktynna/doc
On branches: backup-redmine,main
>---------------------------------------------------------------
commit 2835e22edd445e4a93de32945a2f24fdc991a87c
Author: Linus Lüssing <linus.luessing(a)c0d3.blue>
Date: Wed Sep 11 06:46:32 2024 +0000
doc: batman-adv/DAT_DHCP_Snooping
>---------------------------------------------------------------
2835e22edd445e4a93de32945a2f24fdc991a87c
batman-adv/DAT_DHCP_Snooping.textile | 131 +++++++++++++++++++++++++++++++++++
1 file changed, 131 insertions(+)
diff --git a/batman-adv/DAT_DHCP_Snooping.textile b/batman-adv/DAT_DHCP_Snooping.textile
index 005b03ad..06496c45 100644
--- a/batman-adv/DAT_DHCP_Snooping.textile
+++ b/batman-adv/DAT_DHCP_Snooping.textile
@@ -149,3 +149,134 @@ A month later it still looks like this (note the scale):
And the result (daily average) in relation to other layer 2 broadcasts:
!{width:50%}ffda-BCAST.1d.2018-05-10.png!:https://www.open-mesh.org/attachments/850/ffda-BCAST.1d.2018-05-10.png
+
+
+h2. Solution 2)
+
+(_Update 2024-09-11_)
+
+Patches: ...
+
+h3. DAT Timeout Split + Increase
+
+Splitting the one DAT cache into a local DAT cache and a DAT DHT cache. Then increasing the timeout for the latter from 5 min. to 30min.
+
+h3. Result
+
+These two patches decreased the overall ARP broadcast overhead by 89.86% and the ARP broadcast overhead from gateways by 96.22% in a ~180 nodes setup at Freifunk Lübeck, measured over one week before and after applying the patches on a specific mesh node's mesh-vpn interface.
+
+<pre><code>
+Before:
+- Broadcast ARP total: 6677.66 bits/s, 11.92 pkts/s
+ - from gateways: 5618.02 bits/s, 10.03 pkts/s
+
+After:
+- Broadcast ARP total: 677.26 bits/s (-89.86%), 1.21 pkts/s (-89.85%)
+ - from gateways: 212.28 bits/s (-96.22%), 0.38 pkts/s (-96.21%)
+</code></pre>
+
+Broadcast ARP total, 7 days, before vs. after:
+
+!bcast-arp.cap.stats.txt.png!
+
+Broadcast ARP from gateways, 7 days, before vs. after:
+
+!bcast-arp.gws.cap.stats.txt.png!
+
+h4. More statistics
+
+Before:
+
+<pre><code>
+# PCAP-file bits/s pkts/s
+bcast-arp.cap,6677.66,11.92
+bcast-arp.esps.cap,650.39,1.16
+bcast-arp.esps.rep.cap,0.00,0.00
+bcast-arp.esps.rep.grat.batbla.cap,0.00,0.00
+bcast-arp.esps.rep.grat.cap,0.00,0.00
+bcast-arp.esps.req.cap,650.39,1.16
+bcast-arp.esps.req.grat.cap,0.00,0.00
+bcast-arp.esps.req.probe.cap,0.01,0.00
+bcast-arp.gws.cap,5618.02,10.03
+bcast-arp.gws.rep.cap,0.00,0.00
+bcast-arp.gws.rep.grat.batbla.cap,0.00,0.00
+bcast-arp.gws.rep.grat.cap,0.00,0.00
+bcast-arp.gws.req.cap,5618.02,10.03
+bcast-arp.gws.req.grat.cap,0.00,0.00
+bcast-arp.gws.req.probe.cap,0.00,0.00
+bcast-arp.others.cap,409.25,0.72
+bcast-arp.others.rep.cap,0.28,0.00
+bcast-arp.others.rep.grat.batbla.cap,0.00,0.00
+bcast-arp.others.rep.grat.cap,0.28,0.00
+bcast-arp.others.req.cap,408.97,0.72
+bcast-arp.others.req.grat.cap,0.00,0.00
+bcast-arp.others.req.probe.cap,89.75,0.16
+</code></pre>
+
+After:
+
+<pre><code>
+# PCAP-file bits/s pkts/s
+bcast-arp.cap,677.26,1.21
+bcast-arp.esps.cap,163.95,0.29
+bcast-arp.esps.rep.cap,0.00,0.00
+bcast-arp.esps.rep.grat.batbla.cap,0.00,0.00
+bcast-arp.esps.rep.grat.cap,0.00,0.00
+bcast-arp.esps.req.cap,163.95,0.29
+bcast-arp.esps.req.grat.cap,0.00,0.00
+bcast-arp.esps.req.probe.cap,0.00,0.00
+bcast-arp.gws.cap,212.28,0.38
+bcast-arp.gws.rep.cap,0.00,0.00
+bcast-arp.gws.rep.grat.batbla.cap,0.00,0.00
+bcast-arp.gws.rep.grat.cap,0.00,0.00
+bcast-arp.gws.req.cap,212.28,0.38
+bcast-arp.gws.req.grat.cap,0.00,0.00
+bcast-arp.gws.req.probe.cap,0.00,0.00
+bcast-arp.others.cap,301.05,0.54
+bcast-arp.others.rep.cap,0.71,0.00
+bcast-arp.others.rep.grat.batbla.cap,0.00,0.00
+bcast-arp.others.rep.grat.cap,0.71,0.00
+bcast-arp.others.req.cap,300.35,0.53
+bcast-arp.others.req.grat.cap,0.00,0.00
+bcast-arp.others.req.probe.cap,88.33,0.16
+</code></pre>
+
+With the following hierarchical pcap filter rules:
+
+<pre><code>
+%YAML 1.2
+---
+_rules:
+ bcast-arp: "batadv 15 bcast and arp"
+ gws: "batadv 15 bcast and arp and ether src de:ad:ca:fe:aa:aa or ether src de:ad:ca:fe:dd:aa or ether src de:ad:ca:fe:bb:aa"
+ esps: "batadv 15 bcast and arp and ether src ec:da:3b:aa:83:28 or ether src 64:e8:33:f4:4e:38 or ether src d4:f9:8d:01:0a:40 or ether src ec:da:3b:a8:e0:00"
+ others: "batadv 15 bcast and arp and not (ether src de:ad:ca:fe:aa:aa or ether src de:ad:ca:fe:dd:aa or ether src de:ad:ca:fe:bb:aa or ether src ec:da:3b:aa:83:28 or ether src 64:e8:33:f4:4e:38 or ether src d4:f9:8d:01:a:40 or ether src ec:da:3b:a8:e0:00)"
+ req: "batadv 15 bcast and arp and arp[6:2] = 0x0001"
+ rep: "batadv 15 bcast and arp and arp[6:2] = 0x0002"
+ grat: "batadv 15 bcast and arp and arp[14:4] = arp[24:4]"
+ probe: "batadv 15 bcast and arp and arp[14:4] = 0x00000000 and arp[18:4] = 0x00000000 and arp[22:2] = 0x0000"
+ batbla: "batadv 15 bcast and arp and arp[18:2] = 0xff43 and arp[20:1] = 0x05"
+_output:
+ bcast-arp:
+ gws:
+ req:
+ grat:
+ probe:
+ rep:
+ grat:
+ batbla:
+ esps:
+ req:
+ grat:
+ probe:
+ rep:
+ grat:
+ batbla:
+ others:
+ req:
+ grat:
+ probe:
+ rep:
+ grat:
+ batbla:
+</code></pre>
\ No newline at end of file