Subject: [magma] What is an IGMPv3 Router's initial current state for a multicast group?

From: "Suvendu Mozumdar" <[email-masked]>
Date: Tue, 4 Mar 2008 22:40:36 -0800

Hi,
      I have a query regarding the IGMPv3/MLD Router behaviour. In
IGMPv3/MLDv2, the action of a router on receiving a report message for a
particular Group depends on the router's current state for the group at
the time of receiving the report, as defined in section 6.4 of RFC 3376.
Now what should be a router's initial current state for a group when it
has received the first report for the group, lets say a router comes up
afresh and receives the first report message for a group G1 with filter
mode TO_EX(NULL). Now it has to consider some initial current state for
the group and then based on that it has to take an action for the
TO_EX(NULL) report. 

My question is what should be a router's initial current state for a
group. I feel it should be INCLUDE(NULL), please advise.

-- 
Suvendu Mozumdar.
QA Architect.
Ixia Technologies Pvt. Ltd
9th Floor, Infinity Tower II
Sector V, Saltlake.
Kolkata 700091.
INDIA.
Mob : +919874081221 

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

---

From: "Alvaro Fernandez" <[email-masked]>
Date: Wed, 5 Mar 2008 08:56:09 +0100

Hi:
 
Initial state INCLUDE(A)
messaje TO_EX(B)
Final state EXCLUDE(A*B,B-A)
 
In the case B is "NULL" ( a empty list {} ) in the message, then the final state must be EXCLUDE({}, {}) and it doesn't matter which is the intial state. Both the requested list and the exclude list must be empty lists in the final state.
 
If the above is a litle difficult to understand is because, from my point of view, the requested list is a very bad solution to keep track of include sources when the filter mode is EXCLUDE. 
 
I think it would be a good idea to fix this in IGMPv4
 
Regards
 
Alvaro

________________________________

De: [email-masked] en nombre de Suvendu Mozumdar
Enviado el: mié 05/03/2008 7:40
Para: [email-masked]
Asunto: [magma] What is an IGMPv3 Router's initial current state for amulticast group?

Hi,
      I have a query regarding the IGMPv3/MLD Router behaviour. In IGMPv3/MLDv2, the action of a router on receiving a report message for a particular Group depends on the router's current state for the group at the time of receiving the report, as defined in section 6.4 of RFC 3376. Now what should be a router's initial current state for a group when it has received the first report for the group, lets say a router comes up afresh and receives the first report message for a group G1 with filter mode TO_EX(NULL). Now it has to consider some initial current state for the group and then based on that it has to take an action for the TO_EX(NULL) report. 

My question is what should be a router's initial current state for a group. I feel it should be INCLUDE(NULL), please advise.

---

From: "Suvendu Mozumdar" <[email-masked]>
Date: Wed, 5 Mar 2008 00:07:21 -0800

Thanks for replying. You have answered my question based on the example I cited. But the question was more generic. What should the router consider as initial state when it has received the first report for a particular group. You have considered it to be INCLUDE(A), but there is no A when the router has not seen the group before, is it NULL then?

From: Alvaro Fernandez [mailto:[email-masked]] 
Sent: Wednesday, March 05, 2008 1:26 PM
To: Suvendu Mozumdar; [email-masked]
Subject: RE: [magma] What is an IGMPv3 Router's initial current state for amulticast group?

Hi:

Initial state INCLUDE(A)

messaje TO_EX(B)

Regards

Alvaro

Hi,

---

From: "Alvaro Fernandez" <[email-masked]>
Date: Wed, 5 Mar 2008 16:06:01 +0100

Hi Suvendu,
 
There is no initial state in the IGMP router for a multicast group before the router receives an IGMP membership report for that multicast group. The IGMPv3 router creates the register for each multicast group after receiving the membership report asking  for multicast traffic.
 
Also the first report received by the router should be of the type IS_IN or IS_EX
 
no initial state + report IS_IN(B) -> final state = INCLUDE(B)
no initial state + report IS_EX(B) -> final state = EXCLUDE ({}, B)

I think the general rule should be::

no initial state + membership report asking for some multicast traffic1 -> final state of the router is the router sending that traffic1 and only that traffic1

Alvaro

De: Suvendu Mozumdar [mailto:[email-masked]]
Enviado el: mié 05/03/2008 9:07
Para: Alvaro Fernandez; [email-masked]
Asunto: RE: [magma] What is an IGMPv3 Router's initial current state for amulticast group?

Hi:

Initial state INCLUDE(A)

messaje TO_EX(B)

Regards

Alvaro

Hi,

---

From: Mark Fine <[email-masked]>
Date: Wed, 5 Mar 2008 11:13:18 -0800

Correct, similar to the specification for Interface State:

