From: Vlad Yasevich <vyasevich@gmail.com>
To: "Linus Lüssing" <linus.luessing@web.de>,
"Jan Stancek" <jstancek@redhat.com>
Cc: netdev@vger.kernel.org, Florian Westphal <fwestpha@redhat.com>,
bridge@lists.linux-foundation.org
Subject: Re: bridge is not forwaring ICMP6 neighbor solicitation to KVM guest
Date: Mon, 03 Mar 2014 16:40:40 -0500 [thread overview]
Message-ID: <5314F6D8.2050701@gmail.com> (raw)
In-Reply-To: <20140303212759.GW5090@Linus-Debian>
On 03/03/2014 04:27 PM, Linus Lüssing wrote:
> Hi Jan,
>
> On Mon, Mar 03, 2014 at 02:47:15PM -0500, Jan Stancek wrote:
>> I'm seeing an issue where bridge (sometimes) stops forwarding ICMP6
>> neighbor solicitation packets to KVM guest and as result KVM guest doesn't
>> respond with neighbor advertisement.
>
> Hm, okay, that's not supposed to happen.
>
>> The reason I think this packet is related is because when I send same exact
>> packet I'm often hitting same issue - bridge stops forwarding ICMP6 neigh.
>> solicitation packets to KVM guest.
>
> Yes, the MLD query is kicking the multicast snooping into gear. If
> there's never a query, then snooping is basically disabled
> (compare: "bridge: disable snooping if there is no querier").
>
>>
>> My current way to reproduce this is:
>> 0. host B IP / MAC is: 2620:52:0:1040:221:5aff:fe47:931c / 00:21:5a:47:93:1c
>> guest IP / MAC is: 2620:52:0:1040:5056:ff:fe00:29 / 52:56:00:00:00:29
>> 1. host B is sending neigh solicit packets every 5 seconds with KVM guest IP
>> using ns6 from ipv6toolkit: http://www.si6networks.com/tools/ipv6toolkit/
>> with parameters:
>> --src-address=2620:52:0:1040:221:5aff:fe47:931c --dst-address=ff02::1:ff00:0029
>> -t 2620:52:0:1040:5056:ff:fe00:29 --link-src-address=00:21:5a:47:93:1c
>> --source-lla-opt=00:21:5a:47:93:1c --link-dst-address=33:33:ff:00:00:29
>> tcpdump running on guest can see both solicit and advertisement packets
>> 2. wait ~5 minutes
>> 3. host B sends Multicast Listener Query packet described above
>> 4. tcpdump running on guest is no longer seeing any neigh solicit packets
>
> Just to clarify, host B is behind eno1 and vnet0 is directly
> connected to the interface of the guest, no additional bridge or
> anything else on top of that, right?
>
> Would it be possible for you to upload the tcpdumps from host B
> (or if you can't tcpdump on host B, then capturing on eno1)
> and the guest somewhere and saying at which time/packet in the dumps
> it stops working (probably ~10 seconds after the query). Filtering
> for ICMPv6 should be sufficient.
>
> What I'm curious about is, whether the guest receives
> the MLD query and responds with an MLD report. I suspect that
> either the bridge doesn't get an MLD report and therefore is
> shutting down the according port or there's a bug in parsing the
> MLD report in the bridge code.
>
I did notice a minor issue in the bridge code. The following
code:
/* Prevent flooding this packet if there is no listener present */
if (!ipv6_addr_is_ll_all_nodes(&ip6h->daddr))
BR_INPUT_SKB_CB(skb)->mrouters_only = 1;
if (ip6h->nexthdr != IPPROTO_HOPOPTS ||
ip6h->payload_len == 0)
return 0;
will mark most multicast traffic is mrouters_only. The two
statement should be probably be reversed. However, that's shouldn't
cause the reported problem.
-vlad
>
> Thanks for the detailed report so far!
>
> Cheers, Linus
>
next prev parent reply other threads:[~2014-03-03 21:40 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1566805413.12693479.1393872931017.JavaMail.zimbra@redhat.com>
2014-03-03 19:47 ` bridge is not forwaring ICMP6 neighbor solicitation to KVM guest Jan Stancek
2014-03-03 21:27 ` Linus Lüssing
2014-03-03 21:40 ` Vlad Yasevich [this message]
2014-03-03 23:03 ` Linus Lüssing
2014-03-03 22:45 ` Jan Stancek
2014-03-04 0:00 ` Linus Lüssing
2014-03-04 8:02 ` Jan Stancek
2014-03-04 10:52 ` Linus Lüssing
2014-03-04 11:06 ` Jan Stancek
2014-03-04 21:37 ` Linus Lüssing
2014-03-05 12:10 ` Jan Stancek
2014-03-05 14:27 ` Linus Lüssing
2014-03-05 14:57 ` Jan Stancek
2014-03-12 4:37 ` Linus Lüssing
2014-03-12 7:45 ` Jan Stancek
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=5314F6D8.2050701@gmail.com \
--to=vyasevich@gmail.com \
--cc=bridge@lists.linux-foundation.org \
--cc=fwestpha@redhat.com \
--cc=jstancek@redhat.com \
--cc=linus.luessing@web.de \
--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).