概述
路由器(Router)是互联网技术中的关键设备,工作在 OSI(Open Systems Interconnection) 参考模型的第三层(网络层),主要作用之一就是为不同网络之间传送数据包寻找路径并进行存储转发。
路由选择涉及三个方面:
- 路由表
- 路由协议
- 转发算法
路由器依据最长路径匹配原则查找路由表,确定相应的转发路径,并遵循一定的转发算法对数据包进行转发。路由表中的路由信息需要手工配置或由路由协议动态维护,路由器将基于管理距离( Administrative Distance, AD)和路由度量(metric)选出进入路由表的最佳路径。
路由与路由表
用于指导数据包转发所需要的路径信息称为路由。路由信息记载了通往每个结点或网络的路径,并以记录的形式出现在路由器的路由表中。
路由器必须依靠路由表中的路由信息进程路径选择。在 Internet中,路由器为了能够正确转发 IP数据包,会根据数据包中的目的 IP 地址查找路由表,为它选择一条到达目的地的最佳路径,然后从相应端口将其转发给下一个路由器,重复此过程直到数据包来到与目的主机所直连的路由器,并由该路由器交付给目的主机。
路由表相当于一个小型数据库,实现一组目的地址到下一条路由 IP 地址的映射,由于制造厂商及规格的不同会导致路由信息的记录格式有所差异,但至少要有如下信息项:
目的地址(Destination):标识 IP 数据包要到达的目的主机或目的网络的 IP 地址。
子网掩码(Mask):与目的地址一起标识目的主机或路由器所在网段的地址。
下一条地址(Nexthop):标识 IP 数据包所经由的下一个路由器的接口地址。
输出接口(Interface):指示 IP 数据包将从该路由器哪个接口转发出去。
除了上述信息外通常还包含路由优先级、路由度量等项,用于辅助路径选择。当存在到达同一目的地的多条路由信息时,会根据这些辅助项选择一条最佳路由信息添加到路由表中用于后入的数据包转发。
// windows 查看本机路由表
route print
// Linux 查看本机路由表
route
路由的类型
根据路由表中路由的目的地不同,可以将路由划分为:
- 子网路由:目的地址为子网。
- 主机路由:目的地址为主机。
根据目的地址与下一跳路由器 IP 地址的映射情况,可以将路由分为以下几类:
- 直接路由:目的地址所在网络与本路由器直接相邻时的路由,该路由没有下一跳项。
- 间接路由:目的地址所在的网络与本路由器非直接相连时对应的路由,包含下一跳地址项,通过这个相邻路由的下一跳路由可以到达目的网络。
- 默认路由:当目的地址与上述两种路由都无法匹配时的路由,通常指向一个特定路由器的 IP 地址项,也称此路由器为默认路由器。
根据路由表中路由的来源,可将路由分为如下几种:
- 数据链路层协议发现的路由(connect):只能发现本接口所属网段的路由,即直接路由器。开销小、无需人工维护。
- 手工配置的静态路由(static):静态路由由管理员手工配置。静态路由无开销、配置命令简单,适合简单拓扑接口的网络。其问题在于,一旦发现网络故障后,静态路由不会自动修正,需要人员参与,如网络结构过大,排查较困难。
- 动态路由协议发现的路由(如 RIP、OSPF、EIGRP等):路由器根据路由协议提供的功能自动计算数据传输的最佳路径。当网络拓扑接口十分复杂时,手工配置静态路由就过于复杂且工作量大容易出错,此时可采用动态路由协议,可自动发现和修改路由,更新路由表,无需人工维护,但开销较大,配置复杂。
路由器转发 IP 数据报的过程
- 获取目的地址:获取 IP数据包的目的 IP 地址 D
- 匹配路由:基于最长前缀匹配原则寻找与 D相匹配的路由
- 检测是否是直接路由,如是直接路由则进程转发,否则进行下一步。
- 检测是否是主机路由、或间接路由,如是则向下一跳路由器转发数据包,否则进行下一步。
- 检测是否存在默认路由,如存在则向默认路由转发,否则报告网络不可达,丢弃此数据包。
最关键的在于第二步匹配路由。在获取到目的地址 D后, 将D与各条路由中的子网掩码“按位于”,看结果是否和本地路由中的网络地址相等,如果相等则匹配。
基于最长前缀匹配原则指:当存在多条相匹配的路由时,应当选择具有最长网络前缀的路由进程转发,因为网络前缀越长,网络地址越具体。
管理距离(AD)与路由度量(metric)
有时到达同一目的网络,不同的路由协议可能会发现不同的路由,即使对于同一路由协议。也可能会发现多条不同的路由。此时需要从中选出一条最佳路由并加入到路由表中,选择的方法是:
- 比较不同路由协议的管理距离,华为称“路由优先级”
- 计算各条路优的度量值,华为称“路由花费”
管理距离(Administrator Distance,AD)用来衡量来自相邻路由器上路由选择信息的可信度,是一个0~255 的整数值,0 是可信度最高的,255 意味着不会有业务量通过这个路由。不同路由协议会被指派不同的管理距离,路由协议发现的管理距离小的路由具有更高的优先级。
不同路由协议默认的管理距离表:
路由协议或类型 | Cisco路由器默认的管理距离 | 华为路由器默认的管理距离 |
---|---|---|
直连路由 | 0 | 0 |
静态路由 | 1 | 60 |
RIP | 120 | 100 |
OSPF | 110 | 10 |
OSPF 引入的外部路由 | 20 | 150 |
IGRP | 100 | - |
EIGRP | 90 | - |
未知 | 255 | 255 |
路由器的度量值(metric):表示到达这条路由所指向的目的地址的代价大小。影响因素有:
- 列表内容
- 线路延迟
- 带宽
- 线路利用率
- 跳数
- 最大传输单元
不同路由协议会选择其中的一种或者多种因素来计算度量值,因此在不同路由协议间不具有可比性,只在同一路由协议发现的多条由路由,在内部比较时其作用,度量值小的路由具有更高的优先级。
当有多条路由可以到达同一网络时:
- 首先检查管理距离。选择将管理距离低的放置在路由表中。
- 如果管理距离相同,则检查路由的度量值,选择将度量值小的路由添加到路由表中。
- 如果存在管理距离与度量值都相同的路由,此时路由协议会对使用负载均衡,将它所发送的数据包分发到每个路由上。
综上所述,路由器依据管理距离和路由度量选出最佳路由。管理距离用于在不同路由协议发现的多条路由间进行比较,度量值用于同一路由协议发现的路由间比较。
最后
以上就是安静小鸽子为你收集整理的路由选择基础的全部内容,希望文章能够帮你解决路由选择基础所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复