Internet DRAFT - draft-girish-raj-proxy-reporting-impl
draft-girish-raj-proxy-reporting-impl
INTERNET-DRAFT Girish Kumar Gupta
Category: Informational Future Software
Expires: January 2005 Rajesh Babu Nataraja
RiverStone Networks
July 2004
Implementation of IGMP and MLD Proxy-Reporting Switches
<draft-girish-raj-proxy-reporting-impl-00.txt>
Status of this Memo
By submitting this Internet-Draft, I certify that any applicable
patent or other IPR claims of which I am aware have been disclosed,
or will be discarded, any of which I become aware will be
disclosed, in accordance with RFC 3668.
Internet Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as
Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six
months and may be updated, replaced, or obsoleted by other documents
at any time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
Abstract
This document suggests a way for implementing a IGMP/MLD proxy-
reporting switch in which reports received from downstream hosts
and queries received from upstream routers are used to build the
Subscription Aggregation table. Subscription Aggregation table can
be used for forwarding multicast data traffic, sending state change
and current state reports to upstream router ports.
1. Introduction
This memo assumes familiarity with the IGMP/MLD proxy and snooping
switches. A IGMP/MLD proxy-reporting switch acts as a querier for
the downstream hosts and acts as a host for the upstream routers. A
procedure for building the membership record by merging the
downstream subscriptions is described in section 4.1 of current
specification [PROXY]. Each time the subscription changes on any
downstream port, the merging rules are to be applied on every
downstream subscription for that multicast address to build the
membership record. This method involves a significant overhead. In
Gupta & Nataraja Expires - January 2005 [Page 1]
INTERNET-DRAFT proxy-reporting-implementation July 2004
addition, the specification [PROXY] does not describe a method for
building the multicast forwarding table.
This document introduces a new table called the Subscription
Aggregation Table which can be used as the multicast forwarding
table for forwarding MDPs (Multicast Data Packets). The table can
also be used for sending state change and current state records to
upstream router ports. The mechanism described here will reduce the
overhead involved in forwarding MDPs and building the upstream state
change records whenever there is a change in subscription on any
downstream port. Deployment scenarios for proxy-reporting switch are
the same as mentioned in [PROXY].
MLD mixed version proxying as specified in [MIXED-PROXYING] can be
achieved using proxy-reporting switches. Another advantage of proxy-
reporting switches over snooping switches which do not implement
proxy-reporting function is that the reports will not be forwarded
on upstream router ports if the forwarding state of the switch for a
particular (S,G)/(*,G) is not changing. This will significantly
reduce the number of reports sent upstream.
2. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in
this document are to be interpreted as described in [RFC 2119].
2.1 Pseudocode Notation
We use set notation at several places in this specification.
"A+B" is the union of sets A and B
"A*B" is the intersection of sets A and B
"A-B" is the removal of all elements of set B from set A
NULL is empty set or list
C like syntax:
= Denotes assignment of a variable.
== denotes a comparison for equality
!= denotes comparison for inequality
&& denotes logical AND operation
3. Proxy-reporting switch considerations
The proxy-reporting switch SHOULD follow the recommendations listed
in section 2 of [SNOOPING]. To achieve the proxy-reporting
functionality, the following changes MUST be made in the IGMP
Forwarding rules described in section 2.1.1 of [SNOOPING]-
Gupta, Nataraja Expires - January 2005 [Page 2]
INTERNET-DRAFT proxy-reporting-implementation July 2004
1) A Proxy-reporting switch MUST not forward IGMP Membership Reports
on any ports. If IGMPv1/v2 membership reports are forwarded on the
ports on which routers are attached, as referred in section 2.1.1
of [SNOOPING], the router will go to lower version compatibility
mode for the multicast address for which report has been
forwarded.
2) Queries from ports on which routers are attached MUST not be
forwarded on ports on which hosts are attached.
3) The Proxy-reporting switch should perform the router portion of
IGMP/MLD on each of its downstream host port independently, and a
single host portion of IGMP/MLD on all of its upstream router
ports. The administrative control SHOULD be provided for
configuring the IGMP/MLD version of a port.
4. Subscription Aggregation Table (SAT)
The Subscription Aggregation Table consists of group record entries.
Associated with each group record (G), is a forwarding group port
list and a set of source records. Each source record has a
forwarding source port list. The group port list is used for
forwarding MDPs when the source is not found in the set of source
records present for that group. When the source is present, then the
source port list of that source record is used for forwarding. As
mentioned in [PROXY], if the proxy-reporting switch is a non-querier
on a downstream port connected to Multi-access LAN, MDPs must not be
forwarded even if the port is present in the forwarding GPL/SPL. In
addition, the MDPs MUST be forwarded on all router ports too as
specified in [SNOOPING].
The format of the group and source records is shown below:
Group Record (G):
o Group address (G)
o Group port list (GPL)
o Source record set
Source Record (S):
o Source Address (S)
o Source port list (SPL)
4.1 Handling reports from Hosts connected on downstream ports
Whenever a report is received from a host, it is processed as
described in section 6.4 of [RFC 3376] for IGMP and section 7.4 of
[MLDv2] for MLD. Table 1 summarizes the changes in the multicast
Gupta, Nataraja Expires - January 2005 [Page 3]
INTERNET-DRAFT proxy-reporting-implementation July 2004
address state and the actions taken upon receipt of state change and
current state records. For building the Subscription Aggregation
table, appropriate actions are taken depending upon the type of
report received for a particular group on a particular port. Please
refer to [RFC 3376] for notations and definitions used in Table 1.
+-----------+--------------------------------------------------+
| Report | PORT GROUP RECORD STATE |
| Received +-------------------------+------------------------+
| | INCLUDE(A) | EXCLUDE(X, Y) |
+-----------+-------------------------+------------------------+
| | | |
| ALLOW(B) | INCLUDE(A+B) | EXCLUDE(X+B, Y-B) |
| | (B) = MALI | (B) = MALI |
| | IncludeAdd(B) | ExcludeAdd (Y*B) |
+-----------+-------------------------+------------------------+
| | INCLUDE (A) | EXCLUDE(X + (B-Y), Y) |
| BLOCK(B) | SEND Q(MA, A*B) | (B-X-Y) = Filter Timer |
| | | Send Q (MA, B-Y) |
+-----------+-------------------------+------------------------+
| | EXCLUDE(A*B, B-A) | EXCLUDE (B-Y, Y*B) |
| | (B-A) = 0 | (B-X-Y) = Filter Timer |
| TO_EX(B) | Delete(A-B) | Delete(X-B) |
| | Send Q (MA, A*B) | Delete(Y-B) |
| | Filter Timer = MALI | Send Q(MA, B-Y) |
| | IncludeToExclude (A, B) | Filter Timer=MALI |
| | | ExcludeAdd(Y-B) |
+-----------+-------------------------+------------------------+
| | | |
| | EXCLUDE(A*B, B-A) | EXCLUDE (B-Y, Y*B) |
| IS_EX(B) | (B-A) = 0 | (B-X-Y) = MALI |
| | Delete(A-B) | Delete(X-B) |
| | Filter Timer = MALI | Delete(Y-B) |
| | IncludeToExclude (A, B) | Filter Timer=MALI |
| | | ExcludeAdd(Y-B) |
+-----------+-------------------------+------------------------+
| | | |
| | INCLUDE(A+B) | EXCLUDE(X+B, Y-B) |
| TO_IN(B) | (B) = MALI | (B) = MALI |
| | Send Q (MA, A-B) | Send Q (MA, X-B) |
| | IncludeAdd(B) | Send Q (MA) |
| | | ExcludeAdd (B) |
+-----------+-------------------------+------------------------+
| | | |
| | INCLUDE(A+B) | EXCLUDE(X+B, Y-B) |
| IS_IN(B) | (B) = MALI | (B) = MALI |
| | IncludeAdd(B) | ExcludeAdd (B) |
+-----------+-------------------------+------------------------+
Gupta, Nataraja Expires - January 2005 [Page 4]
INTERNET-DRAFT proxy-reporting-implementation July 2004
+-----------+-------------------------+------------------------+
| | | |
| SOURCE(S) | INCLUDE (A-S) | EXCLUDE(X-S, Y+S) |
| TIMER | IncludeDelete (S) | ExcludeDelete(S) |
| EXPIRY | | |
+-----------+-------------------------+------------------------+
| Filter | | |
| Timer | Not Valid | INCLUDE(X) |
| Expiry(G) | | IncludeAdd(X) |
| | | |
+-----------+-------------------------+------------------------+
| GROUP | INCLUDE(NULL) | INCLUDE(NULL) |
| RECORD(G) | | |
| DELETED | DeleteGroupRecord() | DeleteGroupRecord() |
| | | |
+-----------+-------------------------+------------------------+
Table 1. Handling Reports and updating Subscription Aggregation
table.
Note that for reasons of compactness the first two parameters
PortNo (P) and GroupAddress (G) passed to APIs are not shown
in Table 1. The variable MALI stands for Multicast Address Listener
Interval, this is similar to GMI (Group Membership Interval) used in
RFC 3376.
The APIs referred in the Table 1 are defined below -
1. IncludeAdd (PortNo(P), GroupAddress(G), SourceList(SL))
a. If (SL != NULL),
i. Create the group record (G) if it is not present.
ii. For all the sources present in SL, create the source
records if not present and copy GPL to SPL.
iii. Add P to the SPL of all source records in SL.
b. If P is found in GPL,
i. Delete P from GPL.
ii. Delete P from the SPL of all the source records except
the sources present in SL.
c. If (GPL == NULL), delete all the source records with NULL
SPL.
d. If (GPL != NULL), delete all the source records with (SPL
== GPL).
e. If((GPL == NULL) && (source record set == NULL), delete
the group record (G).
2. IncludeDelete (PortNo(P), GroupAddress(G), SourceList(SL))
If group record is present,
i. If (SL != NULL), for all the sources present in SL,
1. Delete P from the SPL of source record if it is
present.
2. Do not create the source record if it is not
present.
ii. If (SL == NULL), delete P from SPL of all the source
records present for group record (G).
Gupta, Nataraja Expires - January 2005 [Page 5]
INTERNET-DRAFT proxy-reporting-implementation July 2004
iii. If (GPL == NULL), delete all the source records with
NULL SPL.
iv. If (GPL != NULL), delete all the source records for
which (SPL == GPL).
v. If((GPL == NULL) && (source record set == NULL),
delete the group record (G).
3. ExcludeAdd (PortNo(P), GroupAddress(G), SourceList(SL))
a. Create Group record (G) if not present.
b. Add P to GPL of group record G.
c. For all the sources present in SL,
i. If the source record is present, add the port P to the
SPL.
ii. Delete all the source records with (SPL == GPL).
4. ExcludeDelete (PortNo(P), GroupAddress(G), SourceList(SL))
a. Create Group record (G) if not present.
b. If(SL != NULL), for all the sources present in SL,
i. If the source record is present, delete P from SPL.
ii. If the source record is not present, create the source
record and copy all ports of GPL to SPL except port P.
c. If (P is not present in GPL), add P to the SPL of all the
source records present except the source records present
for the sources in SL.
d. Add P to GPL of group record G.
e. Delete all source records with (SPL == GPL).
f. If((GPL == NULL) && (source record set == NULL), delete
the group record (G).
5. IncludeToExclude (PortNo(P), GroupAddress(G), SourceList1(SL1),
SourceList2(SL2))
a. If ((group record (G) exists) && (SL1 != NULL)), then for
all the sources present in SL1,
If ((count(SPL) == 1)&&(port == P)&&(GPL ==
NULL)),delete P from SPL of source record and
delete the source record
b. Call the API - ExcludeDelete (P, G, (SL2-SL1))
6. DeleteGroupRecord (PortNo(P), GroupAddress(G))
If group record G is present, then
i. Delete P from the SPL of all the source records
present in the group record.
ii. Delete P from GPL.
iii. If((GPL == NULL) && (source record set == NULL),
delete the group record (G).
4.2 Sending triggered state change reports to upstream router ports
Subscription Aggregation Table gets changed as a result of executing
Gupta, Nataraja Expires - January 2005 [Page 6]
INTERNET-DRAFT proxy-reporting-implementation July 2004
the action routines. Switch Group Filter mode is determined by GPL.
When GPL changes from NULL to NON-NULL, Switch Group Filter mode
changes from INCLUDE to EXCLUDE. When GPL changes from NON-NULL to
NULL, the Switch Group Filter mode changes from EXCLUDE to INCLUDE.
Table 2 summarizes the state change reports that MUST be triggered
based on the changes in the SAT. The appropriate reports SHOULD be
triggered only after performing the actions described in Table 1 and
should also follow the rules described in section 5.1 of [RFC 3376]
for IGMP and section 6.1 of [MLDv2] for MLD.
+-----------------------------+-------------------------------------+
| |Switch Group Filter mode |
| +-------------------+--- -----------+
| Events | EXCLUDE MODE | INCLUDE MODE |
| | (GPL != NULL) | (GPL == NULL) |
| | | |
+-----------------------------+-------------------+-----------------+
| SPL Change (Source S) | | |
| (NULL --> NON-NULL) | ALLOW(S) | ALLOW(S) |
| | | |
| | | |
+-----------------------------+-------------------+-----------------+
| | | |
| SPL Change (Source S) | BLOCK(S) | BLOCK(S) |
| (NON-NULL --> NULL) | | |
| | | |
+-----------------------------+-------------------+-----------------+
| | | |
| | INCLUDE MODE | |
| | TO_IN(A) | |
| Switch Group Filter mode | A = Set of all | NOT VALID |
| change | Sources with | |
| EXCLUDE --> INCLUDE | (SPL != NULL) | |
| | | |
+-----------------------------+-------------------+-----------------+
| | | |
| | | EXCLUDE MODE |
| Switch Group Filter mode | Not Valid | TO_EX(A) |
| change | | |
| INCLUDE --> EXCLUDE | | A = Set of all |
| | | Sources with |
| | | (SPL == NULL) |
| | | |
+-----------------------------+-------------------+-----------------+
Table 2. Sending state change reports to Upstream Router ports.
4.3 Sending reports in response to queries from Upstream Router ports
Proxy-reporting switch performs the host portion of IGMP on router
Gupta, Nataraja Expires - January 2005 [Page 7]
INTERNET-DRAFT proxy-reporting-implementation July 2004
ports. It reports its own state in response to the General query,
Multicast address specific query and Multicast Address and Source
specific query. The rules for constructing the report message are
specified below -
1 If (GPL == NULL), the filter mode of group record G is INCLUDE.
2 If (GPL != NULL), the filter mode of group record is EXCLUDE.
3 If the filter mode of group record G is INCLUDE,
a. IS_IN (X) report is send in response to a Group Specific
query where X denotes all the sources present in the source
record set of group record G.
b. In response to a Multicast address and Source Specific query,
when the filter mode is INCLUDE, IS_IN (S) is send only when
source S is present in the source record set of group record
G.
4 If the filter mode of group record G is EXCLUDE,
a. IS_EX (X) report is send in response to a group specific
query where X denotes all the sources present with NULL SPL
in the source record set of group record G.
b. In response to a Multicast address and Source Specific query,
IS_EX (S) is send only when source S is present with NULL SPL
in the source record set of group record G.
5 An Implementation MAY reduce the state in the upstream routers by
not providing the source specific information in the report
messages.
5. IPv6 Considerations
In the case of IPv6, there are few exceptions which are covered in
section 3 of [SNOOPING].
6. References
6.1 Normative References
[SNOOPING] M.Christensen, K.Kimball, F.Solensky,
"considerations for IGMP and MLD Snooping
switches", draft-ieft-magma-snoop-11.txt, May
2004.
[PROXY] Fenner, B. et al, "IGMP/MLD-based Multicast
Forwarding (IGMP/MLD Proxying)", draft-ietf-
magma-igmp-proxy-06.txt, April 2004.
[MIXED-PROXYING] Haixiang, Brain, Hal, "IGMP Mixed Version
Proxying", draft-he-mixed-igmp-proxy-
00.txt, February 2001.
[RFC 3376] Cain, B., S. Deering, B. Fenner, I. Kouvelas
and A. Thyagarajan, "Internet Group Management
Protocol, Version 3", RFC 3376, October 2002.
Gupta, Nataraja Expires - January 2005 [Page 8]
INTERNET-DRAFT proxy-reporting-implementation July 2004
[RFC 2236] Fenner, W., "Internet Group Management
Protocol, Version 2", RFC 2236, Xerox PARC,
November 1997.
[MLDv2] Vida, R., Costa and L., Fdida, "Multicast
Listener Discovery Version 2 (MLDv2) for IPv6",
RFC 3810, June 2004.
[RFC 2119] Bradner, S., "Key words for use in RFCs to
Indicate Requirement Levels", RFC 2119/BCP 14,
Harvard University, March 1997.
7. Security Considerations
This document does not cause extra security problems. The security
considerations specified in [SNOOPING], [PROXY] and [MIXED-PROXYING]
apply here.
8. Acknowledgements
The current specifications [PROXY], [SNOOPING] and [RFC 3376]
provided the basis for the implementation described in this document.
We would like to thank Sivakumar A and Raja K for comments and
suggestions on this document.
Authors Addresses
Girish Kumar Gupta
Future Software
480-481 Anna Salai
Nandanam, Chennai-600 035
India.
Email: girishkg@future.futsoft.com
Rajesh Babu Nataraja
Email: rnataraja@riverstonenet.com
Full Copyright Statement
Copyright (C) The Internet Society (2004). This document is
subject to the rights, licenses and restrictions contained in
BCP 78, and except as set forth therein, the authors retain all
their rights."
Gupta, Nataraja Expires - January 2005 [Page 9]
INTERNET-DRAFT proxy-reporting-implementation July 2004
"This document and the information contained herein are provided
on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE
REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND
THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY
THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS
OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A
PARTICULAR PURPOSE."
Gupta, Nataraja Expires - January 2005 [Page 10]