OSPF 及其对多播的使用

网络工程 路由 路由器 ospf 多播 igmp
2021-07-27 23:50:33

当谈到 OSPF 及其对多播的使用时,我是否认为本地网段内仍然需要 IGMP 转发和 IGMP 查询器?

我的理解是没有这个,帧将被视为广播并发送给每个人。因此消除了使用多播的好处。

基于此,是否有任何机制使其回退到单播,以防止上述情况。抱歉,如果我对这里的理解有偏差:)

3个回答

多播的好处是未订阅多播组的主机会忽略它们接收到的发送到多播组的帧。使用广播,他们不能忽略帧。

OSPF 多播组是一种本地链路多播,即使在交换机上启用了 IGMP 侦听,它也会被发送到每个交换机接口。OSPF 只在广播网络上使用组播,为了使用 DR 和 BDR 是必须的,它们只在广播网络上使用。对于点对点链路,OSPF 使用单播,对于非广播网络,您使用该neighbor语句,它使用单播。


OSPF 组播使用224.0.0.5224.0.0.6地址,它们在链路本地地址范围内。无论 IGMP 侦听如何,具有 IGMP 侦听的交换机都应该将所有链路本地组播转发到每个接口。此行为在RFC 4541,Internet 组管理协议 (IGMP) 和多播侦听器发现 (MLD) 侦听交换机的注意事项中定义

  1. 目标 IP (DIP) 地址在 224.0.0.X 范围内但不是 IGMP 的数据包必须在所有端口上转发。

    此建议基于以下事实:许多主机系统在发送或侦听 IP 多播数据包之前不会发送此范围内的加入 IP 多播地址。此外,由于 224.0.0.X 地址范围被定义为本地链路(不被路由),因此似乎没有必要保留该范围内每个地址的状态。此外,一些路由器在 224.0.0.X 地址范围内运行而不发出 IGMP 加入,如果交换机由于没有看到来自路由器的加入组消息而修剪它们,这些应用程序就会中断。

就 OSPF hello/discovery 多播数据包发生的情况而言,您是对的。正如 Ron 解释的那样,交换机将它们发送给子网/VLAN/广播域上的每个人,因为 224.0.0.0/24 没有发生 IGMP 侦听。

但是 - 我相信这是您没有考虑的部分 - 主机仍然可以在广播之前丢弃这些多播。如果主机对(任何/这个)多播组不感兴趣,它可以丢弃以太网帧(在 L2)或 IPv4/IPv6 数据包(在 L3),甚至不查看任何内部有效负载。然而,必须将广播数据包传递到“堆栈的更深处”,以查看它是否对任何正在运行的应用程序/服务/守护进程感兴趣。

要添加到 Ron 的 OSPF 网络类型/操作模式列表:

运行连接到具有被动接口的OSPF 路由器的边缘网络是一种很好的做法,尤其是在 OSPF 网络类型本质上是“广播”的情况下。例如,众所周知的大型园区“25 个客户端 VLAN”就是这种情况,每个 VLAN 至少有几十台主机:

被动接口

  • 保持校园局域网中的喋喋不休
  • 减少路由器对终端系统的暴露(喜欢脚本的 CompSci 学生,有人吗?) - 不交换 Hello 或 LSA,既不输入也不交换。
  • 在路由器上节省一些资源(不必在几十个 VLAN 中与同一个对等方执行相同的DR/BDR 选举)
  • 仍然允许有关这些网络的路由信息​​作为内部路由传播到 OSPF AS 的其余部分。将它们作为外部路由(凭借“重新分配连接”)具有一些含义(可取的或不想要的),例如在 AS 的其他角落聚合、重新分配或过滤路由时。

当谈到 OSPF 及其对多播的使用时,我是否认为本地网段内仍然需要 IGMP 转发和 IGMP 查询器?

OSPF 对多播的使用是针对链路本地范围组,IP TTL 设置为 1 以确保它表示链路本地。[ 224.0.0.5 和 224.0.0.6 ( RFC2328 pp.185-186 )]

撇开 OSPF 不谈,为了使交换机的组播修剪功能发挥作用,是的,必须有一些事情会导致组成员身份报告。所有 IGMP 加入(未经请求的成员资格报告)最终都会过期(RFC 2236 IGMP v2,第 18 页)。如果交换机没有看到定期报告(即成员报告的 IGMP 侦听),则该多播组可能会受到修剪或泛洪到所有端口。(取决于您的交换机的配置方式)