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

Mark Doll <[email protected]> Thu, 27 Sep 2007 18:51:23 +0200
Newsgroups gmane.ietf.magma
Organization Karlsruhe Institute of Technology
Message-ID <[email protected]>
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.