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