网卡使用什么组播协议?

网卡使用什么组播协议?

CONFIG_IP_MULTICAST=y目前正在学习IP多播,并发现 IP 网络有 2 种常见的多播协议:PIM SSPIM 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

问题是设备使用什么组播协议?

答案1

PIM SS 和 PIM DS 是组播的路由协议。它们仅适用于支持多播的路由器,这些路由器需要决定何时/是否需要将特定多播流从一个网段传递到另一个网段。如果您没有将 Linux 系统设置为也需要能够将多播路由到其他路由器的路由器,则您无需关心它们。

正如 Marcus Müller 所说,典型的 NIC 只关心 IEEE 802.3(以太网)/802.11(WiFi)地址。它可能有也可能没有硬件多播过滤器,该过滤器可以配置为仅接收具有特定多播以太网地址的多播数据包。但由于某些网卡不具备该功能,并且由于IP组播地址与以太网组播地址之间的映射并不完美,因此操作系统无论如何都需要准备好通过组播IP地址过滤接收到的组播数据包。

关于多播处理,以太网 NIC 基本上有三个硬件实现级别:

  • 多播过滤器,可以由驱动程序/操作系统根据操作系统和/或应用程序希望侦听的多播地址自动配置
  • 更简单的全有或全无多播过滤器(旧的/廉价的 10/100M NIC):硬件可以配置为接收到达线路的任何和所有多播数据包,或者根本不接收任何多播。
  • 或者根本不支持多播(基本上是非常旧的慢速 10M 以太网 NIC);对于这些卡,驱动程序需要将卡置于混杂模式(= 禁用所有硬件级接收过滤)才能接收任何多播。

在操作系统层面,IGMP是IPv4主机重要的组播管理协议;对于 IPv6,组播管理是 ICMPv6 的所有部分。这就是常规(=非路由器)主机需要关心的所有内容。

在 WiFi 接口上,加密通常使用成对的单播密钥,以及组键用于多播和广播。大多数 WiFi 接口至少包含一些对 NIC 硬件/固件中的加密和密钥管理的支持。只有 WiFi AP 才能直接向主机发送多播消息:如果主机想要发送多播消息,它会首先将其发送到 AP,AP 会将其广播/多播到组。组密钥由 AP 创建和管理,AP 将根据需要使用成对密钥安全地分发组密钥。

答案2

IP 比您的网卡关心的级别高一级。所以,答案是:都不是。

两种协议都与卡无关。执行多播的设备上的 IP 堆栈必须知道如何使用底层 IEEE 802.11 寻址将数据包传送到正确的站

相关内容