1

所以我必须模拟一个课程项目的原始洪水算法,我想澄清和确认一些想法,因为在互联网上似乎很难找到我想要的东西(所以我一定做错了什么)......

无论如何,据我所知,泛洪算法是当一个节点想要将一系列数据包发送到目的地时,将每个数据包发送到每个连接的节点。然后,这些接收节点通过将它们收到的数据包的副本发送到所有连接的节点(发送原始数据包的节点除外)来重复该过程。依此类推,直到数据包到达目的地。所以基本上这个算法可以确保数据包在网络泛滥的同时到达目的地;因此得名。所以这是我和我的教授澄清的:

1)我假设生成的数据包将有一个跳跃计数器,它的值对于每个数据包都是相同的,在每个访问的节点上都会减少,当它达到 0 时数据包将被丢弃。我还假设该值将取决于网络的大小,他同意但没有说明网络的大小如何影响它。你拿它的直径吗?有人能帮我一下吗?

2) 一个节点在自己身上保留他们收到的数据包的副本(为什么?如果他们将其插入的一个节点没有发送回确认,则重新发送?)并且当跳跃计数器达到 0 时,数据包从网络中掉线,但是当一个数据包到达一个已经拥有它的副本的节点时会发生什么?我假设节点丢弃它,因为它有一个副本并且逻辑上已经将它发送给它的所有邻居,但我不确定。有人可以澄清一下吗?

3)所有节点都具有它们可以容纳的最大数据包容量。那么当一个节点达到最大容量时“停止”工作并且不接受进一步的数据包或以 FIFO 方式丢弃?我假设第一个,因为该项目的目标之一是估计哪些节点将首先被淹没。但实际上会发生什么?连接到它的节点不断发送数据包,只是没有得到确认,因为它丢弃它们或发送一个不再接收数据包的信号,我不知道,将其路由表中的成本更改为一个值这意味着没有连接/或无限成本,因此他们不再发送任何东西。

4)另外我忘了问,生成数据包的源节点呢?它还保留副本吗?我认为确实如此,但它不是最有可能首先泛滥的节点,因为它会在生成的那一刻保留每个数据包的副本?大概是我想多了……

4

1 回答 1

2

1) [跳计数器值]

它需要足够大才能遍历网络。它基本上是数据包在通过网络的最长路径上遇到的中间节点的数量。

2)当一个数据包到达一个已经拥有它的副本的节点时会发生什么?

它被丢弃。

3)所有节点都具有它们可以容纳的最大数据包容量。那么当一个节点达到最大容量时“停止”工作并且不接受进一步的数据包或以 FIFO 方式丢弃?

不接受新数据包。无处可放:它仍然有未处理的数据包排队。这不是先进先出。

4)另外我忘了问,生成数据包的源节点呢?它还保留副本吗?我认为确实如此,但它不是最有可能首先泛滥的节点,因为它会在生成的那一刻保留每个数据包的副本?大概是我想多了……

如果源节点正在收集确认,它将保留每个数据包直到它被确认,因此它可以实现重试算法。

了解您是在谈论 IP、UDP 还是 TCP,还是只是数据链路层,这将有很大帮助。

于 2012-05-12T01:20:58.423 回答