逆向轉發

逆向路徑轉發(英語:Reverse path forwarding,簡稱RPF)是為路由器傳輸多播數據包時確保一個無循環環境、以及在傳輸單播數據包時防止IP位址欺騙的一種技術。

簡介

逆向路徑轉發(英語:Reverse path forwarding,簡稱 RPF)是為路由器傳輸多播數據包時確保一個無循環環境、以及在傳輸單播數據包時防止IP位址欺騙的一種技術。

廣播模式

當一個廣播分組到達一個路由器的時候,該路由器對他進行檢查,看它到來的線路是否是通常用來給廣播源傳送分組的線路。 如果是,則有可能此分組是沿著最佳線路被轉發過來,路由器將該分組轉發到除到來的那條線路之外的所有其他線路。 否則,此分組被當作一個可能的重複分組被丟棄。 通常[匯集樹]被用作來判斷是否是最佳線路。

多播RPF

多播RPF,也通常被直接了當地被稱呼作RPF, 配合MSDP及PIM等多播路由協定以確保無循環地傳遞多播數據包。在多播路由中,用作決定轉遞數據包的是來源地址,而非像單播中使用目的地地址。

當一個多播數據包進入路由器接口,路由器會查看該接口可到達的網路的清單,意即:路由器檢查數據包的逆向路徑。如果路由器找到一個匹配該來源地址的路由表條目,RPF檢查通過,並且分組被轉發到參與該多播組多播的所有其他接口。如果RPF檢查失敗,則該數據包被丟棄。因此,分組轉發的結果基於分組的反向路徑而不是前向路徑。RPF路由器只會轉遞那些路由表中有與來源地址所相應條目的數據包,以確保不會產生任何循環。

這對有冗餘連線的多播環境來說是致命性地必要。因為同一個多播數據包可以從不同的接口進入同一隻路由器,RPF測試是決定該數據包繼續轉送與否時不可劃缺的一部分。如果路由器傳送所有來自接口A的多播數據包到接口B,而同時傳送所有來自接口B的包封到接口A,兩個接口都可能會收到同一個數據包,這將會產生很典形的路由循環因為數據包只會一直被傳輸下去直到其TTL欄位到期。但即使考慮到TTL過期,任何類形的路由循環都理應儘可能地避免,因為這都會短暫地大幅減低網路的可用性。

單播RPF(uRPF)

嚴格模式

在嚴格模式下,每個傳入數據包都根據FIB進行測試,如果“傳入”接口不是最佳反向路徑,則數據包檢查失敗。默認情況下,失敗的數據包被丟棄。

Cisco設備上的示例命令:ip verify unicast source reachable-via {rx} - 嚴格模式, {any}- 寬鬆模式

可能模式

在可能模式中,FIB維護到給定IP位址的備用路由。如果“傳入”接口與任何與該IP位址相關聯的路由匹配,則該分組被轉發。否則,數據包被丟棄。

寬鬆模式

在寬鬆模式,每個進入的單播數據包的來源地址同樣會被檢查。如果來源地址是無經由該接口的路逕到達,檢查將失敗。

單播RPF混淆

RPF通常被錯誤地定義為反向路徑過濾,特別是當涉及單播路由。這是一個可以理解的首字母縮寫誤解,當RPF與RFC 3704中的單播路由一起使用時,則基於RPF檢查的通過或失敗來允許或拒絕流量。這種想法是,RPF檢查失敗並因此被過濾則流量被拒絕,然而根據RFC 3704,正確的解釋是:如果通過RPF檢查,則流量被“轉發”。正確使用的幾個例子可以在許多文檔的示例中找到,諸如Juniper、Cisco、OpenBSD,最重要的是RFC 3704,其定義了單播中RPF的使用。

雖然uRPF用作入口“過濾”機制,但是它受到反向路徑“轉發”的影響。

相關詞條

熱門詞條

聯絡我們