路由和转发表之间的区别

转发路由表有什么区别?

路由是决定发送数据包的接口。 这个决定也必须用于本地创build的数据包。 路由表包含networking地址和相关的接口或下一跳。 这是指ip routeip rule (在Linux上下文中)。

转发是指到达一个系统但不是这个系统的数据包。 转发是这个系统的一个决定:“我把这个数据包拿出来,并试着把它送到目的地。” 而不是只是放弃它。 “转发”是数据包filter中常见的术语。 Linux的Netfilter在其基表中有三条链:INPUT,OUTPUT和FORWARD。 这个链只是决定“这个数据包是被转发还是丢弃?” (如果在系统上一般启用转发; Linux再次:/ proc / sys / net / ipv4 / ip_forward)。

在大多数系统上(只有一个networking连接的系统),它们将是相同的。 但是,在路由器上,它们往往会有所不同。

路由表保存了路由器使用dynamic路由协议(如OSPF或BGP)从对等和邻居学到的所有路由。 根据所使用的路由协议的参数对每条路由进行sorting和评估,并将“最好”的路由表条目的子集放入转发表中。 当路由器收到一个数据包时,它在转发表中查找目的地址,决定通过哪个接口发送数据包,以及下一跳地址应该是什么。 当学习到新的路由,启动或closures接口,或对sortingscheme进行策略更改时,将重新评估路由表并更新转发表。

路由表通常存储在RAM中; 高性能设备上的转发表将通过线卡(在模块化系统中)分布,并存储在更高速的TCAM中。 通常可以在TCAM中保存有限数量的路由; 当转发表超过TCAM容量时,数据包可能会丢失,或者以软件路由(显着较慢)。

首先,在我看来,我认为首先应该清楚地理解转发路由之间的区别,而转发路由往往是被忽视的。 根据Lary L.Peterson在第240页的“ 计算机networking ”一书,转发是路由器在接收到数据包之后所采取的一系列动作,包括查看目的地址,查询表格,并按照由那张桌子。 但是,这里的路由指的是转发表的build立过程。

回到原来的问题,我们可以得出这样的结论:虽然我们可以在同一个结构中保留一个转发表和一个路由表,但是把它们分开是有很多原因的。 转发表通常需要结构化,以便在转发数据包时优化查找地址的过程,该数据包包含更多信息,例如MAC地址。 相比之下, 路由表通常侧重于计算拓扑变化,而路由表中的表项通常比较简洁,只包含下一跳的IP地址。

路由表包含到不同目的地的所有path(相同的目的地可以有2个或多个不同的path)

转发表只包含到每个目的地的最佳path(每个目的地只有一条path)