5.1. Action on Change of Interface State

           << snip >>

                                                                                  If
  no interface
    state existed for that multicast address before the change (i.e.,  
the
    change consisted of creating a new per-interface record), or if no
    state exists after the change (i.e., the change consisted of  
deleting
    a per-interface record), then the "non-existent" state is considered
    to have a filter mode of INCLUDE and an empty source list.

On Mar 4, 2008, at 10:40 PM, Suvendu Mozumdar wrote:

> IGMPv3/MLDv2, the action of a router on receiving a report message  
> for a particular Group depends on the router's current state for the  
> group at the time of receiving the report, as defined in section 6.4  
> of RFC 3376. Now what should be a router's initial current state for  
> a group when it has received the first report for the group, lets  
> say a router comes up afresh and receives the first report message  
> for a group G1 with filter mode TO_EX(NULL). Now it has to consider  
> some initial current state for the group and then based on that it  
> has to take an action for the TO_EX(NULL) report.
>

---

From: "Alvaro Fernandez" <[email-masked]>
Date: Thu, 6 Mar 2008 16:11:33 +0100

Hi,

"5. Description of the Protocol for Group Members
IGMP is an asymmetric protocol, specifying separate behaviors for  group members -- that is, hosts or routers that wish to receive  multicast packets -- and multicast routers. "

As explained in RFC 3376 you can use INCLUDE ({}) as initial state to calculate the  record sent when there is a change in a interface state using the table below:

     Old State                New State                 State-Change Record Sent
     ---------                    ---------                       ------------------------

     INCLUDE (A)       INCLUDE (B)               ALLOW (B-A), BLOCK (A-B)

     EXCLUDE (A)       EXCLUDE (B)            ALLOW (A-B), BLOCK (B-A)

     INCLUDE (A)       EXCLUDE (B)            TO_EX (B)

     EXCLUDE (A)       INCLUDE (B)            TO_IN (B)

But I would not affirm that you can do the same in the initial state of the routers because in routers you must consider not only the final state but also the router actions.

Note that if one host send the message TO_IN(B) to a router is because there is a change from EXCLUDE filter mode to INCLUDE filter mode. 

So when one router receives a TO_IN(B) I have a doubt about if the router should consider the initial state to be INCLUDE({})

There are two possible initial states and 6 membership reports. That is 12 combinations in the table below.

In the table below the message TO_IN are rows 8 and 12 and note that the actions in the router are different. In 12 there is a group specific query and in 8 there is not.

Best Regards

Alvaro

     INITIAL STATE REPORT     FINAL STATE          ACTIONS

     ------------  ---------  ------------------  -------------

 1.  INCLUDE (A)   IS_IN (B)  INCLUDE (A+B)       T(B)=GMI

     ------------  ---------  ------------------  -------------

 2.  INCLUDE (A)   IS_EX (B)  EXCLUDE (A*B,B-A)   T(B-A)=0

                                                  DEL(A-B)

                                               GT=GMI

     ------------  ---------  ------------------  -------------

 3.  EXCLUDE (X,Y) IS_IN (A)  EXCLUDE (X+A,Y-A)   T(A)=GMI

     ------------   --------  ------------------  -------------

 4.  EXCLUDE (X,Y) IS_EX (A)  EXCLUDE (A-Y,Y*A)   T(A-X-Y)=GMI

                                                  DEL (X-A)

                                                  DEL (Y-A)

                                                  GT=GMI

     ------------  ---------  ------------------  -------------

 5.  INCLUDE (A)   ALLOW (B)  INCLUDE (A+B)       T(B)=GMI

     ------------  ---------  ------------------  -------------

 6.  INCLUDE (A)   BLOCK (B)  INCLUDE (A)         SEND Q(G,A*B)

     ------------  ---------  ------------------  -------------

 7.  INCLUDE (A)   TO_EX (B)  EXCLUDE (A*B,B-A)   T(B-A)=0

                                                  DEL (A-B)

                                                  SEND Q(G,A*B)

                                                  GT=GMI

     ------------  ---------  ------------------  -------------

 8.  INCLUDE (A)   TO_IN (B)  INCLUDE (A+B)       T(B)=GMI

                                                  SEND Q(G,A-B)

     ------------  ---------  ------------------  -------------

 9.  EXCLUDE (X,Y) ALLOW (A)  EXCLUDE (X+A,Y-A)   T(A)=GMI

     ------------  ---------  ------------------  -------------

 10. EXCLUDE (X,Y) BLOCK (A)  EXCLUDE (X+(A-Y),Y) T(A-X-Y)=GT

                                                  SEND Q(G,A-Y)

     ------------  ---------  ------------------  -------------

 11. EXCLUDE (X,Y) TO_EX (A)  EXCLUDE (A-Y,Y*A)   T(A-X-Y)=GT

                                                  DEL (X-A)

                                                  DEL (Y-A)

                                                  SEND Q(G,A-Y)

                                                  GT=GMI

     ------------  ---------  ------------------  -------------

 12. EXCLUDE (X,Y) TO_IN (A)  EXCLUDE (X+A,Y-A)   T(A)=GMI

                                                  SEND Q(G,X-A)

                                                  SEND Q(G)

