一、ipv6组播IP地址和MAC地址的映射
IPv6组播MAC地址以0x3333开头,低32位为IPv6组播地址的低32位,最终形成48比特的组播MAC地址。如图1示,IPv6组播地址FF1E::F30E:101所对应的组播MAC地址为33-33-F3-0E-01-01。
图1 IPv6组播地址的MAC地址映射举例
二、igmp/mld snooping 在linux内核的入口
igmp/mldsnooping均是在网桥中实现的。
数据包从内核出来直到进入snooping处理流程的调用过程:netif_receive_skb-> handle_bridge-> br_handle_frame-> br_handle_frame_finish.
在br_handle_frame_finish 函数中
#ifdefined(CONFIG_MIPS_BRCM) && defined(CONFIG_BR_MLD_SNOOP)
if((0x33 == dest[0]) && (0x33 ==dest[1])) {
br->statistics.multicast++;
skb2 = skb;
if (br_mld_mc_forward(br,skb, 1, 0))
{
skb = NU