[Xorp-hackers] Handling LEAVE(*, G)

Pavlin Radoslavov pavlin at icir.org
Mon Mar 12 22:21:32 PDT 2007


> How XORP handles the following scenario?
> 
>                 +---------------+
> [A]-------|     |               |<---------->[S1]
>            |-----|   MRouter|<---------->[S2]
> [B]-------|     |               |<---------->[S3]
>                 +---------------+
> 1. A and B are on the same LAN and MRouter is the multicast router on that LAN.
> 2. A joins (S1,G) and B joins (S2, G).
> 3. A leaves G and sends a leave (*,G)
> 
> How does MRouter handles this (*,G) LEAVE?

The behavior is specified in the IGMPv3 spec (RFC 3376).

Before Step 3, Mrouter is in INCLUDE (A+B) state.
The IGMPv2 Leave (*,G) in Step 3 is equivalent to the IGMPv3
TO_IN( {} ) message (see Section 7.3.2 in the IGMPv3 spec).

Then according to Section 6.4.2 the new router state and actions
are (note that I changed A->M and B->N in the original description
to avoid confusion with your example):

Router State   Report Rec'd New Router State        Actions
------------   ------------ ----------------        -------
INCLUDE (M)    TO_IN (N)    INCLUDE (M+N)           (N)=GMI
                                                    Send Q(G,M-N)

In your example, M= A+B, while N is {} (i.e., empty). Therefore, the
new router state is INCLUDE (A+B+{}) = INCLUDE(A+B).
In addition, the router will send Group-and-Source Specific Query to
G with source-list {A+B}. 
Future state of MRouter depends on the received Reports. See Section
6.4.2 in the IGMPv3 spec for complete description of the state
transitions.

Regards,
Pavlin



More information about the Xorp-hackers mailing list