De: [email-masked] en nombre de Mark Fine
Enviado el: mié 05/03/2008 20:13
Para: Suvendu Mozumdar
CC: [email-masked]
Asunto: Re: [magma] What is an IGMPv3 Router's initial current state for amulticast group?

           << snip >>

                                                                                  If
  no interface

---

From: Mark Fine <[email-masked]>
Date: Thu, 6 Mar 2008 09:33:08 -0800

> Note that if one host send the message TO_IN(B) to a router is  
> because there is a change from EXCLUDE filter mode to INCLUDE filter  
> mode.
>
> So when one router receives a TO_IN(B) I have a doubt about if the  
> router should consider the initial state to be INCLUDE({})

The host's initial state is "a filter mode of INCLUDE and an empty  
source list" -- in the above example, there is no accounting of the  
host's preceding state change from this initial state to a filter mode  
of EXCLUDE. If the host's state is a filter mode of EXCLUDE, the  
router should already have created a filter mode of EXCLUDE from the  
TO_EX (B) state-change record sent by the host changing from its  
initial state ("a filter mode of INCLUDE and an empty source list").
_______________________________________________
magma mailing list
[email-masked]
https://www.ietf.org/mailman/listinfo/magma

---

From: "Alvaro Fernandez" <[email-masked]>
Date: Thu, 6 Mar 2008 21:24:22 +0100

>initial state ("a filter mode of INCLUDE and an empty source list").

Right, except if there is a reset in the router (as Suvendu wrote "lets say a router comes up afresh ") before receiving the TO_IN message. 
 
This is an example when considering INCLUDE with an empty list  as intial state for the router has some problems. 
 
But I think is the only case and the only difference is the Group specific query action in the router.
I don't remeber now why this Group specific query is necessary.
 
Alvaro

De: [email-masked] en nombre de Alvaro Fernandez
Enviado el: jue 06/03/2008 16:11
Para: Mark Fine; Suvendu Mozumdar
CC: [email-masked]
Asunto: Re: [magma] What is an IGMPv3 Router's initial current state foramulticast group?

Hi,

Best Regards

Alvaro

                                                  DEL(A-B)

                                               GT=GMI

                                                  DEL (X-A)

                                                  DEL (Y-A)

                                                  GT=GMI

                                                  DEL (A-B)

                                                  SEND Q(G,A*B)

                                                  GT=GMI

                                                  SEND Q(G,A-B)

                                                  SEND Q(G,A-Y)

                                                  DEL (X-A)

                                                  DEL (Y-A)

                                                  SEND Q(G,A-Y)

                                                  GT=GMI

                                                  SEND Q(G,X-A)

                                                  SEND Q(G)

           << snip >>

                                                                                  If
  no interface

---

From: Mark Fine <[email-masked]>
Date: Thu, 6 Mar 2008 13:15:44 -0800

> Right, except if there is a reset in the router (as Suvendu wrote  
> "lets say a router comes up afresh ") before receiving the TO_IN  
> message.
>
> This is an example when considering INCLUDE with an empty list  as  
> intial state for the router has some problems.
>

This is not a problem for the router: the difference in the New Router  
State and the difference in the Actions "if there is a reset in the  
router" is because of the non-existent state in the reset router. In  
the reset router there is no Old Router State to transition from,  
there is no source records to lower timers and send Group-and-Source- 
Specific Queries for, and there is no group record to lower timer and  
send Group-Specific Query for.

Orthogonally, routers use a reduced Query Interval on startup to  
minimize the duration of unlearned Router State when "there is a reset  
in the router", see 8.6 and 8.7.
_______________________________________________
magma mailing list
[email-masked]
https://www.ietf.org/mailman/listinfo/magma

---

From: "Alvaro Fernandez" <[email-masked]>
Date: Fri, 7 Mar 2008 10:22:06 +0100

Hi Mark,

I am happy to follow this discussion with you.

If there is a reset in a router and after the reset the router receives a TO_IN report, if the router considers the initial state after reset is INCLUDE with an empty list then the router will not send the group specific query of row 12 in the previous table I sent before ( the table is based on RFC 3376.)

But I think you can not say that because there is nor register in the router there is no problem with that.

If this is a problem or not depends on the reason why the router sends the group specific query in the row 12 of the table. Now I don't remember this reason. I studied it months ago and I must check my notes. I will check.

Best regards

Alvaro Fernandez

Note: I don't know why but from yesterday I am not receiving the e-mails from magma list.  If you send any response, please cc it to me. Thanks.

De: Mark Fine [mailto:[email-masked]]
Enviado el: jue 06/03/2008 22:15
Para: Alvaro Fernandez
CC: Suvendu Mozumdar; [email-masked]
Asunto: Re: [magma] What is an IGMPv3 Router's initial current state foramulticast group?