b.a.t.m.a.n.lists.open-mesh.org archive mirror
 help / color / mirror / Atom feed
From: Simon Wunderlich <sw@simonwunderlich.de>
To: b.a.t.m.a.n@lists.open-mesh.org
Subject: Re: [B.A.T.M.A.N.] [PATCH v5 2/6] batman-adv: speed up dat by snooping received ip traffic
Date: Fri, 01 Jul 2016 15:49:54 +0200	[thread overview]
Message-ID: <1655869.LYQpVbDg6l@prime> (raw)
In-Reply-To: <1465557064-24406-3-git-send-email-apape@phoenixcontact.com>

[-- Attachment #1: Type: text/plain, Size: 6188 bytes --]

Hi Andreas,

as suggested by yourself and according to the discussion, please drop this 
patch from the patchset on the next resend. It may be better to resend it 
separately when the concerns are cleared.

Thanks!
    Simon

On Friday 10 June 2016 13:11:00 Andreas Pape wrote:
> Speeding up dat address lookup is achieved by snooping all incoming ip
> traffic. This especially increases the propability in bla setups that
> a gateway into a common backbone network already has a fitting dat entry
> to answer incoming ARP requests directly coming from the backbone
> network thus further reducing ARP traffic in the mesh.
> 
> Signed-off-by: Andreas Pape <apape@phoenixcontact.com>
> ---
>  net/batman-adv/distributed-arp-table.c |   55
> ++++++++++++++++++++++++++++++++ net/batman-adv/distributed-arp-table.h |  
>  9 +++++-
>  net/batman-adv/soft-interface.c        |    3 ++
>  3 files changed, 66 insertions(+), 1 deletions(-)
> 
> diff --git a/net/batman-adv/distributed-arp-table.c
> b/net/batman-adv/distributed-arp-table.c index b752f8d..998a4b8 100644
> --- a/net/batman-adv/distributed-arp-table.c
> +++ b/net/batman-adv/distributed-arp-table.c
> @@ -27,6 +27,7 @@
>  #include <linux/if_arp.h>
>  #include <linux/if_ether.h>
>  #include <linux/if_vlan.h>
> +#include <linux/ip.h>
>  #include <linux/in.h>
>  #include <linux/jiffies.h>
>  #include <linux/kernel.h>
> @@ -362,6 +363,60 @@ out:
>  		batadv_dat_entry_put(dat_entry);
>  }
> 
> +/**
> + * batadv_dat_entry_check - check and update a dat entry
> + * @bat_priv: the bat priv with all the soft interface information
> + * @skb: socket buffer
> + * @vid: VLAN identifier
> + *
> + * snoops incoming socket buffer for dat cache updates, if dat is enabled.
> + * Can be called from other modules.
> + */
> +void batadv_dat_entry_check(struct batadv_priv *bat_priv, struct sk_buff
> *skb, +			    unsigned short vid)
> +{
> +	struct vlan_ethhdr *vhdr = NULL, tmp_vhdr;
> +	struct ethhdr *ethhdr = NULL;
> +	struct iphdr *iphdr = NULL, tmp_iphdr;
> +
> +	if (!atomic_read(&bat_priv->distributed_arp_table))
> +		return;
> +
> +	ethhdr = eth_hdr(skb);
> +
> +	switch (ntohs(ethhdr->h_proto)) {
> +	case ETH_P_IP:
> +		iphdr = skb_header_pointer(skb, ETH_HLEN, sizeof(tmp_iphdr),
> +					   &tmp_iphdr);
> +		break;
> +	case ETH_P_8021Q:
> +		vhdr = skb_header_pointer(skb, 0, sizeof(tmp_vhdr),
> +					  &tmp_vhdr);
> +		if (!vhdr)
> +			return;
> +		if (ntohs(vhdr->h_vlan_encapsulated_proto) != ETH_P_IP)
> +			return;
> +		iphdr = skb_header_pointer(skb, sizeof(tmp_vhdr),
> +					   sizeof(tmp_iphdr),
> +					   &tmp_iphdr);
> +		break;
> +	}
> +
> +	if (!iphdr)
> +		return;
> +	/* don't add source address 0.0.0.0, which can occur during
> +	 * dhcp discover or request.
> +	 */
> +	if (ntohl(iphdr->saddr) == 0)
> +		return;
> +
> +	batadv_dbg(BATADV_DBG_DAT, bat_priv,
> +		   "Snooped IP address: %pI4 %pM (vid: %d)\n",
> +		   &iphdr->saddr, ethhdr->h_source,
> +		   BATADV_PRINT_VID(vid));
> +	batadv_dat_entry_add(bat_priv, iphdr->saddr, ethhdr->h_source, vid);
> +}
> +
>  #ifdef CONFIG_BATMAN_ADV_DEBUG
> 
>  /**
> diff --git a/net/batman-adv/distributed-arp-table.h
> b/net/batman-adv/distributed-arp-table.h index 813ecea..cf1b93c 100644
> --- a/net/batman-adv/distributed-arp-table.h
> +++ b/net/batman-adv/distributed-arp-table.h
> @@ -80,7 +80,8 @@ batadv_dat_init_own_addr(struct batadv_priv *bat_priv,
>  int batadv_dat_init(struct batadv_priv *bat_priv);
>  void batadv_dat_free(struct batadv_priv *bat_priv);
>  int batadv_dat_cache_seq_print_text(struct seq_file *seq, void *offset);
> -
> +void batadv_dat_entry_check(struct batadv_priv *bat_priv, struct sk_buff
> *skb, +			    unsigned short vid);
>  /**
>   * batadv_dat_inc_counter - increment the correct DAT packet counter
>   * @bat_priv: the bat priv with all the soft interface information
> @@ -173,6 +174,12 @@ static inline void batadv_dat_inc_counter(struct
> batadv_priv *bat_priv, {
>  }
> 
> +static inline
> +void batadv_dat_entry_check(struct batadv_priv *bat_priv, struct sk_buff
> *skb, +			    unsigned short vid)
> +{
> +}
> +
>  #endif /* CONFIG_BATMAN_ADV_DAT */
> 
>  #endif /* _NET_BATMAN_ADV_DISTRIBUTED_ARP_TABLE_H_ */
> diff --git a/net/batman-adv/soft-interface.c
> b/net/batman-adv/soft-interface.c index 81665b1..a86748f 100644
> --- a/net/batman-adv/soft-interface.c
> +++ b/net/batman-adv/soft-interface.c
> @@ -442,6 +442,9 @@ void batadv_interface_rx(struct net_device *soft_iface,
>  		goto dropped;
>  	}
> 
> +	/* Snoop incoming traffic for dat update */
> +	batadv_dat_entry_check(bat_priv, skb, vid);
> +
>  	/* skb->dev & skb->pkt_type are set here */
>  	skb->protocol = eth_type_trans(skb, soft_iface);
> 
> --
> 1.7.0.4
> 
> 
> 
> ..................................................................
> PHOENIX CONTACT ELECTRONICS GmbH
> 
> Sitz der Gesellschaft / registered office of the company: 31812 Bad Pyrmont
> USt-Id-Nr.: DE811742156
> Amtsgericht Hannover HRB 100528 / district court Hannover HRB 100528
> Geschäftsführer / Executive Board: Roland Bent, Dr. Martin Heubeck
> ___________________________________________________________________
> Diese E-Mail enthält vertrauliche und/oder rechtlich geschützte
> Informationen. Wenn Sie nicht der richtige Adressat sind oder diese E-Mail
> irrtümlich erhalten haben, informieren Sie bitte sofort den Absender und
> vernichten Sie diese Mail. Das unerlaubte Kopieren, jegliche anderweitige
> Verwendung sowie die unbefugte Weitergabe dieser Mail ist nicht gestattet.
> ---------------------------------------------------------------------------
> ------------------------- This e-mail may contain confidential and/or
> privileged information. If you are not the intended recipient (or have
> received this e-mail in error) please notify the sender immediately and
> destroy this e-mail. Any unauthorized copying, disclosure, distribution or
> other use of the material or parts thereof is strictly forbidden.
> ___________________________________________________________________

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

  parent reply	other threads:[~2016-07-01 13:49 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-10 11:10 [B.A.T.M.A.N.] [PATCH v5 0/6] Optimizations for setups running dat and bla Andreas Pape
2016-06-10 11:10 ` [B.A.T.M.A.N.] [PATCH v5 1/6] batman-adv: prevent multiple ARP replies sent by gateways if dat enbled Andreas Pape
2016-07-01 13:52   ` Simon Wunderlich
2016-06-10 11:11 ` [B.A.T.M.A.N.] [PATCH v5 2/6] batman-adv: speed up dat by snooping received ip traffic Andreas Pape
2016-06-25 10:04   ` Sven Eckelmann
2016-06-26  8:54     ` Ruben Wisniewski
2016-06-26  9:29       ` Sven Eckelmann
2016-07-01 13:49   ` Simon Wunderlich [this message]
2016-07-19  6:29     ` Linus Lüssing
2016-07-19  6:59       ` Sven Eckelmann
2016-07-19  7:06         ` Ruben Wisniewski
2016-07-19 16:15           ` Linus Lüssing
2016-07-19 16:13         ` Linus Lüssing
2016-06-10 11:11 ` [B.A.T.M.A.N.] [PATCH v5 3/6] batman-adv: prevent duplication of ARP replies when DAT is used Andreas Pape
2016-07-01 14:11   ` Simon Wunderlich
2016-06-10 11:11 ` [B.A.T.M.A.N.] [PATCH v5 4/6] batman-adv: drop unicast packets from other backbone gw Andreas Pape
2016-07-01 13:48   ` Simon Wunderlich
2016-06-10 11:11 ` [B.A.T.M.A.N.] [PATCH v5 5/6] batman-adv: changed debug messages for easier bla debugging Andreas Pape
2016-06-10 11:11 ` [B.A.T.M.A.N.] [PATCH v5 6/6] batman-adv: handle race condition for claims between gateways Andreas Pape
2016-06-10 11:51 ` [B.A.T.M.A.N.] [PATCH v5 0/6] Optimizations for setups running dat and bla Sven Eckelmann
2016-06-13  8:06   ` Andreas Pape
2016-06-13  9:01     ` Sven Eckelmann
2016-07-01 14:12       ` Simon Wunderlich

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1655869.LYQpVbDg6l@prime \
    --to=sw@simonwunderlich.de \
    --cc=b.a.t.m.a.n@lists.open-mesh.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).