| < draft-ietf-magma-snoop-01.txt | draft-ietf-magma-snoop-02.txt > | |||
|---|---|---|---|---|
| MAGMA Working Group M. Christensen | MAGMA Working Group M. Christensen | |||
| Internet Draft jCAPS | Internet Draft morten@jagd-christensen.com | |||
| January 2002 F. Solensky | June 2002 F. Solensky | |||
| Expiration Date: July 2002 | Expiration Date: December 2002 Premonitia | |||
| IGMP and MLD snooping switches | IGMP and MLD snooping switches | |||
| <draft-ietf-magma-snoop-01.txt> | <draft-ietf-magma-snoop-02.txt> | |||
| Status of this Memo | Status of this Memo | |||
| This document is the successor of draft-ietf-magma-snoop-00 which was | This document is an Internet-Draft and is in full conformance with | |||
| presented at the 52'nd IETF in Salt Lake City. The main differences | all provisions of Section 10 of RFC2026 [RFC2026]. | |||
| between this and the previous version is a restructuring of the draft | ||||
| to introduce the main result as early as possible. Also the draft has | ||||
| been trimmed to a smaller size. No new results are presented, as the | ||||
| draft is expected to published as Informational within the next four | ||||
| months. | ||||
| This document is an Internet-Draft and is in full conformance with | ||||
| all provisions of Section 10 of RFC2026 [RFC2026]. | ||||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF), its areas, and its working groups. Note that other | Task Force (IETF), its areas, and its working groups. Note that | |||
| groups may also distribute working documents as Internet-Drafts. | other groups may also distribute working documents as Internet- | |||
| Drafts. | ||||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six | |||
| and may be updated, replaced, or obsoleted by other documents at any | months and may be updated, replaced, or obsoleted by other docu¡ | |||
| time. It is inappropriate to use Internet-Drafts as reference | ments at any time. It is inappropriate to use Internet-Drafts as | |||
| material or to cite them other than as "work in progress." | reference material or to cite them other than as "work in | |||
| progress." | ||||
| The list of current Internet-Drafts can be accessed at | The list of current Internet-Drafts can be accessed at | |||
| http://www.ietf.org/ietf/1id-abstracts.txt | http://www.ietf.org/ietf/1id-abstracts.txt | |||
| The list of Internet-Draft Shadow Directories can be accessed at | The list of Internet-Draft Shadow Directories can be accessed at | |||
| http://www.ietf.org/shadow.html. | http://www.ietf.org/shadow.html. | |||
| Abstract | Abstract | |||
| This memo describes the requirements for IGMP and MLD snooping | This memo describes the requirements for IGMP and MLD snooping | |||
| switches. The requirements for IGMPv2 snooping switches are based on | switches. The requirements for IGMPv2 snooping switches are based | |||
| best current practices. IGMPv3 and MLDv2 snooping are also covered in | on best current practices. IGMPv3 and MLDv2 snooping are also cov¡ | |||
| this draft although we are not aware of any such implementations at | ered in this draft although we are not aware of any such implemen¡ | |||
| the time of writing. | tations at the time of writing. Areas which are of relevance to | |||
| IGMP and MLD snooping switches, such as link layer topology changes | ||||
| RFC DRAFT January 2001 | and Ethernet specific encapsulation issues are also considered. | |||
| The memo also describes the interoperability problems and issues that | ||||
| can arise when a mixed deployment of IGMPv3 and IGMPv2 capable hosts | ||||
| and routers are interconnected by a switch with IGMP snooping | ||||
| capabilities. | ||||
| Areas which are of relevance to IGMP and MLD snooping switches, such | ||||
| as link layer topology changes and Ethernet specific encapsulation | ||||
| issues are also considered. | ||||
| It is intended as an accompanying document to the IGMPv3 and MLDv2 | ||||
| specifications. | ||||
| 1. Introduction | ||||
| In recent years, a number of commercial vendors have introduced prod- | ||||
| ucts described as "IGMP snooping switches" to the market. These | ||||
| devices do not adhere to the conceptual model that provides the | ||||
| strict separation of functionality between different communications | ||||
| layers in the ISO model and instead utilizes information in the upper | ||||
| level protocol headers as factors to be considered in the processing | ||||
| at the lower levels. | ||||
| This is analogous to the manner in which a router can act as a fire- | Interoperability issues that arise betweed different versions of | |||
| wall by looking into the transport protocol's header before allowing | IGMP are not discussed in this document. Interested readers are | |||
| a packet to be forwarded to its destination address. | directed to [IGMPv3] for a thorough description of problem area. | |||
| In the case of multicast traffic, an IGMP snooping switch provides | This document is intended as an accompanying document to the IGMPv3 | |||
| the benefit of conserving bandwidth on those segments of the network | and MLDv2 specifications. | |||
| where no node has expressed interest in receiving packets addressed | ||||
| to the group address. This is in contrast to normal switch behaviour | ||||
| where multicast traffic is typically forwarded on all interfaces. | ||||
| Many switch datasheets state support for IGMP snooping, but no | 11.. IInnttrroodduuccttiioonn | |||
| requirements for this exist today. It is the authors hope that the | ||||
| information presented in this draft will supply this information. | ||||
| The requirements presented here is based on the following information | When a packet with a broadcast or multicast destination address is | |||
| sources: The IGMP specifications [RFC112][RFC2236][IGMPv3], vendor | received, the switch will forward a copy into each of the remaining | |||
| supplied technical documents [CISCO], bug reports [MSOFT], discus- | network segments in accordance with [BRIDGE]. Eventually, the | |||
| sions with people invovled in design of IGMP snooping switches, MAGMA | packet is made accessible to all nodes connected to the network. | |||
| mailinglist discussions, and on replies by switch vendors to an | ||||
| implementation questionnaire. | ||||
| The discussions in this document are based on IGMP which applies to | This approach works well for broadcast packets that are intended to | |||
| IPv4 only. For IPv6 we must use MLD instead. Because MLD is based on | be seen or processed by all connected nodes. In the case of multi¡ | |||
| IGMP we do not repeat the whole discussion and requirements for MLD | cast packets, however, this approach could lead to less efficient | |||
| use of network bandwidth, particularly when the packet is intended | ||||
| for only a small number of nodes. Packets will be flooded into | ||||
| network segments where no node has any interest in receiving the | ||||
| packet. While nodes will rarely incur any processing overhead to | ||||
| filter packets addressed to unrequested group addresses, they are | ||||
| unable to transmit new packets onto the shared media for the period | ||||
| of time that the multicast packet is flooded. | ||||
| RFC DRAFT January 2001 | The problem of wasting bandwidth is even worse when the LAN segment | |||
| is not shared, for example in Full Duplex links. Full Duplex is | ||||
| standard today for most switches operating at 1Gbps or above. In | ||||
| this case the bandwidth that is wasted is proportional to the num¡ | ||||
| ber of attached nodes. | ||||
| snooping switches. Instead we point out the few cases where there is | In recent years, a number of commercial vendors have introduced | |||
| a difference compared to IGMP. | products described as "IGMP snooping switches" to the market. | |||
| These devices do not adhere to the conceptual model that provides | ||||
| the strict separation of functionality between different communica¡ | ||||
| tions layers in the ISO model and instead utilizes information in | ||||
| the upper level protocol headers as factors to be considered in the | ||||
| processing at the lower levels. This is analogous to the manner in | ||||
| which a router can act as a firewall by looking into the transport | ||||
| protocol's header before allowing a packet to be forwarded to its | ||||
| destination address. | ||||
| 2. IGMP Snooping Requirements | In the case of multicast traffic, an IGMP snooping switch provides | |||
| the benefit of conserving bandwidth on those segments of the net¡ | ||||
| work where no node has expressed interest in receiving packets | ||||
| addressed to the group address. This is in contrast to normal | ||||
| switch behaviour where multicast traffic is typically forwarded on | ||||
| all interfaces. | ||||
| The following sections list the requirements for an IGMP snooping | Many switch datasheets state support for IGMP snooping, but no | |||
| switch. The requirement is stated and is supplemented by a discus- | requirements for this exist today. It is the authors hope that the | |||
| sion. All implementation discussions are examples only and there may | information presented in this draft will supply this information. | |||
| well be other ways to achieve the same functionality. | ||||
| 2.1. Forwarding rules | The requirements presented here is based on the following informa¡ | |||
| tion sources: The IGMP specifications [RFC112][RFC2236][IGMPv3], | ||||
| vendor supplied technical documents [CISCO], bug reports [MSOFT], | ||||
| discussions with people invovled in design of IGMP snooping | ||||
| switches, MAGMA mailinglist discussions, and on replies by switch | ||||
| vendors to an implementation questionnaire. | ||||
| The IGMP snooping functionality is here separated in a control section | The discussions in this document are based on IGMP which applies to | |||
| (IGMP forwarding) and data section (Data forwarding). | IPv4 only. For IPv6 we must use MLD instead. Because MLD is based | |||
| on IGMP we do not repeat the whole discussion and requirements for | ||||
| MLD snooping switches. Instead we point out the few cases where | ||||
| there is a difference compared to IGMP. | ||||
| 2.1.1. IGMP Forwarding Rules | 22.. IIGGMMPP SSnnooooppiinngg RReeqquuiirreemmeennttss | |||
| 1) A snooping switch MUST only forward IGMP Membership Reports on ports | The following sections list the requirements for an IGMP snooping | |||
| where multicast routers are attached. Alternatively stated: A snooping | switch. The requirement is stated and is supplemented by a discus¡ | |||
| switch MUST NOT forward IGMP Membership Reports to ports on which only | sion. All implementation discussions are examples only and there | |||
| hosts are attached. | may well be other ways to achieve the same functionality. | |||
| This is the main IGMP snooping functionality. Sending membership reports | 22..11.. FFoorrwwaarrddiinngg rruulleess | |||
| to other hosts can result (For IGMPv2 and IGMPv1) in the unwanted pre- | ||||
| vention of a host wishing to join a specific multicast group. This is | ||||
| not a problem in a IGMPv3 only network because there is no cancellation | ||||
| of IGMP Membership reports. | ||||
| The switch supporting IGMP snooping MUST maintain a list of multicast | The IGMP snooping functionality is here separated in a control sec¡ | |||
| routers and the ports on which they are attached. This list SHOULD be | tion (IGMP forwarding) and data section (Data forwarding). | |||
| built using IGMP Multicast Router Discovery [MRDISC]. IGMP snooping | ||||
| switches MAY alternatively build this list based on | ||||
| a) The arrival port for IGMP Queries (sent by multicast routers) or | 22..11..11.. IIGGMMPP FFoorrwwaarrddiinngg RRuulleess | |||
| b) List of ports configured (by management) as having multicast routers | 1) A snooping switch SHOULD forward IGMP Membership Reports only | |||
| attached. | to those ports where multicast routers are attached. Alterna¡ | |||
| tively stated: A snooping switch SHOULD NOT forward IGMP Mem¡ | ||||
| bership Reports to ports on which only hosts are attached. An | ||||
| administrative control MAY be provided to override this | ||||
| restriction, allowing the report messages to be flooded to | ||||
| other ports. | ||||
| Implementation example: IGMP snooping can be achieved by redirecting all | This is the main IGMP snooping functionality. Sending member¡ | |||
| IGMP packets (IP packets with IP-PROTO = 2) to the CPU (or similar | ship reports (as described in IGMP versions 1 and 2) to other | |||
| higher layer entity) for IGMP message processing and table management. | hosts can result in unintentionally preventing a host from | |||
| joining a specific multicast group. This is not a problem in | ||||
| an IGMPv3 only network because there is no cancellation of IGMP | ||||
| Membership reports. | ||||
| 2) IGMP snooping switches MAY implement "proxy-reporting" in which | The administrative control allows IGMP Membership Report mes¡ | |||
| RFC DRAFT January 2001 | sages to be processed by network monitoring equipment such as | |||
| packet analysers or port replicators. | ||||
| reports received from downstream hosts are summarized and used to build | The switch supporting IGMP snooping MUST maintain a list of | |||
| internal membership states. An IGMP proxy-reporting switch would then | multicast routers and the ports on which they are attached. | |||
| report it's own state in response to upstream queriers. If the switch | This list can be constructed in any combination of the follow¡ | |||
| does not have an IP address it SHOULD use the address 0.0.0.0 as source | ing ways: | |||
| in these reports. | ||||
| An IGMP proxy-reporting switch may act as Querier for the downstream | a) This list SHOULD be built using IGMP Multicast Router Dis¡ | |||
| hosts while proxy reporting to the 'real' upstream queriers. | covery [MRDISC] by the snooping switch sending Multicast | |||
| Router Solicitation messages on its own. It MAY also snoop | ||||
| Multicast Router Advertisement messages sent by and to | ||||
| other nodes. | ||||
| It should be noted that there may be multiple IGMP proxy-reporting | b) The arrival port for IGMP Queries (sent by multicast | |||
| switches in the network all using the 0.0.0.0 source IP address. In this | routers) where the source where the address is not 0.0.0.0. | |||
| case the switches can be identified by their, link layer source MAC | ||||
| address. | ||||
| IGMP membership reports should not be rejected because of a source IP | c) A list of ports configured by management as described in | |||
| address of 0.0.0.0. | the previous step. | |||
| 3) The switch that supports IGMP snooping MUST forward all unrecognized | 2) IGMP snooping switches MAY implement "proxy-reporting" in which | |||
| IGMP messages and MUST NOT attempt to make use of any information beyond | reports received from downstream hosts are summarized and used | |||
| the end of the network layer header. In particular, messages where any | to build internal membership states as described in [PROXY]. | |||
| reserved fields are non-zero MUST NOT be subject to "normal" snooping | An IGMP proxy-reporting switch would then report its own state | |||
| since this could indicate an incompatible change to the message format. | in response to upstream queriers. If the switch does not | |||
| alreay have an IP address it SHOULD use the address 0.0.0.0 as | ||||
| source in these reports. | ||||
| 4) An IGMP snooping switch SHOULD be aware of link layer topology | An IGMP proxy-reporting switch may act as Querier for the down¡ | |||
| changes. Following a topology change the switch SHOULD initiate the | stream hosts while proxy reporting to the 'real' upstream | |||
| transmission of a General Query on all ports in order to reduce network | queriers. | |||
| convergence time. | ||||
| 5) An IGMP snooping switch MUST discard from the IGMP snooping process | It should be noted that there may be multiple IGMP proxy- | |||
| IGMP packets where IP or IGMP headers have checksum errors. | reporting switches in the network all using the 0.0.0.0 source | |||
| IP address. In this case the switches can be uniquely identi¡ | ||||
| fied through their link layer source MAC address. | ||||
| 2.1.2. Data Forwarding Rules | IGMP membership reports MUST NOT be rejected because of a | |||
| source IP address of 0.0.0.0; however, these messages MUST NOT | ||||
| be included the election process so that a snooping switch does | ||||
| not elected over an active router. | ||||
| 6) Packets with a destination IP (DIP) address in the 224.0.0.X range | 3) The switch that supports IGMP snooping MUST flood all unrecog¡ | |||
| which are *not* IGMP MUST be forwarded on all ports. | nized IGMP messages to all other ports and MUST NOT attempt to | |||
| make use of any information beyond the end of the network layer | ||||
| header. In particular, messages where any reserved fields in | ||||
| the IGMP header are non-zero MUST NOT be subject to "normal" | ||||
| snooping since this could indicate an incompatible change to | ||||
| the IGMP message format. | ||||
| This requirement is based on fact that many hosts exist today, which | 4) An IGMP snooping switch SHOULD be aware of link layer topology | |||
| does not Join IP multicast addresses in this range before sending or | changes. Following a topology change the switch SHOULD initi¡ | |||
| listening to IP multicast. Furthermore since the 224.0.0.X address range | ate the transmission of a General Query on all ports in order | |||
| is defined as link local (not to be routed) it seems unnecessary to keep | to reduce network convergence time. | |||
| state for each address in this range. | ||||
| 7) Packets with a destination IP address outside 224.0.0.X which are | 5) An IGMP snooping switch MUST NOT make use of information in | |||
| *not* IGMP SHOULD be forwarded according to group based port membership | IGMP packets where the IP or IGMP headers have checksum or | |||
| RFC DRAFT January 2001 | intregity errors. The switch SHOULD NOT flood such packets but | |||
| if it does, it SHOULD take some note of the event (i.e.: incre¡ | ||||
| ment a counter). These errors and their processing are further | ||||
| discussed in [IGMPv3], [MLD] and [MLDv2]. | ||||
| tables and MUST also be forwarded on router ports. | 22..11..22.. DDaattaa FFoorrwwaarrddiinngg RRuulleess | |||
| This is the core IGMP snooping requirement for the data path. | 1) Packets with a destination IP (DIP) address in the 224.0.0.X | |||
| range which are not IGMP MUST be forwarded on all ports. | ||||
| Discussion: An implementation could maintain separate membership and | This requirement is based on fact that many hosts exist today, | |||
| multicast router tables in software and then "merge" these tables into a | which does not Join IP multicast addresses in this range before | |||
| current forwarding cache. | sending or listening to IP multicast. Furthermore since the | |||
| 224.0.0.X address range is defined as link local (not to be | ||||
| routed) it seems unnecessary to keep state for each address in | ||||
| this range. | ||||
| 8) If a switch receives a *non* IGMP multicast packet without having | 2) Packets with a destination IP address outside 224.0.0.X which | |||
| first processed Membership Reports for the group address, it MUST for- | are not IGMP SHOULD be forwarded according to group based port | |||
| ward the packet on all ports. In other words, the switch must allow for | membership tables and MUST also be forwarded on router ports. | |||
| the possibility that connected hosts and routers have been upgraded to | ||||
| support future versions or extensions of IGMP that the switch does not | ||||
| yet recognize. A switch MAY have a configuration option that suppresses | ||||
| this operation, but default behavior MUST be to allow flooding of unreg- | ||||
| istered packets. | ||||
| 9) IGMP snooping switches MAY maintain forwarding tables based on either | This is the core IGMP snooping requirement for the data path. | |||
| MAC addresses or IP addresses. If a switch supports both types of for- | ||||
| warding tables then the default behavior MUST be to use IP addresses. | ||||
| Discussion: Forwarding based on MAC addresses is subject to the problem | Discussion: An implementation could maintain separate member¡ | |||
| associated with the 32-fold IP address to 1 MAC address mapping. | ship and multicast router tables in software and then "merge" | |||
| these tables into a current forwarding cache. | ||||
| 10) Switches which rely on information in the IP header SHOULD verify | 3) If a switch receives a non-IGMP multicast packet without having | |||
| that the IP header checksum is correct. If the checksum fails the packet | first processed Membership Reports for the group address, it | |||
| SHOULD be silently discarded. | MAY forward the packet on all ports, but it MUST forward the | |||
| packet on router ports. A switch MAY forward an unregistered | ||||
| packet only on router ports, but the switch MUST have a config¡ | ||||
| uration option that suppresses this restrictive operation and | ||||
| forces flooding of unregistered packets on all ports. | ||||
| 2.2. IGMP snooping related problems | 4) IGMP snooping switches MAY maintain forwarding tables based on | |||
| either MAC addresses or IP addresses. If a switch supports | ||||
| both types of forwarding tables then the default behavior | ||||
| SHOULD be to use IP addresses. | ||||
| A special problem arise in the network consisting of IGMPv3 routers as | Discussion: Forwarding based on MAC addresses is subject to the | |||
| well as IGMPv2 and IGMPv3 hosts interconnected by a IGMPv2 snooping | problem associated with the 32-fold IP address to 1 MAC address | |||
| switch. IGMPv3 has a mechanism to fall back to IGMPv2 when receiving | mapping. | |||
| IGMPv2 membership reports. This means that the network will converged on | ||||
| IGMPv2 eventually. However, the convergence time will lead to supression | ||||
| of v3 Hosts for several minutes. | ||||
| Therefore it is recommended that in such a network, the multicast router | 5) Switches which rely on information in the IP header SHOULD ver¡ | |||
| is configured to use IGMPv2. | ify that the IP header checksum is correct. If the checksum | |||
| fails, the information in the packet MUST NOT be incorporated | ||||
| into the forwarding table. Further, the packet SHOULD be dis¡ | ||||
| carded. | ||||
| 3. IPv6 Considerations | 22..22.. IIGGMMPP ssnnooooppiinngg rreellaatteedd pprroobblleemmss | |||
| In order to avoid confusion, the previous discussions have been based | A special problem arise in the network consisting of IGMPv3 routers | |||
| on IGMPv3 functionality which only applies to IPv4 multicast. In the | as well as IGMPv2 and IGMPv3 hosts interconnected by a IGMPv2 | |||
| case of IPv6 most of the above discussions are still valid with a few | snooping switch. IGMPv3 has a mechanism to fall back to IGMPv2 | |||
| when receiving IGMPv2 membership reports. This means that the net¡ | ||||
| work will converged on IGMPv2 eventually. However, the convergence | ||||
| time will lead to supression of v3 Hosts for several minutes. | ||||
| RFC DRAFT January 2001 | Therefore it is recommended that in such a network, the multicast | |||
| router is configured to use IGMPv2. | ||||
| exceptions which we will describe here. | 33.. IIPPvv66 CCoonnssiiddeerraattiioonnss | |||
| In IPv6 the protocol for multicast group maintenance is called Multi- | In order to avoid confusion, the previous discussions have been | |||
| cast Listener Discovery (MLDv2). IPv6 is not widely deployed today | based on IGMPv3 functionality which only applies to IPv4 multicast. | |||
| and neither is IPv6 multicast. However, it is anticipated that at | In the case of IPv6 most of the above discussions are still valid | |||
| some time IPv6 switches capable of MLD snooping will appear. | with a few exceptions which we will describe here. | |||
| The three main differences between IGMPv3 and MLDv2 are | In IPv6 the protocol for multicast group maintenance is called Mul¡ | |||
| ticast Listener Discovery (MLDv2). IPv6 is not widely deployed | ||||
| today and neither is IPv6 multicast. However, it is anticipated | ||||
| that at some time IPv6 switches capable of MLD snooping will | ||||
| appear. | ||||
| - MLDv2 uses ICMPv6 message types instead of IGMP message types. | The three main differences between IGMPv3 and MLDv2 are: | |||
| - The ethernet encapsulation is a mapping of 32bits of the 128bit | - MLDv2 uses ICMPv6 message types instead of IGMP message types. | |||
| DIP addresses into 48bit DMAC addresses [IPENCAPS]. | ||||
| - Multicast router discovery is done using Neighbor Discovery Pro- | - The ethernet encapsulation is a mapping of 32 bits of the 128 | |||
| tocol (NDP) for IPv6. NDP uses ICMPv6 message types. | bit DIP addresses into 48 bit DMAC addresses [IPENCAPS]. | |||
| A minor difference which applies to the requirements section is that in | - Multicast router discovery is done using Neighbor Discovery Pro¡ | |||
| IPv6 there is no checksum in the IP header. This is the reason that the | tocol (NDP) for IPv6. NDP uses ICMPv6 message types. | |||
| checksum validation requirement is listed as a MAY. | ||||
| The fact that MLDv2 is using ICMPv6 adds new requirements to a snooping | The IPv6 packet header does not include a checksum field. Never¡ | |||
| switch because ICMPv6 has multiple uses aside from MLD. This means that | theless, the switch SHOULD detect other packet integrity issues. | |||
| it is no longer sufficient to detect that the next-header field of the | When the snooping switch detects such an error, it MUST NOT include | |||
| IP header is ICMPv6 in order to redirect packets to the CPU. If this | information from the corresponding packet in the IGMP forwarding | |||
| was the case the CPU queue assigned for MLD would potentially be filled | table. The forwarding code SHOULD drop the packet and take further | |||
| with non-MLD related packets. Furthermore ICMPv6 packets destined for | reasonable actions as advocated above. | |||
| other hosts would not reach their destination. A solution is either to | ||||
| require that the snooping switch looks further into the packets or to be | ||||
| able to detect a multicast DMAC address in conjunction with ICMPv6. The | ||||
| first solution is desirable only if it is configurable which message | ||||
| types should trigger a CPU redirect and which should not. The reason is | ||||
| that a hardcoding of message types is unflexible for the introduction of | ||||
| new message types. The second solution introduces the risk of new pro- | ||||
| tocols, which are not related to MLD but uses ICMPv6 and multicast DMAC | ||||
| addresses wrongly being identified as MLD. It is suggested that solution | ||||
| one is the preferred if the switch is capable of triggering CPU redi- | ||||
| rects on individual ICMPv6 message types. If this is not the case then | ||||
| use solution two. | ||||
| The mapping from IP multicast addresses to multicast DMAC addresses | The fact that MLDv2 is using ICMPv6 adds new requirements to a | |||
| introduces a potentially enormous overlap. The structure of an IPv6 mul- | snooping switch because ICMPv6 has multiple uses aside from MLD. | |||
| ticast address is shown in figure 5. Theoretically 2**80, two to the | This means that it is no longer sufficient to detect that the next- | |||
| power of 80 (128 - 8 - 4 - 4 - 32) unique DIP addresses could map to one | header field of the IP header is ICMPv6 in order to redirect pack¡ | |||
| DMAC address. This should be compared to 2**5 in the case of IPv4. | ets to the CPU. If this was the case the CPU queue assigned for | |||
| MLD would potentially be filled with non-MLD related packets. Fur¡ | ||||
| thermore ICMPv6 packets destined for other hosts would not reach | ||||
| their destination. A solution is either to require that the snoop¡ | ||||
| ing switch looks further into the packets or to be able to detect a | ||||
| multicast DMAC address in conjunction with ICMPv6. The first solu¡ | ||||
| tion is desirable only if it is configurable which message types | ||||
| should trigger a CPU redirect and which should not. The reason is | ||||
| that a hardcoding of message types is unflexible for the introduc¡ | ||||
| tion of new message types. The second solution introduces the risk | ||||
| of new protocols, which are not related to MLD but uses ICMPv6 and | ||||
| multicast DMAC addresses wrongly being identified as MLD. It is | ||||
| suggested that solution one is the preferred if the switch is capa¡ | ||||
| ble of triggering CPU redirects on individual ICMPv6 message types. | ||||
| If this is not the case then use solution two. | ||||
| Initial allocation of IPv6 multicast addresses, however, uses only the | The mapping from IP multicast addresses to multicast DMAC addresses | |||
| RFC DRAFT January 2001 | introduces a potentially enormous overlap. The structure of an IPv6 | |||
| multicast address is shown in figure 5. Theoretically 2**80, two | ||||
| to the power of 80 (128 - 8 - 4 - 4 - 32) unique DIP addresses | ||||
| could map to one DMAC address. This should be compared to 2**5 in | ||||
| the case of IPv4. | ||||
| lower 32 bits of group ID. This eliminates the address ambiguity for the | Initial allocation of IPv6 multicast addresses, however, uses only | |||
| time being but it should be noted that the allocation policy may change | the lower 32 bits of group ID. This eliminates the address ambigu¡ | |||
| in the future. | ity for the time being but it should be noted that the allocation | |||
| policy may change in the future. | ||||
| | 8 | 4 | 4 | 112 bits | | | 8 | 4 | 4 | 112 bits | | |||
| +--------+----+----+---------------------------------------+ | +--------+----+----+---------------------------------------+ | |||
| |11111111|flgs|scop| group ID | | |11111111|flgs|scop| group ID | | |||
| +--------+----+----+---------------------------------------+ | +--------+----+----+---------------------------------------+ | |||
| Figure 5 | Figure 5 | |||
| In the case of IPv6 forwarding can be made on the basis of DMAC | In the case of IPv6 forwarding can be made on the basis of DMAC | |||
| addresses in the forseable future. | addresses in the forseable future. | |||
| Finally, we mention the reserved address range FF0X:0:0:0:0:0:X:X where | ||||
| X is any value. This range is similar to 224.0.0.X for IPv4 and is | ||||
| reserved to routing protocols and resource discovery [RFC2375]. In the | ||||
| case of IPv6 it is suggested that packets in this range are forwarded on | ||||
| all ports if they are not MLD packets. | ||||
| 4. Security Considerations | ||||
| Security considerations for IGMPv3 are accounted for in [IGMPv3]. | Finally, we mention the reserved address range FF02::/96. This | |||
| The introduction of IGMP snooping switches adds the following consid- | range is similar to 224.0.0.X for IPv4 and is reserved to routing | |||
| erations with regard to IP multicast. | protocols and resource discovery [RFC2375]. In the case of IPv6 it | |||
| is suggested that packets in this range are forwarded on all ports | ||||
| if they are not MLD packets. | ||||
| The exclude source failure which could cause traffic from sources | 44.. SSeeccuurriittyy CCoonnssiiddeerraattiioonnss | |||
| that are 'black listed' to reach hosts that have requested otherwise. | ||||
| This can also occur in certain network topologies without IGMP snoop- | ||||
| ing. | ||||
| It is possible to generate packets which make the switch wrongly | Security considerations for IGMPv3 are accounted for in [IGMPv3]. | |||
| believe that there is a multicast router on the segment on which the | The introduction of IGMP snooping switches adds the following con¡ | |||
| source is attached. This will potentially lead to excessive flooding | siderations with regard to IP multicast. | |||
| on that segment. The authentication methods discussed in [IGMPv3] | ||||
| will also provide protection in this case. | ||||
| IGMP snooping switches which rely on the IP header of a packet for | The exclude source failure which could cause traffic from sources | |||
| their operation and which do not validate the header checksum poten- | that are 'black listed' to reach hosts that have requested other¡ | |||
| tially will forward packets on the wrong ports. Even though the IP | wise. This can also occur in certain network topologies without | |||
| headers are protected by the ethernet checksum this is a potential | IGMP snooping. | |||
| vulnerability. | ||||
| Generally though, it is worth to stress that IP multicast must so far | It is possible to generate packets which make the switch wrongly | |||
| be considered insecure until the work of for example the suggested | believe that there is a multicast router on the segment on which | |||
| Multicast Security (MSEC) working group or similar is completed or at | the source is attached. This will potentially lead to excessive | |||
| least has matured. | flooding on that segment. The authentication methods discussed in | |||
| [IGMPv3] will also provide protection in this case. | ||||
| RFC DRAFT January 2001 | IGMP snooping switches which rely on the IP header of a packet for | |||
| their operation and which do not validate the header checksum | ||||
| potentially will forward packets on the wrong ports. Even though | ||||
| the IP headers are protected by the ethernet checksum this is a | ||||
| potential vulnerability. | ||||
| 5. IGMP Questionnaire | Generally though, it is worth to stress that IP multicast must so | |||
| far be considered insecure until the work of for example the sug¡ | ||||
| gested Multicast Security (MSEC) working group or similar is com¡ | ||||
| pleted or at least has matured. | ||||
| As part of this work the following questions were asked both on the | 55.. IIGGMMPP QQuueessttiioonnnnaaiirree | |||
| MAGMA discussion list and sent to known switch vendors implementing IGMP | ||||
| snooping. The individual contributions have been anonymized upon | ||||
| request. | ||||
| The questions were: | As part of this work the following questions were asked both on the | |||
| MAGMA discussion list and sent to known switch vendors implementing | ||||
| IGMP snooping. The individual contributions have been anonymized | ||||
| upon request and do not necessarily apply to all of the vendors' | ||||
| products. | ||||
| Q1 Does your switches perform IGMP Join aggregation? In other words, | The questions were: | |||
| are IGMP joins intercepted, absorbed by the hardware/software so that | ||||
| only one Join is forwarded to the querier? | ||||
| Q2 Is multicast forwarding based on MAC addresses? Would datagrams | Q1 Does your switches perform IGMP Join aggregation? In other | |||
| addressed to multicast IP addresses 224.1.2.3 and 239.129.2.3 be for- | words, are IGMP joins intercepted, absorbed by the hard¡ | |||
| warded on the same ports-groups? | ware/software so that only one Join is forwarded to the | |||
| querier? | ||||
| Q3 Is it possible to forward multicast datagrams based on IP addresses | Q2 Is multicast forwarding based on MAC addresses? Would data¡ | |||
| (not routed). In other words, could 224.1.2.3 and 239.129.2.3 be for- | grams addressed to multicast IP addresses 224.1.2.3 and | |||
| warded on different port-groups with unaltered TTL? | 239.129.2.3 be forwarded on the same ports-groups? | |||
| Q4 Are multicast datagrams within the range 224.0.0.1 to 224.0.0.255 | Q3 Is it possible to forward multicast datagrams based on IP | |||
| forwarded on all ports whether or not IGMP Joins have been sent? | addresses (not routed). In other words, could 224.1.2.3 and | |||
| 239.129.2.3 be forwarded on different port-groups with unal¡ | ||||
| tered TTL? | ||||
| Q5 Are multicast frames within the MAC address range 01:00:5E:00:00:01 | Q4 Are multicast datagrams within the range 224.0.0.1 to | |||
| to 01:00:5E:00:00:FF forwarded on all ports whether or not IGMP joins | 224.0.0.255 forwarded on all ports whether or not IGMP Joins | |||
| have been sent? | have been sent? | |||
| Q6 Does your switch support forwarding to ports on which IP multicast | Q5 Are multicast frames within the MAC address range | |||
| routers are attached in addition to the ports where IGMP Joins have been | 01:00:5E:00:00:01 to 01:00:5E:00:00:FF forwarded on all ports | |||
| received? | whether or not IGMP joins have been sent? | |||
| Q7 Is your IGMP snooping functionality fully implemented in hardware? | Q6 Does your switch support forwarding to ports on which IP multi¡ | |||
| cast routers are attached in addition to the ports where IGMP | ||||
| Joins have been received? | ||||
| Q8 Is your IGMP snooping functionality partly software implemented? | Q7 Is your IGMP snooping functionality fully implemented in hard¡ | |||
| ware? | ||||
| Q9 Can topology changes (for example spanning tree configuration | Q8 Is your IGMP snooping functionality partly software imple¡ | |||
| changes) be detected by the IGMP snooping functionality so that for | mented? | |||
| example new queries can be sent or tables can be updated to ensure | ||||
| robustness? | ||||
| The answers were: | Q9 Can topology changes (for example spanning tree configuration | |||
| changes) be detected by the IGMP snooping functionality so that | ||||
| for example new queries can be sent or tables can be updated to | ||||
| ensure robustness? | ||||
| RFC DRAFT January 2001 | The answers were: | |||
| --------------------------------------------- | ---------------------------+-----------------------+ | |||
| Switch Vendor | | Switch Vendor | | |||
| -------------------------+---+---+---+---+--- | ---------------------------+---+---+---+---+---+---+ | |||
| | 1 | 2 | 3 | 4 | | | 1 | 2 | 3 | 4 | 5 | 6 | | |||
| -------------------------+---+---+---+---+--- | ---------------------------+---+---+---+---+---+---+ | |||
| Q1 Join aggregation | x | x | x | | | Q1 Join aggregation | x | x | x | | x | x | | |||
| Q2 Layer-2 forwarding | x | x | x | x | | Q2 Layer-2 forwarding | x | x | x | x |(1)| | | |||
| Q3 Layer-3 forwarding |(1)| |(1)| | | Q3 Layer-3 forwarding |(1)| |(1)| |(1)| x | | |||
| Q4 224.0.0.X aware |(1)| x |(1)|(2)| | Q4 224.0.0.X aware |(1)| x |(1)|(2)| x | x | | |||
| Q5 1:00:5e:0:0:X aware | x | x | x |(2)| | Q5 01:00:5e:00:00:XX aware | x | x | x |(2)| x | x | | |||
| Q6 Mcast router list | x | x | x | x | | Q6 Mcast router list | x | x | x | x | x | x | | |||
| Q7 Hardware implemented | | | | | | Q7 Hardware implemented | | | | | | | | |||
| Q8 Software assisted | x | x | x | x | | Q8 Software assisted | x | x | x | x | x | x | | |||
| Q9 Topology change aware | x | x | x | x | | Q9 Topology change aware | x | x | x | x | |(2)| | |||
| -------------------------+---+---+---+---+--- | ---------------------------+---+---+---+---+---+---+ | |||
| x Means that the answer was Yes. | x Means that the answer was Yes. | |||
| (1) In some products (typically high-end) Yes, in others No. | (1) In some products (typically high-end) Yes, in others No. | |||
| (2) Currently no, but will be real soon. | (2) Currently no, but will be real soon. | |||
| 6. IPR Issues | 66.. RReeffeerreenncceess | |||
| It appears that a number of patents have been filed which may apply to | ||||
| this draft or parts thereof. None of these patents, listed below, have | ||||
| been filed by the authors of this draft or companies in which they are | ||||
| or have been employed. | ||||
| We, the authors, have not tried to evaluate whether these patents are | ||||
| violated by implementing IGMP snooping according to this document. The | ||||
| IETF/IESG have been notified about the patents. | ||||
| International patent: WO 96/34474, Oct. 31 1996, Title: "Broadcast | ||||
| transmission in a data network" | ||||
| US patent: Number 5,608,726, Mar. 4, 1997 (filed 1995) Title: "Network- | ||||
| ing Bridge with Multicast forwarding table" | ||||
| US patent: Number 5,898,686, Apr. 27, 1999 (filed 1996) Title: "Network- | ||||
| ing Bridge with Multicast forwarding table" | ||||
| Australian patent: Application No. 65440/98 Title: "System, Device, and | ||||
| Method for Managing Multicast Group Memberships in a Multicast Network" | ||||
| RFC DRAFT January 2001 | ||||
| 7. References | ||||
| [BRIDGE] IEEE 802.1D, "Media Access Control (MAC) Bridges" | [BRIDGE] IEEE 802.1D, "Media Access Control (MAC) Bridges" | |||
| [CISCO] Cisco Tech Notes, "Multicast In a Campus Network: CGMP | [CISCO] Cisco Tech Notes, "Multicast In a Campus Network: CGMP | |||
| and IGMP snooping", http://www.cisco.com/warp/pub- | and IGMP snooping", http://www.cisco.com/warp/pub¡ | |||
| lic/473/22.html | lic/473/22.html | |||
| [IANA] Internet Assigned Numbers Authority, "Internet Multicast | [IANA] Internet Assigned Numbers Authority, "Internet Multicast | |||
| Addresses", http://www.isi.edu/in-notes/iana/assign- | Addresses", http://www.isi.edu/in-notes/iana/assign¡ | |||
| ments/multicast-addresses | ments/multicast-addresses | |||
| [IGMPv3] Cain, B., "Internet Group Management Protocol, Version | [IGMPv3] Cain, B., "Internet Group Management Protocol, Version | |||
| 3", draft-ietf-idmr-igmp-v3-06.txt, November 2000 | 3", draft-ietf-idmr-igmp-v3-11.txt, May 2002. | |||
| [IPENCAPS] Crawford, M., "Transmission of IPv6 Packets over Ether- | [IPENCAPS] Crawford, M., "Transmission of IPv6 Packets over Ether¡ | |||
| net Networks", RFC2464, December 1998. | net Networks", RFC2464, December 1998. | |||
| [MLD] Deering, S., Fenner, B., and Haberman, B. "Multicast | ||||
| Listener Discovery (MLD) for IPv6", RFC2710, October | ||||
| 1999. | ||||
| [MLDv2] Vida, R., "Multicast Listener Discovery Version 2 | [MLDv2] Vida, R., "Multicast Listener Discovery Version 2 | |||
| (MLDv2) for IPv6", draft-vida-mld-v2-00.txt, February | (MLDv2) for IPv6", draft-vida-mld-v2-03.txt, June 2002. | |||
| 2001. | ||||
| [MRDISC] Biswas, S. "IGMP Multicast Router Discovery", draft- | [MRDISC] Biswas, S. "IGMP Multicast Router Discovery", draft- | |||
| ietf-idmr-igmp-mrdisc-06.txt, May 2001. | ietf-idmr-igmp-mrdisc-08.txt, January 2002. | |||
| [MSOFT] Microsoft support article Q223136, "Some LAN Switches | [MSOFT] Microsoft support article Q223136, "Some LAN Switches | |||
| with IGMP Snooping Stop Forwarding Multicast Packets on | with IGMP Snooping Stop Forwarding Multicast Packets on | |||
| RRAS Startup", http://support.microsoft.com/sup- | RRAS Startup", http://support.microsoft.com/sup¡ | |||
| port/kb/articles/Q223/1/36.ASP | port/kb/articles/Q223/1/36.ASP | |||
| [PROXY] Fenner, B. et al, "IGMP-based Multicast Forwarding (IGMP | ||||
| Proxying)", draft-ietf-magma-proxy-02(?).txt. | ||||
| [RFC1112] Deering, S., "Host Extensions for IP Multicasting", RFC | [RFC1112] Deering, S., "Host Extensions for IP Multicasting", RFC | |||
| 1112, August 1989. | 1112, August 1989. | |||
| [RFC2026] Bradner, S. "The Internet Standards Process -- Revision | [RFC2026] Bradner, S. "The Internet Standards Process -- Revision | |||
| 3", RFC2026, October 1996. | 3", RFC2026, October 1996. | |||
| RFC DRAFT January 2001 | ||||
| [RFC2236] Fenner, W., "Internet Group Management Protocol, Version | [RFC2236] Fenner, W., "Internet Group Management Protocol, Version | |||
| 2", RFC2236, November 1997. | 2", RFC2236, November 1997. | |||
| [RFC2375] Hinden, R. "IPv6 Multicast Address Assignments", | [RFC2375] Hinden, R. "IPv6 Multicast Address Assignments", | |||
| RFC2375, July 1998. | RFC2375, July 1998. | |||
| 8. Acknowledgements | 77.. AAcckknnoowwlleeddggeemmeennttss | |||
| We would like to thank (in no identifiable order) Hugh Holbrook, Bill | We would like to thank Martin Bak, Les Bell, Yiqun Cai, Paul Cong¡ | |||
| Fenner, Yiqun Cai, Edward Hilquist, Toerless Eckert, Kevin Humphries, | don, Toerless Eckert, Bill Fenner, Brian Haberman, Edward Hilquist, | |||
| Karen Kimball and Martin Bak for comments and suggestions on this | Hugh Holbrook, Kevin Humphries, Karen Kimball and Jaff Thomas for | |||
| document. Furthermore, the following companies are acknowledged for | comments and suggestions on this document. | |||
| their contributions: Vitesse Semiconductor Corporation, Cisco Sys- | ||||
| tems, Hewlett-Packard, Enterasys Networks. | ||||
| 9. Author's Addresses: | Furthermore, the following companies are acknowledged for their | |||
| contributions: 3Com, Alcatel, Cisco Systems, Enterasys Networks, | ||||
| Hewlett-Packard, Vitesse Semiconductor Corporation. The ordering | ||||
| of these names do not necessarily correspond to the column numbers | ||||
| in the response table. | ||||
| Morten Jagd Christensen | 88.. RReevviissiioonn HHiissttoorryy | |||
| jCAPS | ||||
| Begoniavej 13 | ||||
| 2820 Gentofte | ||||
| DENMARK | ||||
| email: morten@jcaps.com | ||||
| Frank Solensky | This section, while incomplete, is provided as a convenience to the | |||
| working group members. It will be removed when the document is | ||||
| released in its final form. | ||||
| email: solenskyf@acm.org | draft-ietf-magma-snoop-01.txt: January 2002 | |||
| Extensive restructuring of the original text. | ||||
| draft-ietf-magma-snoop-02.txt: June 2002 | ||||
| Status section removes document history; moved into this sec¡ | ||||
| tion instead. | ||||
| Introduction restores text from the -00 revision that | ||||
| describes snooping and its goals | ||||
| IGMP flooding rules eased, allowing management option to | ||||
| broaden beyond "routers only". | ||||
| Removed a SHOULD/MAY inconsistancy between IPv4 Forwarding and | ||||
| IPv6 processing of checksums. | ||||
| IGMP Forwarding Rules: clarify text describing processing of | ||||
| non-zero reserved fields. | ||||
| Data Forwarding Rules, item 3 is changed from "MUST forward to | ||||
| all ports" to "MAY"; item 4 default changes from "MUST" to | ||||
| "SHOULD use network addresses". | ||||
| Added two sets of additional responses to the questionnaire | ||||
| and text indicating that responses don't cover all products. | ||||
| Removed (commented out) description of IPR issues: IESG is | ||||
| aware of them. | ||||
| The next revision: | ||||
| In the interest of getting this version of the draft released | ||||
| before the deadline (less than seven hours from the moment | ||||
| this paragraph is being typed), we briefly summarize some of | ||||
| the comments on the previous version that need to be included | ||||
| in the next one. We believe that other comments have been | ||||
| addressed in this draft; please let the authors know if this | ||||
| they have either not been included or need to be corrected. | ||||
| IGMP Forwarding rules: | ||||
| Add a reference to and become consistant with the next | ||||
| revision of the IGMP proxy draft, | ||||
| In item 'b': include a description on how the switch | ||||
| determines that a Query came from the router and not | ||||
| another switch. Is there some way to make this distinc¡ | ||||
| tion beyond the source address? | ||||
| Proxy reporting: further analysis of the impact on the | ||||
| election process when using 0.0.0.0 as the source address | ||||
| in membership report messages. Also consider the case | ||||
| where the switch assumes the role of Querier when no | ||||
| routers are detected and forfeits the role as soon as one | ||||
| is announced. | ||||
| Include some discussion about how entries are to be aged | ||||
| from the list, perhaps similar to spanning tree algorithm | ||||
| for unicast MAC address processing. | ||||
| Data Forwarding rules: | ||||
| Link-local range to mention the problem is due to routing | ||||
| protocols not sending Report Messages for their respec¡ | ||||
| tive multicast addresses. | ||||
| Expand discussion of non-IGMP packet forwarding for data | ||||
| that matches an IGMPv3 record. Do snooping switches add | ||||
| intelligence to recognize SSM versus ASM groups? | ||||
| IPv6 Considerations: | ||||
| Is having MLD a subset of ICMPv6 an issue? Should MLDv2 | ||||
| be a separate protocol? | ||||
| Add reference to ICMPv6 specification for message pro¡ | ||||
| cessing rules. | ||||
| 99.. AAuutthhoorr''ss AAddddrreesssseess | ||||
| Morten Jagd Christensen | ||||
| email: morten@jagd-christensen.com | ||||
| Frank Solensky | ||||
| Premonitia, Inc. | ||||
| 1 Nanog Park | ||||
| Acton, MA 01720 | ||||
| email: fsolensky@premonitia.com | ||||
| TTaabbllee ooff CCoonntteennttss | ||||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | ||||
| 2. IGMP Snooping Requirements . . . . . . . . . . . . . . . . . 3 | ||||
| 2.1. Forwarding rules . . . . . . . . . . . . . . . . . . . . . 3 | ||||
| 2.1.1. IGMP Forwarding Rules . . . . . . . . . . . . . . . . . 3 | ||||
| 2.1.2. Data Forwarding Rules . . . . . . . . . . . . . . . . . 5 | ||||
| 2.2. IGMP snooping related problems . . . . . . . . . . . . . . 6 | ||||
| 3. IPv6 Considerations . . . . . . . . . . . . . . . . . . . . 6 | ||||
| 4. Security Considerations . . . . . . . . . . . . . . . . . . 8 | ||||
| 5. IGMP Questionnaire . . . . . . . . . . . . . . . . . . . . . 8 | ||||
| 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 10 | ||||
| 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 11 | ||||
| 8. Revision History . . . . . . . . . . . . . . . . . . . . . . 11 | ||||
| 9. Author's Addresses . . . . . . . . . . . . . . . . . . . . . 13 | ||||
| End of changes. 103 change blocks. | ||||
| 350 lines changed or deleted | 361 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||