![路由和转发表的区别](https://linux22.com/image/800864/%E8%B7%AF%E7%94%B1%E5%92%8C%E8%BD%AC%E5%8F%91%E8%A1%A8%E7%9A%84%E5%8C%BA%E5%88%AB.png)
转发表和路由表有什么区别?
答案1
路由决定将数据包发送到哪个接口。本地创建的数据包也必须做出此决定。路由表包含网络地址和相关接口或下一跳。这指的是ip route
和ip rule
(在 Linux 上下文中)。
转发是指到达系统但目的地并非该系统的数据包。转发是系统的一个决定:“我接收数据包并尝试将其发送到目的地。”而不是简单地丢弃它。“转发”是数据包过滤器上下文中的常用术语。Linux 的 Netfilter 在其基表中有三个链:INPUT、OUTPUT 和 FORWARD。此链只是做出决定“是否转发或丢弃此数据包?”(如果系统上通常启用了转发;Linux 再次:/proc/sys/net/ipv4/ip_forward)。
答案2
在大多数系统(具有单个网络连接的系统)上,它们将是相同的。然而,在路由器上,它们往往会有所不同。
路由表保存路由器使用动态路由协议(例如 OSPF 或 BGP)从其对等点和邻居处获知的所有路由。根据所用路由协议的参数对每条路由进行排序和评估,并将“最佳”路由表条目子集放入转发表中。当路由器收到数据包时,它会在转发表中查找目标地址,以决定通过哪个接口发送数据包以及下一跳地址应该是什么。随着新路由的获知、接口的启用或禁用,或对排名方案进行策略更改,路由表将重新评估并更新转发表。
路由表通常存储在 RAM 中;高性能设备上的转发表将分布在线路卡上(在模块化系统中),并存储在速度更高的 TCAM 中。TCAM 中通常可以保存有限数量的路由;当转发表超出 TCAM 容量时,数据包可能会被丢弃,或者通过软件路由(速度会慢得多)。
答案3
首先,在我看来,我认为你应该首先清楚地了解转发和路由,这经常被忽视。根据这本书计算机网络,第 240 页,作者:Lary L.Peterson转发是路由器在收到数据包后采取的一系列操作,包括查看其目标地址、查阅表以及按照该表确定的方向发送数据包。但是,此处的路由是指构建转发表的过程。
回到最初的问题,我们可以得出这样的结论:虽然我们可以将转发表和路由表保留在相同的结构中,但有许多理由将它们分开。转发表通常需要进行结构化以优化转发数据包时查找地址的过程,其中包含更多信息,例如 MAC 地址。相比之下,路由表通常注重计算拓扑的变化,路由表的条目通常比较简洁,只包括下一跳的IP。
答案4
路由表包含到不同目的地的所有路径(同一目的地可以有2个或更多不同的路径)
但
转发表仅包含到达每个目的地的最佳路径(每个目的地只有一条路径)