Linux 如果没有订阅者,udp多播是否会在线路上放置任何内容?

Linux 如果没有订阅者,udp多播是否会在线路上放置任何内容?,linux,unix,udp,multicast,Linux,Unix,Udp,Multicast,假设应用程序正在写入udp多播,并且所有订户都退出(或者可能没有进程注册读取多播)。有什么东西在电线上吗 源主机始终发送数据报。由路由器决定另一端是否有组成员,如果有,则转发数据报,否则丢弃数据报。数据包将始终发送出去。IGMP消息包含主机加入/离开多播组的信息,通常仅由路由器处理,以便它们知道在何处路由多播流量。所以主机通常没有这些信息 即使如此,路由器也可能不会转发IGMP消息,但可能会设置静态多播路由来转发某些流量。在这种情况下,即使在没有IGMP的情况下,多播流量也可以通过路由器到达预定

假设应用程序正在写入udp多播,并且所有订户都退出(或者可能没有进程注册读取多播)。有什么东西在电线上吗

源主机始终发送数据报。由路由器决定另一端是否有组成员,如果有,则转发数据报,否则丢弃数据报。

数据包将始终发送出去。IGMP消息包含主机加入/离开多播组的信息,通常仅由路由器处理,以便它们知道在何处路由多播流量。所以主机通常没有这些信息

即使如此,路由器也可能不会转发IGMP消息,但可能会设置静态多播路由来转发某些流量。在这种情况下,即使在没有IGMP的情况下,多播流量也可以通过路由器到达预定目的地


关于源主机发送的接口,这是应用程序定义的行为。发送套接字设置
IP\u MULTICAST\u IF
IPV6\u MULTICAST\u IF
套接字选项,以指示在哪个接口上发送多播流量。如果未设置此选项,系统将选择一个默认接口发送多播数据包。

源主机是否会在其所有接口上发送数据包?否,它将根据IP路由表发送数据包的位置,通过一个NIC发送数据包。如果“路由器”决定“另一端”上是否有组成员,主机是否具有相同的信息来决定写入数据包的“端”(哪个nic)?路由表为多播地址指定该信息没有多大意义。是的,它确实有相同的信息,但RFC 1112说只有路由器做出该决定。别问我为什么。看看你的路由表:你会在那里看到多播的东西。路由器根本不转发IGMP消息。当路由器上的成员身份发生变化时,它们会发送自己的新成员。例如,如果路由器从内部获得两个连接,它将只向外部发送一个连接。IGMP消息不仅告诉路由器在哪里,而且告诉路由器在哪里。是否转发多播。这就是多播工作原理的本质。