Subject: [magma] IGMP/MLD-Proxying: broken upstream forwarding rule? (RFC 4605 section 4.2)

From: Mark Doll <[email-masked]>
Date: Thu, 27 Sep 2007 18:51:23 +0200

Hi!

The IGMP/MLD-Proxying RFC 4605 states in section 4.2. "Forwarding Packets":

   [...] A proxy device forwards packets received
   on any downstream interface to the upstream interface, and to each
   downstream interface other than the incoming interface based upon the
   downstream interfaces' subscriptions and whether or not this proxy
   device is the IGMP/MLD Querier on each interface. [...]

This seems to suggest an unconditional forwarding in the upstream direction,
which will lead to forwarding loops in any non loop-free physical topology
(any topology other than a tree). The correct forwarding rule must only
forward packets received on interfaces, on which the proxy is the querier. So
the above should read:

   A proxy device forwards packets received on any downstream interface, ON
   WHICH IT IS THE QUERIER, to the upstream interface, and to each
   downstream interface other than the incoming interface based upon the
   downstream interfaces' subscriptions and whether or not this proxy
   device is the IGMP/MLD Querier on each interface. [...]

For an example of a correct forwarding rule specification, cf. BIDIR-PIM's
data packet forwarding rules, draft-ietf-pim-bidir-09.txt, section 3.3:

   On receipt of data to G on interface iif:
    if( iif == RPF_interface(RPA) || I_am_DF(RPA,iif) ) {
       oiflist = olist(G) (-) iif
       forward packet on all interfaces in oiflist
    }

The "I_am_DF(RPA,iif)" (I am Designated Forwarder) in BIDIR-PIM is the
equivalent to "I am querier" in IGMP/MLD-Proxying. That's what's IMHO missing
in the current spec RFC 4605. Or do I get something completely wrong here?

Mark.

_______________________________________________
magma mailing list
[email-masked]
https://www1.ietf.org/mailman/listinfo/magma

---

From: Brian Haberman <[email-masked]>
Date: Thu, 27 Sep 2007 13:19:14 -0400

Mark Doll wrote:
> [...] A proxy device forwards packets received on any downstream
> interface to the upstream interface, and to each downstream interface
> other than the incoming interface based upon the downstream
> interfaces' subscriptions and whether or not this proxy device is the
> IGMP/MLD Querier on each interface. [...]
> 
> This seems to suggest an unconditional forwarding in the upstream
> direction, which will lead to forwarding loops in any non loop-free
> physical topology (any topology other than a tree). The correct
> forwarding rule must only forward packets received on interfaces, on
> which the proxy is the querier. So the above should read:

RFC 4605 only supports loop-free topologies.  The following text is in 
the Introduction:

    This document applies spanning tree multicast routing [MCAST] to an
    Internet Group Management Protocol (IGMP) or Multicast Listener
    Discovery (MLD)-only environment.  The topology is limited to a tree,
    since we specify no protocol to build a spanning tree over a more
    complex topology.  The root of the tree is assumed to be connected to
    a wider multicast infrastructure.

Regards,
Brian

---

From: Mark Doll <[email-masked]>
Date: Sat, 29 Sep 2007 14:42:04 +0200

Hi Brian!

Thanks for your prompt answer.

Brian Haberman wrote:
>> physical topology (any topology other than a tree).
> 

I can live with that, but then I wonder what's the forwarder selection (for
downstream forwarding) is good for. If there's always only a single router
towards the root (as it is the case in a tree topology), there is no need for
selecting a designated forwarder.

Furthermore, the example in RFC 4605, section 3, is misleading, as it
suggests, that the displayed topology is possible with IGMP/MLD-Proxying:

           LAN 1  --------------------------------------
                  Upstream |              | Upstream
                           A              B
                Downstream |              | Downstream
           LAN 2  --------------------------------------

But it is not. Suppose that there are, on LAN 2, one receiver, that joined a
multicast group, and one source sending to that group. With the current spec,
as I understand it, both routers A and B will unconditionally forward traffic
onto LAN 1. A second receiver on LAN 1 will thus receive every packet twice.
Worse, one of the routers, the one, that is the querier on LAN 2, will forward
all traffic, that was forwarded by the other router onto LAN 1, back in the
downstream direction onto LAN 2, thus creating a loop.

The simple solution to this "bug" is not to forward unconditionally in
upstream direction but to forward only if one is the querier on the incoming
(downstream) interface. In the displayed topology, only one of the routers
will then forward traffic from LAN 2 onto LAN 1 an no traffic will loop back.

Since this solution is so straightforward, I wonder, if implementations
already fix this bug (does anyone know about a freely available implementation
of IGMP/MLG-Proxying?). To be honest, I always thought, upstream forwarding
would take queriership into account until I recently re-read RFC 4605 and
stumbled upon the formulation in the packet forwarding in section 4.2.

Mark.

---

From: "Alvaro Fernandez" <[email-masked]>
Date: Sun, 30 Sep 2007 13:45:10 +0200

>selecting a designated forwarder.
 
The tree topology restriction is only for IGMP proxys but multiple IGMP routers (not proxies) can be connected to the same shared LAN. I think this is the reason why DR election is needed.
 
I hope this can help you
Regards

Alvaro

________________________________

De: Mark Doll [mailto:[email-masked]]
Enviado el: sáb 29/09/2007 14:42
Para: Brian Haberman
CC: [email-masked]
Asunto: Re: [magma] IGMP/MLD-Proxying: broken upstream forwarding rule? (RFC4605 section 4.2)

Hi Brian!

Mark.

---

From: Mark Doll <[email-masked]>
Date: Sun, 30 Sep 2007 15:32:34 +0200

Hi Alvaro!

Alvaro Fernandez wrote:
> Mark wrote:
> 
>> I can live with that, but then I wonder what's the forwarder selection
>> (for downstream forwarding) is good for. If there's always only a single
>> router towards the root (as it is the case in a tree topology), there is
>> no need for selecting a designated forwarder.
> 
> The tree topology restriction is only for IGMP proxys but multiple IGMP
> routers (not proxies) can be connected to the same shared LAN. I think this
> is the reason why DR election is needed.

Hmm, forwarder selection differs from protocol to protocol (IGMP/MLD Proxying:
querier election (downstream only), BIDIR-PIM: designated forwarder election
(both directions), PIM-SM/-DM: asserts, DVMRP/MOSPF: inherent (best metric to
source/to receiver)). So I suppose this feature won't help interworking
between different protocols.

Mark.