Re: IGMP v3 - Generation of Interface State Report

"K.Kawaguchi" <[email protected]> Thu, 25 Dec 2008 19:39:37 +0900
Newsgroups gmane.ietf.magma
Message-ID <[email protected]>
Hi,

If you are still interested, the following examples show my interpretation.
If it is a mistake, someone teach me.

------------------------------------------------------------------------
Case-1 IN(A)->IN(B)

1.Call IPMulticastListen(Socket-1,IF-1,Multicast-1,'INCLUDE',{a,b})
  => IN() -> IN(a,b): ALLOW(a,b): a go 2, b go 2.
     Retrans counter: a=2, b=2
  Send a Report ALLOW(Multicast-1,a,b)
  => Retrans counter: a=1, b=1
2.(Before retrans)
  Call IPMulticastListen(Socket-1,IF-1,Multicast-1,'INCLUDE',{a,c})
  => IN(a,b) -> IN(a,c): ALLOW(c), BLOCK(b): c go 2, b go -2.
     Retrans counter: a=1, b=-2, c=2
  Send a Report ALLOW(Multicast-1,{a,c}) and BLOCK(Multicast-1,{b})
  => Retrans counter: b=-1, c=1
  Send a Report ALLOW(Multicast-1,{c}) and BLOCK(Multicast-1,{b})


------------------------------------------------------------------------
Case-2 EX(A)->EX(B)

1.Call IPMulticastListen(Socket-1,IF-1,Multicast-1,'EXCLUDE',{a,b})
  => IN() -> EX(a,b): TO_EX(a,b): Filter go -2, a go -2, b go -2
     Retrans counter: Filter=-2, a=-2, b=-2
  Send a Report TO_EX(Multicast-1,{a,b})
  => Retrans counter: Filter=-1, a=-1, b=-1
2.(Before retrans)
  Call IPMulticastListen(Socket-1,IF-1,Multicast-1,'EXCLUDE',{a,c})
  => EX(a,b) -> EX(a,c): ALLOW(b), BLOCK(c): b go 2, c go -2
     Retrans counter: Filter=-1, a=-1, b=2, c=-2
  Send a Report TO_EX(Multicast-1,{a,c})
  => Retrans counter: b=1, c=-1
  Send a Report ALLOW(Multicast-1,{b}) and BLOCK(Multicast-1,{c})


------------------------------------------------------------------------
Case-3 IN(A)->EX(B)

1.Call IPMulticastListen(Socket-1,IF-1,Multicast-1,'INCLUDE',{a,b})
  => IN() -> IN(a,b): ALLOW(a,b): a go -2, b go -2
     Retrans counter: a=2, b=2
  Send a Report ALLOW(Multicast-1,{a,b})
  => Retrans counter: a=1, b=1
2.(Before retrans)
  Call IPMulticastListen(Socket-1,IF-1,Multicast-1,'EXCLUDE',{b,c})
  => IN(a,b) -> EX(b,c): TO_EX(b,c): Filter go 2, b go 2, c go 2
     Retrans counter: Filter=-2, a=1, b=-2, c=-2
  Send a Report TO_EX(Multicast-1,{b,c})
  => Retrans counter: Filter=-1, b=-1, c=-1
  Send a Report TO_EX(Multicast-1,{b,c})


------------------------------------------------------------------------
Case-4 EX(A)-IN(B)

1.Call IPMulticastListen(Socket-1,IF-1,Multicast-1,'EXCLUDE',{a,b})
  => IN() -> EX(a,b): TO_EX(a,b): Filter go -2, a go -2, b go -2
     Retrans counter: Filter=-2, a=-2, b=-2
  Send a Report a TO_EX(Multicast-1,{a,b})
  => Retrans counter: Filter=-1, a=-1, b=-1
2.Call IPMulticastListen(Socket-1,IF-1,Multicast-1,'INCLUDE',{b,c})
  => EX(a,b) -> IN(b,c): TO_IN(b,c): Filter go 2, b go 2, c go 2
     Retrans counter: Filter=2, a=-1, b=2, c=2
  Send a Report TO_IN(Multicast-1,{b,c})
  => Retrans counter: Filter=1, b=1, c=1
  Send a Report TO_IN(Multicast-1,{b,c})


Best Regards
--
Kiyoaki Kawaguchi



> Hello All,
>  
> I see discussion of IGMP v3 in this group context. My advance apologies if this is not the right place. RFC 3376 s5.1 describes procedure to g> enerate State Change Reports. 
>  
> ----------------------------
>    If the interface reception-state change that triggers the new report
>    is a filter-mode change, then the next [Robustness Variable] State-
>    Change Reports will include a Filter-Mode-Change record.  This
>    applies even if any number of source-list changes occur in that
>    period.  The host has to maintain retransmission state for the group
>    until the [Robustness Variable] State-Change reports have been sent.
>    When [Robustness Variable] State-Change reports with Filter-Mode-
>    Change records have been transmitted after the last filter-mode
>    change, and if source-list changes to the interface reception have
>    scheduled additional reports, then the next State-Change report will
>    include Source-List-Change records.
> ------------------------------
>  
> It seems this paragraph has different interpretations. A state machine would've been very helpful. 
>  
> (1) How would one treat the occurrence of source-list changes while Filter-Mode-Change record is in retransmission state? 
>  
>    (a) Send source-list changes (SLC) records as these events occur?
>    (b) If multiple events occur, perform the 'merge' operation and send the reports
>    (c) Keep the retransmission state, but do not retransmit as long as Filter-Mode-Change record state is active. On expiry of FMC state, and SLC records are retransmitted, if 'live'
>  
> (2) How would one treat the occurrence Filter-Mode-Change record of while source-list changes is in retransmission state?
>  
>       It seems we "clear" (/stop) source-list changes recrod retransmission on the occurrence of FMC event.
>  
> Any feedback is appreciated.
>  
> Thanks
> Venkat