路由表
在计算机网络中,路由表(routing table)或称路由择域信息库(RIB, Routing Information Base),是一个存储在路由器或者联网计算机中的电子表格(文件)或类数据库。路由表存储着指向特定网络地址的路径(在有些情况下,还记录有路径的路由度量值)。路由表中含有网络周边的拓扑信息。路由表建立的主要目标是为了实现路由协议和静态路由选择。
在现代路由器构造中,路由表不直接参与数据包的传输,而是用于生成一个小型指向表,这个指向表仅仅包含由路由算法选择的数据包传输优先路径,这个表格通常为了优化硬件存储和查找而被压缩或提前编译。本文将忽略这个执行的详细情况而选择整个路径选择/传输信息子系统作为路由表来说明。
基本概念
路由表使用了和利用地图投递包裹相似的思想。只要网络上的一个节点需要发送数据给网络上的另一个节点,它就必须要知道把数据发送到哪。设备不可能直接连接到目的节点,它需要找到另一个方式去发送数据包。在局域网中,节点也不知道如何发送IP包到网关。将数据包发到正确的地址是一个复杂的任务,网关需要记录发送数据包的路径信息。路由表就存储着这样的路径信息,就如地图一样,是一个记录路径信息,并为需要这些信息的节点提供服务的数据库。在当代路由构造中将路由表的控制功能和传输表的传输区分开来[1]。
逐跳路由选择需要所有能到达地址的每个路由表清单,路径中的下一个设备地址,下一个转移地址。假设路由表是一致的,中继包的简单算法是发送数据到每一个地址。逐跳路由选择是IP网络层[2]和OSI网络层的基本特性,与之不同的是IP端到端和OSI传输层的功能。
功能
在路径选择的过程中,主机和路由器的决策是由一个叫路由表的路径数据库辅助决定的。路由表在路由器内部。根据路由协议,主机也可以拥有用于选择最佳路径的路由表。主机路由表是互联网协议中可选的,像已经过时了的IPX协议。各种路由表:
路由表构造的挑战
在路由表构造中使用有限的空间去存储巨量的路径是最主要的挑战。在互联网上,正在使用的地址聚集技术是一种称为无类别域间路由(CIDR)的按位词头匹配的方案。
在网络中每个节点都被认为有一个有效的路由表,路由表必须与各种各样的节点和路径环一致。这就是逐跳路由模型的主要问题,几个拥有不一致的路由表的路由可能会导致传输的数据包进入死循环。路由环路在历史上是有灾难性的路由选择,而如今,如何避免路由环路的出现是路由协议的主要设计目标。
路由表的内容
对每组网络介面(interface),路由表至少会存有下面的信息:
- 网络ID(Network ID, Network number):就是目标地址的网络ID。
- 子网掩码(subnet mask):用来判断IP所属网络
- 下一跳地址/接口(Next hop / interface):就是数据在发送到目标地址的旅途中下一站的地址。其中interface指向next hop(即为下一个route)。一个自治系统(AS, Autonomous system)中的route应该包含区域内所有的子网路,而默认网关(Network id:
0.0.0.0
, Netmask:0.0.0.0
)指向自治系统的出口。
根据应用和执行的不同,路由表可能含有如下附加信息:
- 花费(Cost):就是数据发送过程中通过路径所需要的花费。
- 路由的服务质量
- 路由中需要过滤的出/入连接列表
路由表也是一个网络安全的关键,像单播可逆路径传输(uRPF)[3]就是一个安全路由表的例子。在这种具有多种变体的技术中,路由器也在路由表中查找数据包的源地址,如果源地址不正确,数据包就会显示出错或受到攻击。
参考资料
- ^ Forwarding and Control Element Separation (ForCES) Framework. [2008-08-08]. (原始内容存档于2021-02-28).
- ^ Requirements for IPv4 Routers (页面存档备份,存于互联网档案馆),F. Baker, RFC 1812, June 1995
- ^ Ingress Filtering for Multihomed Networks,RFC 3704, F. Baker & P. Savola,March 2004