User Tools

Site Tools


igmp_snooping

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
igmp_snooping [2009/04/26 22:42] bladeigmp_snooping [2012/10/17 11:40] (current) claudiu
Line 28: Line 28:
   * if igmp snooping is disabled, multicast traffic is flooded to all ports in vlan, regardless of frame nature (i.e. it is igmp or not); static multicast fdb entries are ignored;   * if igmp snooping is disabled, multicast traffic is flooded to all ports in vlan, regardless of frame nature (i.e. it is igmp or not); static multicast fdb entries are ignored;
   * mrouters can be statically configured while igmp snooping is disabled on vlan, but they are ignored until igmp snooping is enabled; when igmp snooping is enabled, the rules listed above apply;   * mrouters can be statically configured while igmp snooping is disabled on vlan, but they are ignored until igmp snooping is enabled; when igmp snooping is enabled, the rules listed above apply;
 +  * mrouters are not activated until: interface is up AND interface has access to mrouter vlan (either access mode vlan or trunk allowed vlan)
 +
 +When changing access vlan, with mrouter already configured (in new vlan):
 +<code>
 +5w0d: IGMPSN: mgt: Vlan 15, port Fa0/5 port_id 7 in non-fwd mode
 +5w0d: IGMPSN: mgt: received pmvlan_linkchange down event on vlan 15 
 +5w0d: IGMPSN: Adding router port Fa0/5 to all GCEs in Vlan 18
 +5w0d: L2MM: added rport Fa0/5 on Vlan 18
 +5w0d: %SYS-5-CONFIG_I: Configured from console by vty0 (10.0.0.2)
 +</code>
  
 ====== Implementation Approach ====== ====== Implementation Approach ======
Line 47: Line 57:
       * virtual mac must be equal (between fdb entry and packet)       * virtual mac must be equal (between fdb entry and packet)
       * vlan must be equal (between fdb entry and packet)       * vlan must be equal (between fdb entry and packet)
 +  * igmp group listing is done only on the slow path (upon user request) by walking the entire fdb and building the igmp group list:
 +    * the kernel module is asked for a list of all igmp membership fdb entries (with the ability to filter by a specific group and/or vlan);
 +    * userspace code walks the fdb entry list and builds a (temporary) list of groups and, for each group, a list of member ports
  
 The following changes need to be made to existing code: The following changes need to be made to existing code:
Line 53: Line 66:
  
 ===== Forwarding to mrouter ports ===== ===== Forwarding to mrouter ports =====
 +
 +Whether a port is mrouter or not is a function of the port and vlan. In other words, mrouter can be stored as a flag (bit) depending on the port and vlan. Since vlan number is limited and relatively small (4096), mrouter information can be stored as a per-port vlan-indexed bitmap. The data structure would be similar to vlan membership for trunk ports.
 +
 +Flooding to all mrouter ports in a specific vlan becomes very simple:
 +  * use the VDB to iterate through all ports in the required vlan;
 +  * for each port check if it's mrouter in the required vlan;
 +
 +Algorithm can be easily cloned from sw_flood().
  
 ====== CLI Commands ====== ====== CLI Commands ======
igmp_snooping.1240774940.txt.gz · Last modified: by blade