b.a.t.m.a.n.lists.open-mesh.org archive mirror
 help / color / mirror / Atom feed
From: "Linus Lüssing" <linus.luessing@web.de>
To: Ajith Adapa <adapa.ajith@gmail.com>
Cc: netdev@vger.kernel.org, bridge@lists.linux-foundation.org,
	b.a.t.m.a.n@lists.open-mesh.org
Subject: Re: [B.A.T.M.A.N.] [PATCHv2 net-next 2/4] bridge: adhere to querier election mechanism specified by RFCs
Date: Fri, 27 Jun 2014 02:12:23 +0200	[thread overview]
Message-ID: <20140627001223.GA28373@Linus-Debian> (raw)
In-Reply-To: <CADAe=+KViC7uej0KM4TrQXxrk-amU7CX73buviMU17jpQm61bw@mail.gmail.com>

Hi Ajith,


On Mon, Jun 23, 2014 at 07:58:21AM +0530, Ajith Adapa wrote:
> Hi Luessing,
> 
> As per RFC 4541, snooping switches send query with source address as
> 0.0.0.0 since port in a L2 switch doesn't have ip-address configured.

Hm, I'm not quite sure whether this is true. Do you have a
section/paragraph in RFC4541 which says that?

To me, it seems that 0.0.0.0/:: should only be used when the
topology changes, on links becoming active (the RFC uses the example
of STP). As a performance optimization but not as the source
address for General Queries.

In section 2.1.1 1) b) says:

     "The 0.0.0.0 address represents a special case where the switch
      is proxying IGMP Queries for faster network convergence,
      but is not itself the Querier."

In section 2.1.1 4) it says:

     "If the switch is not the Querier, it should use the 'all-zeros' IP
      Source Address in these proxy queries (even though some hosts may
      elect to not process queries with a 0.0.0.0 IP Source Address)."

(which seems to imply that if a switch is the selected Querier, that
it should use something other than the 'all-zeros' IP Source
Address?)

Also, section 2.1.1 4) says:

"[...] even though some hosts may elect to not process queries with a
 0.0.0.0 IP Source Address"

Which seems to indicate that 0.0.0.0 might be a bad choice to get
reliable IGMP Reports and might only make sense for performance
optimizations (at least for IPv4 - for IPv6 it doesn't make sense
to me to send General Queries with '::' source address at all
since '::' is ignored by hosts per RFC).

(*)

> 
> With current changes linux bridge will always select a querier who sends a
> query message with 0.0.0.0. Right ?
> 
> +       if (ntohl(saddr) <= ntohl(br->ip4_querier.addr.u.ip4))
> +               goto update;

Yes. Which is what the querier election mechanism in the RFCs for
IGMPv2/IGMPv3 (RFC2236/RFC3376) specifies, I think. (**)

> 
> Currently linux bridge sends a query message with source address as
> 0.0.0.0. Right ?

For IPv4, this is currently the default, yes. (there's a sysfs switch
to change that, if desired) (***)

> 
> What should be the expected behaviour ?

Hm, good question.

Regarding (***): After rereading RFC4541 a few more times, I think
(*) would be the right choice: The bridge code should probably be
changed to always use an available, non-zero IPv4 source address
for General Queries. If none is available it, doesn't make sense
to me to become the selected Querier at all (should be changed for
IPv6, too: Currently it refrains from sending Query messages
then, but thinks a valid querier were in the network, enabling
the multicast snooping of the bridge).


Regarding (**): Now that you're mentioning that, you're right, my
change isn't quite straightforward in that regard, a few lines
earlier there is:

> +       if (!br->ip4_querier.addr.u.ip4)
> +               goto update;

So it would select the all-zeros Querier if it receives such
messages. But would happily switch to a non-all-zeros Querier as
well if receiving such messages...

And now, this baffles me, section 2.1.1 4) again:

     "When such proxy queries are received, they must not be included in
      the Querier election process."

If we were following that, a snooping switch and a true multicast
router could potentially have an argument about which becomes the
selected IGMP querier? (for IPv6/MLD this dilemma should not
exist, I think)

I'm currently unsure, whether we should follow
RFC2236(IGMPv2)+RFC3376(IGMPv3) or the informational (!) RFC4541.

Or am I overlooking something? What do others think?

Cheers, Linus

  parent reply	other threads:[~2014-06-27  0:12 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-25  5:03 [B.A.T.M.A.N.] [PATCHv2 net-next 0/4] bridge: multicast snooping patches / exports Linus Lüssing
2014-05-25  5:03 ` [B.A.T.M.A.N.] [PATCHv2 net-next 1/4] bridge: rename struct bridge_mcast_query/querier Linus Lüssing
2014-05-25  5:03 ` [B.A.T.M.A.N.] [PATCHv2 net-next 2/4] bridge: adhere to querier election mechanism specified by RFCs Linus Lüssing
     [not found]   ` <CADAe=+KViC7uej0KM4TrQXxrk-amU7CX73buviMU17jpQm61bw@mail.gmail.com>
2014-06-27  0:12     ` Linus Lüssing [this message]
2014-05-25  5:03 ` [B.A.T.M.A.N.] [PATCHv2 net-next 3/4] bridge: add export of multicast database adjacent to net_dev Linus Lüssing
2014-05-30 14:38   ` Stephen Hemminger
2014-05-25  5:03 ` [B.A.T.M.A.N.] [PATCHv2 net-next 4/4] bridge: memorize and export selected IGMP/MLD querier port Linus Lüssing
2014-05-29 22:36 ` [B.A.T.M.A.N.] [PATCHv2 net-next 0/4] bridge: multicast snooping patches / exports David Miller
2014-05-30 14:37   ` Stephen Hemminger

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=20140627001223.GA28373@Linus-Debian \
    --to=linus.luessing@web.de \
    --cc=adapa.ajith@gmail.com \
    --cc=b.a.t.m.a.n@lists.open-mesh.org \
    --cc=bridge@lists.linux-foundation.org \
    --cc=netdev@vger.kernel.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).