我CONFIG_IP_MULTICAST=y
目前正在学习IP
多播,并发现 IP 网络有 2 种常见的多播协议:PIM SS
和PIM DS
。查询我的 wifi 适配器信息,我发现支持多播:
$ ip link show dev wlp2s0
2: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DORMANT group default qlen 1000
问题是设备使用什么组播协议?
PIM SS 和 PIM DS 是组播路由协议。它们仅适用于支持多播的路由器,这些路由器需要决定何时/是否需要将特定多播流从一个网段传递到另一个网段。如果您没有将 Linux 系统设置为也需要能够将多播路由到其他路由器的路由器,则您无需关心它们。
正如 Marcus Müller 所说,典型的 NIC 只关心 IEEE 802.11 以太网地址。它可能有也可能没有硬件多播过滤器,该过滤器可以配置为仅接收具有特定多播以太网地址的多播数据包。但由于某些网卡不具备该功能,并且由于IP组播地址与以太网组播地址之间的映射并不完美,因此操作系统无论如何都需要准备好通过组播IP地址过滤接收到的组播数据包。
关于多播处理,以太网 NIC 基本上有三个硬件实现级别:
在操作系统层面,IGMP是IPv4主机重要的组播管理协议;对于 IPv6,组播管理是 ICMPv6 的所有部分。这就是常规(=非路由器)主机需要关心的所有内容。
IP 比您的网卡关心的级别高一级。所以,答案是:都不是。
两种协议都与卡无关。执行多播的设备上的 IP 堆栈必须知道如何使用底层 IEEE 802.11 寻址将数据包传送到正确的站