擴散法是一種靜態路由算法,每一個輸入的分組都被從除輸入線路之外的所有其它線路上轉發出去.擴散法顯然會產生大量的分組副本,因此必須有一些辦法來抑制無限的轉發.
1.一種辦法是在分組頭中攜帶一個跳數計數器,分組每到一個節點其跳數計數器就減1,當計數器為0時分組被丟棄.計數器的初始值可以設為通信子網的直徑,即相距最遠的兩個節點之間的跳數.
2.另一種辦法是記住哪些分組已經轉發過了,從而確保一個分組不會被同一個節點轉發兩次.這要求源路由器從主機收到一個分組后,將一個序號放入分組頭中,同時每一個路由器對于每一個源路由器都要維護一張序號表,記錄從每一個源路由器上已經收到的分組的序號.每當一個路由器收到來自某個源路由器的分組時,就用分組的序號去查找該源路由器的序號表,如果序號已在表中則該分組被丟棄.為了防止序號表過大,序號表中還應增設一個計數器k,表示序號直至k的分組都已經轉發過了,從而不需要保留序號小于k的序號.
盡管擴散法在很多應用中都不實用,但它確實也有一些適用的地方.比如由于擴散法的魯棒性(robustness)很好,它在戰場的軍事網絡中特別有用;其次擴散法在本質上是一種廣播式的路由算法,因此在一些要求廣播傳輸的應用中也很有用,如分布式數據庫的同步更新;在無線網絡中位于發送站功率范圍內的所有站都能收到發送站發送的消息,這其實也是一種擴散的形式,這個特性常被一些算法所利用;由于擴散法總能找到最短通路,因此其它路由算法都可以和擴散法進行比較,以衡量各自的算法性能.