首先我要说的是,我不太清楚多播的工作原理。我了解它的要点,但不了解其底层功能。
客户在两个 Jboss 节点之间配置了一个 RHEL6 集群。已配置多播,我可以 ping 224.0.0.1,并从组中的两个服务器获得响应。我无法 ping 分配给每个服务器的每个单独的多播 IP。
例如:服务器 1 的 IP 地址为 225.5.5.5,服务器 2 的 IP 地址为 225.5.5.6。我无法从另一个服务器 ping 这两个 IP 地址。
这是我希望看到的吗?只能 ping 224.0.0.1 IP,而不能 ping 其他 IP?我是否应该将路由配置为与多播 IP 位于同一子网,或者 224.0.0.0 是否覆盖所有子网范围?
答案1
您只能通过多播 ping 订阅了您正在 ping 的多播组的主机。您需要谨慎使用多播组,并且通常,您应该使用管理范围为 的多播组,239.0.0.0/24
否则您可能会冒着侵犯其他软件可能正在使用的注册组的风险。
通常,服务器会向多播组发送流量,而不是加入多播组。多播组是目标地址,源地址是服务器的常规 IP 地址。
每个想要加入多播组的主机都需要加入特定多播组的软件,多播的意义在于多台主机加入同一个组以接收从多播源仅发送一次的相同流量。
除非您在路径上的所有路由器上都正确配置了多播路由,否则多播不会离开第 2 层域(跨路由器),这就是为什么除非您拥有可供多播传输的隧道,否则您无法在 Internet 上进行多播的原因。
答案2
我认为将任何多播地址分配给 Linux 接口都是不合法的,无论多播地址是 224.xxx、231.yyy 还是 239.zzz
即使您能够 ping Redhat 框的 224.0.0.1,如果您检查以太网 NIC 的 ifconfig,您也不会224.0.0.1
在输出中看到任何内容。
为了使终端主机响应多播地址 ping,某些应用程序需要通过内核(及其模块)绑定多播地址。
224.0.0.1 绑定是内核模块之一中的嵌入式应用程序。要响应 225.5.5.5 ,您需要编写一个应用程序来绑定它。