[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