Repository : ssh://git@diktynna/doc On branches: backup-redmine,main
commit 2835e22edd445e4a93de32945a2f24fdc991a87c Author: Linus Lüssing linus.luessing@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