一般来说,网卡在非混杂模式下,只会接收目的MAC地址为自身硬件地址或广播地址的以太网帧,也就是说网卡会丢弃目的MAC为其它地址的数据包。
上层应用无法在非混杂模式下接收多个非广播MAC地址的报文并做转发等高级处理。如使用IP工具为一个网络设备配置MAC过滤列表的场景,需要网卡接收多个单播目的MAC地址的报文。
当网卡设备支持单播过滤时,在关闭网卡混杂模式之前,内核网络栈会将相关的单播MAC地址同步到网卡设备的单播地址列表中。这样,当关闭混杂模式时,网卡设备还可以继续正常上送目的MAC地址在单播列表内的以太网帧。网络设备驱动一般会同时将该单播MAC列表同步到网卡硬件的过滤列表中。
Linux内核会将指定的MAC地址保存在内核网络设备(net dev)的一个单播MAC地址列表中,SP600系列网卡支持设置该单播MAC地址列表到网卡硬件的过滤列表中,以实现单播过滤功能。