diff mbox

net: Resend IGMP memberships upon peer notification.

Message ID 1489496288-24139-1-git-send-email-vyasevic@redhat.com
State Accepted, archived
Delegated to: David Miller
Headers show

Commit Message

Vladislav Yasevich March 14, 2017, 12:58 p.m. UTC
When we notify peers of potential changes,  it's also good to update
IGMP memberships.  For example, during VM migration, updating IGMP
memberships will redirect existing multicast streams to the VM at the
new location.

Signed-off-by: Vladislav Yasevich <vyasevic@redhat.com>
---
 net/core/dev.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Michael S. Tsirkin March 14, 2017, 3:32 p.m. UTC | #1
On Tue, Mar 14, 2017 at 08:58:08AM -0400, Vladislav Yasevich wrote:
> When we notify peers of potential changes,  it's also good to update
> IGMP memberships.  For example, during VM migration, updating IGMP
> memberships will redirect existing multicast streams to the VM at the
> new location.
> 
> Signed-off-by: Vladislav Yasevich <vyasevic@redhat.com>


what will happen on the source? will the snooping bridge remove
membership on port removal as appropriate?

> ---
>  net/core/dev.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/net/core/dev.c b/net/core/dev.c
> index a229bf0..1ed927d 100644
> --- a/net/core/dev.c
> +++ b/net/core/dev.c
> @@ -1272,6 +1272,7 @@ void netdev_notify_peers(struct net_device *dev)
>  {
>  	rtnl_lock();
>  	call_netdevice_notifiers(NETDEV_NOTIFY_PEERS, dev);
> +	call_netdevice_notifiers(NETDEV_RESEND_IGMP, dev);
>  	rtnl_unlock();
>  }
>  EXPORT_SYMBOL(netdev_notify_peers);
> -- 
> 2.7.4
Michael S. Tsirkin March 14, 2017, 4:36 p.m. UTC | #2
On Tue, Mar 14, 2017 at 08:58:08AM -0400, Vladislav Yasevich wrote:
> When we notify peers of potential changes,  it's also good to update
> IGMP memberships.  For example, during VM migration, updating IGMP
> memberships will redirect existing multicast streams to the VM at the
> new location.
> 
> Signed-off-by: Vladislav Yasevich <vyasevic@redhat.com>

Seems to make sense

Acked-by: Michael S. Tsirkin <mst@redhat.com>

but I also think there's another problem: source does not
leave the groups on migration. So I think we should add code on the
host - it's snooping IGMPs so it should be able to leave groups on the
source when VM is disconnected.



> ---
>  net/core/dev.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/net/core/dev.c b/net/core/dev.c
> index a229bf0..1ed927d 100644
> --- a/net/core/dev.c
> +++ b/net/core/dev.c
> @@ -1272,6 +1272,7 @@ void netdev_notify_peers(struct net_device *dev)
>  {
>  	rtnl_lock();
>  	call_netdevice_notifiers(NETDEV_NOTIFY_PEERS, dev);
> +	call_netdevice_notifiers(NETDEV_RESEND_IGMP, dev);
>  	rtnl_unlock();
>  }
>  EXPORT_SYMBOL(netdev_notify_peers);
> -- 
> 2.7.4
David Miller March 14, 2017, 6:34 p.m. UTC | #3
From: Vladislav Yasevich <vyasevich@gmail.com>
Date: Tue, 14 Mar 2017 08:58:08 -0400

> When we notify peers of potential changes,  it's also good to update
> IGMP memberships.  For example, during VM migration, updating IGMP
> memberships will redirect existing multicast streams to the VM at the
> new location.
> 
> Signed-off-by: Vladislav Yasevich <vyasevic@redhat.com>

Applied, thanks Vlad.
diff mbox

Patch

diff --git a/net/core/dev.c b/net/core/dev.c
index a229bf0..1ed927d 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -1272,6 +1272,7 @@  void netdev_notify_peers(struct net_device *dev)
 {
 	rtnl_lock();
 	call_netdevice_notifiers(NETDEV_NOTIFY_PEERS, dev);
+	call_netdevice_notifiers(NETDEV_RESEND_IGMP, dev);
 	rtnl_unlock();
 }
 EXPORT_SYMBOL(netdev_notify_peers);