Flooding

Flooding

在網路中,flooding是指從任何節點通過一個路由器發送的信息包會被發送給與該路由器相連的所有其他節點(除了發送信息包出來的那個節點)。flooding是快速散布路由更新信息到整個大型網路的每個節點的一種方法。它有時也被用於多點傳輸信息包(在真實或虛擬網路中從一個來源節點傳輸到許多特定節點)。

網際網路的OSPF協議(它在網路中更新路由信息)使用的就是flooding。

洪泛法


在OSPF協議中,當鏈路狀態發生變化時要用Flooding向所有路由器發送信息。
此演演算法不要求維護網路的拓撲結構和相關的路由計算,僅要求接收到信息的節點以廣播方式轉發數據包。例如,源節點希望發送一段數據給目標節點。源節點首先通過網路將數據副本傳送給它的每個鄰居節點,每個鄰居節點再將數據傳送給各自的除發送數據來的節點之外的其他。如此繼續下去,直到數據傳送目標節點或者數據設定的生存期限為0為止。

搜索方法


在最初的Gnutella協議中,使用的是Flooding方法,在網路中,每個節點都不知道其他節點的資源。當它要尋找某個文件,把這個查詢信息傳遞給它的相鄰節點,如果相鄰節點含有這個資源,就返回一個QueryHit的信息給Requester。
如果它相鄰的節點都沒有命中這個被查詢文件,就把這條消息轉發給自己的相鄰節點。這種方式像洪水在網路中各個節點流動一樣,所以叫做Flooding搜索。由於這種搜索策略是首先遍歷自己的鄰接點,然後再向下傳播,所以又稱為寬度優先搜索方法(BFS)。如圖3所示:一開始搜索的節點TTL=3,它每傳播一次TTL減1,如果TTL減到0還沒有搜索到資源則停止。如果搜索到資源則返回目標機器的信息以建立連接。在搜索過程中可能出現循環,但是由於有TTL控制,所以這個循環不會永遠進行下去,當TTL=0的時候自然結束。