我们知道泛洪只能在二层交换机中进行。但是在第 3 层的 OSPF 路由器中使用泛洪和组播。假设我们在 OSPF 中有一台路由器使用多播地址 225.0.0.9。如果路由器发送消息,则每个路由器都使用 D 类地址 225.0.0.9 收到属于同一组的消息。但我的问题是
A)如果我使用多播地址,那么为什么需要泛洪,因为通过多播每个人都会收到消息?
B) 如果我使用单播而不是多播会出现什么问题?
我们知道泛洪只能在二层交换机中进行。但是在第 3 层的 OSPF 路由器中使用泛洪和组播。假设我们在 OSPF 中有一台路由器使用多播地址 225.0.0.9。如果路由器发送消息,则每个路由器都使用 D 类地址 225.0.0.9 收到属于同一组的消息。但我的问题是
A)如果我使用多播地址,那么为什么需要泛洪,因为通过多播每个人都会收到消息?
B) 如果我使用单播而不是多播会出现什么问题?
为什么 OSPF 使用泛洪而不是使用多播?
这是两个截然不同的概念。广播网络上的 OSPF 使用多播来交换路由。它通过将它知道的所有路由告知在同一区域内连接到的其他 OSPF 路由器来进行泛洪。
我们知道泛洪只能在二层交换机中进行。
这与 OSPF 泛洪完全不同。这个词是一样的,但意义却大不相同。
假设我们在 OSPF 中有一台路由器使用多播地址 225.0.0.9。
那行不通。该组播组由 RIPv2 使用,而不是由 OSPF 使用。
如果路由器发送消息,则每个路由器都使用 D 类地址 225.0.0.9 收到属于同一组的消息。
不会,因为 OSPF 路由器不侦听该组播组,并且组播数据包将在接口处被丢弃。
如果我使用多播地址,那么为什么需要泛洪,因为通过多播每个人都会收到消息?
你混淆了洪水这个词。OSPF 路由器可以在多个接口上有邻居。OSPF 泛洪术语意味着它会将其拥有的路由告知同一区域内所有连接的 OSPF 邻居。广播网络上的 OSPF 确实使用多播,但它是一种链路本地多播,不能发送到不同的网络。OSPF 路由器需要向其区域内的所有 OSPF 路由器发送路由,这些路由器连接到参与 OSPF 进程的所有接口。一些接口可能使用广播媒体,而一些可能使用不支持多播的非广播媒体。
如果我使用单播而不是多播会发生什么问题?
您需要了解广播媒体(选举 DR 和 BDR 并使用多播)和非广播媒体(必须配置邻居地址并与每个邻居单独交换路由)上的 OSPF 之间的区别。
每当我们谈论 OSPF 时,泛洪意味着“将任何路由器从一个邻居学到的数据发送到所有其他相邻路由器。”
实际上,洪水意味着更多。泛洪是一种通过网络转发数据包的算法,其工作原理是让路径上的每个网络节点向所有其他邻居发送从一个邻居收到的数据包。
首先,我需要了解一点多播。在进入主要答案之前。一个 D 类地址用作多播地址并作为一组处理。例如,一个机构可能有一个发送多播视频流的内部视频系统。主机上的视频应用程序将被配置为通过邻居路由器订阅特定多播组上的“频道”。每当频道发送任何视频时,所有组成员都会知道。
这是对的。然而,多播用于描述网络能够做到这一点,它没有指定网络如何做到这一点。IP 多播(或至少我知道的方法)确实依赖于具有计算路由的网络。因此,计算这些路由的协议 OSPF 不能使用这种多播。
在使用多播的 OSPF 路由器中也发生了同样的事情。当任何 OSPF 路由器使用组播地址时,它的所有邻居路由器都被视为受一跳距离和泛洪限制的组播组,将信息传递到整个网络。
我会说 OSPF 路由器使用多播地址。此多播地址是链路本地的。在这种情况下,多播将由第 2 层而不是第 3 层完成。此 IP 多播地址映射到第 2 层多播地址。在多点链路(例如以太网)上,路由器将使用第 2 层多播功能将数据包传送到该链路上的所有其他路由器。在您了解基础知识之前,我将从这个案例中抽象出来。
当 OSPF 路由器收到组播数据包时,它不会转发该数据包。这就是我们所说的一跳的意思。
好吧,情况并非如此。OSPF 泛洪所谓的 LSA(链路状态通告)。这些数据包被转发。从某种意义上说,有一个逐跳使用的外部 OSPF 报头。路由器接收数据包,处理外部报头,然后创建一个带有新外部报头的新数据包,并在其中放置原始 LSA。然后它转发数据包。
路由器不会转发它接收到的相同数据包。路由器将信息放入其表中,然后将带有新信息的新数据包发送给其邻居。
这就是距离向量算法所做的。OSPF 路由器不会修改它们转发的 LSA。
所以信息 (LSP) 被淹没,在每一跳使用一个新的多播数据包。这解决了我的第一个问题。
嗯,是
现在来到第二个问题,如果 OSPF 使用单播,那么任何路由器都必须发现它的每个邻居并跟踪它们。单播更难。所以这里使用多播。
OSPF 路由器需要发现它的每个邻居并跟踪它们。它使用此信息来构建 LSA。这是由 HELLO 数据包完成的。这些数据包不会被淹没。
但是,OSPF 确实使用多播地址。您可以假设这样做是为了方便起见,此时并不重要。
“泛滥”意味着 LSA 被发送到区域内的所有路由器(不仅仅是给定的网络),而多播意味着 OSPF pkt(其中包含 LSA)被给定网络上的所有 OSPF 路由器(而不是整个区域)监听)。
单播需要更多的数据包,因此效率会降低。(224.0.0.9 用于 RIPv2 BTW,而不是 OSPF;“所有 OSPF 路由器”是 224.0.0.5,确认将是 224.0.0.6、BDR 和 DR)