2012-05-11 44 views
1

所以我必須模擬一個課程項目的原始泛洪算法,我想澄清和確認一些想法,因爲它似乎很難找到我想要的互聯網(所以我必須做錯了什麼)...網絡上的洪泛算法

無論如何,據我所知,洪泛算法是當一個節點想要發送一個數據包序列到目的地發送每個數據包到每個連接的節點。然後,這些接收節點通過將收到的數據包的副本發送給所有連接的節點來重複該過程,除了發送原始數據包的節點。依此類推,直到包到達目的地。所以基本上這個算法確保數據包在達到目的地的同時氾濫網絡;從而得名。 所以這是我澄清與我的教授:

1)我假設生成的數據包將有一個跳躍計數器,它的價值將是爲每個數據包一樣,會減少對每一個訪問節點時它達到0,數據包將被丟棄。我還假定價值取決於網絡規模,他同意但沒有說明網絡的規模如何影響它。你把它的直徑?有人能幫我一下嗎? 2)一個節點保存它們自己收到的數據包的副本(爲什麼?如果他們所在的節點沒有發送確認迴應,重新發送它?),並且當跳轉時跳過網絡計數器達到0,但是當一個數據包到達一個已經擁有它的副本的節點會發生什麼?我假設節點放棄它,因爲它有一個副本,邏輯上已經將它發送給它的所有鄰居,但我不確定。有人可以澄清這一點嗎?

3)所有節點都有最大的數據包容量。那麼當一個節點達到最大容量「停止」工作並且不接受更多數據包或以FIFO形式丟棄時?我假設第一個,因爲該項目的目標之一是估計哪些節點將首先被洪水淹沒。但是究竟發生了什麼?連接到它的節點一直在發送數據包,但沒有得到確認,因爲它丟棄了它或發送了一個沒有收到更多數據包的信號,並且我不知道將其路由表中的成本更改爲一個值這意味着沒有連接/或無限的成本,所以他們不再發送任何東西。

4)另外我忘了問,生成數據包的源節點呢?它是否也保留副本?我認爲它確實存在,但是它不會是最先被洪水淹沒的最可能的節點,因爲它會在生成時刻保留每個數據包的副本。我可能在想這...

+0

對於2):如果數據包已經複製到一個節點上,並且它接收到相同的數據包,他必須丟棄它。如果沒有,這是一個無限循環,你永遠不會離開這裏。 (我遵循了與我想象的相同的邏輯反思)。 (這不是非常有建設性的,但它確認了你最初的想法) – Depado

+0

@Depado:不能有無限循環,因爲數據包的跳數是有限的。它確實緩解了來自網絡的壓力。 –

回答

2

1)跳計數器值]

它需要足夠大,以在網絡中傳輸。它基本上是數據包在通過網絡的最長路徑上遇到的中間節點的數量。

2)當一個數據包到達一個已經擁有它的副本的節點時會發生什麼 ?

它被丟棄。

3)所有節點都有最大容量的數據包。那麼當 節點達到最大容量「停止」工作並且不接受 進一步的數據包或以FIFO的方式丟棄?

不接受新的數據包。無處可放:它仍然有未經處理的數據包排隊。這不是一個先入先出。

4)另外我忘了問,生成 數據包的源節點呢?它是否也保留副本?我認爲它確實存在,但不是 是最可能的洪泛節點,因爲它會保留當前生成的每個數據包的副本 ?我可能在思考 它...

如果源節點收集確認,將保留每個數據包,直到它已被確認,因此它可以實現重試算法。

知道你是在談論IP,UDP還是TCP,還是僅僅是數據鏈路層,這將有很大幫助。

+0

非常感謝。實際上它沒有出現,它只是一個用OOP語言(JAVA)來模擬泛洪算法的項目......而且我通常傾向於過度使用東西,所以我試圖描繪出我必須做的事情的清晰畫面...更有可能他是在談論TCP,因爲在那次演講之後它宣佈了,我們正在處理數據包,但他沒有真正說出任何有關確認或任何其他信息...... –

+0

關於最大容量?該節點存儲它接收到的數據包的副本,然後傳播,但是何時丟棄它存儲的副本? –

+0

@AndreasAndreou當它們被讀入應用程序時,它們將從套接字接收緩衝區中移除。 – EJP