逆向路径转发(英語: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用作入口“过滤”机制,但是它受到反向路径“转发”的影响。

外部連結 编辑