IPMC (IP Multicast) group table compression is intended to increase scalability of multicast hardware tables in EXOS switch, and allows multiple <S,G,V> multicast cache entries
to utilize the same group table entry when the associated egress port lists are the same.
When it comes to IGMP snooping entries, one IGMP snooping entry uses two different hardware table resources to hardware forward multicast packets instead of software forwarding them.
The first hardware table is the L3 hash table that is shared with ARP entries. The multicast entries in the L3 hash table is represented as a form of (Source,GroupAddress,VLAN).
The second table associated with the first table is the group table and its entries contain a list of egress ports where multicast packets should be replicated and forwarded out.
When a switch receives an IGMP report, an IGMP snooping entry will be created in hardware, populating one entry of (S,G,V) in the L3 hash table and one entry of an egress port list in the group table.
When the switch receives a multicast packet, its (S,G,V) will be searched in the L3 hash table.
If there is a match, the associated group table entry will be referenced and the packet will be replicated and forwarded out to the ports specified in the group table entry.
The reason IPMC compression increases scalability of multicast hardware tables is that the number of the group table entries is less than the number of (S,G,V) entries supported in the L3 hash table.
With IPMC compression off, each (S,G,V) entry in the L3 hash table is associated with an individual/separate group table entry.
In this way, the total number of multicast hardware entries is limited to the group table size.
With IPMC compression on, multiple (S,G,V) entries in the L3 hash table can share the same group table entry, when their replication port lists are same.
In most environments where multiple multicast cache entries share the same set of replication ports, the total number of multicast hardware entries can increase up to the number of the (S,G,V) cache entries supported in the L3 hash table.
For example, C-series modules in BD8K support up to 4K of (S,G,V) cache entries in the L3 hash table but up to 2K of the group table entries.
And, XL-series modules support up to 6K of (S,G,V) cache entries in the L3 hash table but up to 4K of the group table entries.
With IPMC compression on, the maximum number of the multicast hardware table increases up to 4K on C-series modules and 6K on XL-series modules.
In EXOS switch, IPMC compression is enabled by default, and in most cases, it doesn't have to be changed. To change the IPMC compression mode, use the following command.
Note: when you enable or disable this mode, all IP multicast entries are flushed, and this can result in a temporary loss of multicast traffic while the IP multicast entries are relearned.
|configure forwarding ipmc compression [ group_table | off ]|
To verify usage of the IPMC cache entries and group table entries, use the following debug command.
|# debug hal show ipv4Mc |
Total IPMC Cache Entries : 3(IPv4 : 3, IPv6 :0)
Total IPMC Caches with No Group Index : 0(IPv4 : 0, IPv6 :0)
L2 Mode Caches with No Group Index : 0(IPv4 : 0, IPv6 :0)
L3 Mode Caches with No Group Index : 0(IPv4 : 0, IPv6 :0)
IPMC Group Table Entries In-use : 2
IPMC Group Table Entries Max : 0
L2MC Group Table Entries In-use : 0
L2MC Group Table Entries Max : 0
IPMC Forwarding Mode : 2