显然,这种扩散会产生大量的,实际上是无穷多的重复分组,必须采取某种手段来限制它的数量。一种方法是在每个分组头上附加跳计数器,当分组每经过一跳时,计数器值就减1。当计数器减为零时,放弃该分组。理想状态是置计数器初值为从源节点到目标节点间的跳数。如果发送方不知道跳数是多少,可将计数器初始化为最坏情况下的数值,即最长路径值(等于子网的整个直径)。

  另一种抑制扩散的办法是记录哪些分组已经扩散过,避免第二次扩散它们。为达到这一目的,源端路由器在每个从其主机接收的分组中设置一序号,网络中的每个路由器为每一个源端路由器保存一张表,表中指明曾接收的分组来自该源端的分组序号。当收到某源端发来的分组后,若从对应表中发现它的序号,表明它曾被扩散过,则丢弃此分组。为防止表无限制地增长,可为表加一个计数器。如果计数器值为k,表示直到k的序号都已经记录下来,这样低于k的表项就可以不再需要了。

  一个较有实用价值的扩散法是选择扩散法。在这种算法中,路由器不是将分组发送到除发来线路外的所有线路上,而是送到很接近正确方向的线路上。之所以可能做到这一点是因为向东方传送的分组,就不需要向西方发送。

  扩散法并不很实际,但对某些特殊情况有用。如在军事应用中,网络上可能有大量的路由器被不断损坏,需要靠扩散法来增强路由选择的健壮性。在分布式数据库应用中,当并发修改多个数据时,扩散法也很有用。扩散法还可以作为衡量其它路由算法的尺度,由于扩散法并行选择每一条可能的路径,所以它总能选择到最短路径。没有什么算法能产生一个更短的路径。