1 路由定义
路由是网络中将数据包从源地址转发到目的地址的过程。它是一种逐跳(Hop-By-Hop)的、基于路径选择的数据转发过程。
路由与交换的区别:
- 路由是端到端的通信,数据包可以从一个网络的任意一端发送到另一个网络的任意一端,是全局的概念;
- 交换是点到点(设备到设备)的通信,是在同一个网络内的不同设备之间传输数据帧的过程,是局部的概念。
- 交换使用的MAC地址只具有本地意义,而路由使用的IP地址具有全球唯一性(私有地址除外)。
2 路由类别
- 按路由决策方式分:
- 静态路由:由网络管理人员手动配置的路由条目;配置简单但不够灵活,不能自适应网络变化;
- 直连路由:本地直连网络的路由,由设备自动生成;
- 动态路由:运行特定路由协议,自动学习并维护路由表;能够自适应网络变化,但会消耗一定资源(设备资源+带宽资源);
- 按路由协议类型分:
- 内部网关协议:IGP,Interior Gateway Protocol,用于同一自治系统AS(Autonomous System)内的路由选择,常见的IGP协议有RIP、OSPF等;
- 外部网关协议:EGP,External Gateway Protocol,用于不同自治系统AS之间的路由选择,典型的EGP协议有BGP。
- 按路由算法分:
- 距离向量算法:基于跳数或者其他度量标准来决定最优路径,如RIP协议;
- 链路状态算法:每个路由器都拥有整个网络的完整拓扑图,并据此计算出到各个目标网络的最佳路径,如OSPF协议;
- 路径向量算法:主要用于防止路由环路,如BGP协议。
- 按应用范围分:
- 单播路由:负责将数据包从一个单一的源地址转发到一个唯一的目的地址;
- 组播路由:将数据包从一个源地址转发到多个接收者(都加入了组播地址),适用于视频会议、在线直播等;
- 广播路由:在局域网内将数据包发送给所有设备,适用于发现服务或设备,如发送DHCP服务请求。
3 选路规则
当路由器收到一个需要转发的数据包时,会在路由表中查找匹配目的ip地址的路由条目,而选路规则即决定了在找到多个匹配条目时,哪一条是最优的、应该被用来转发数据包。
核心规则(按优先级顺序排列):
- 最长前缀匹配(LPM,Longest Prefix Match):路由器查找路由表中网络地址部分(由子网掩码定义)与数据包目的ip地址匹配位数最多的路由条目。更长的前缀意味着更具体的网络范围,指向更精确的下一跳。前缀匹配过程: 将数据包的目的ip地址与本地路由表中每个路由条目的子网掩码进行按位逻辑与运算,得到的结果再与路由条目中的网络地址进行比较。举例: 有一个待转发的数据包目的ip为192.168.1.2,路由表中有一条路由条目为192.168.1.0/24。
1. 将目的ip地址192.168.1.2与子网掩码255.255.255.0进行逻辑与运算,得到结果192.168.1.0; 2. 将结果与路由条目网络地址192.168.1.0进行比较,发现匹配,则该路由条目被选中。
- 最低管理距离(AD,Administrative Distance):也叫路由优先级Preference,当存在多条指向同一目的网络的路由条目、且具有相同的最长前缀长度时,比较管理距离,管理距离数值越小越优先。常见路由协议的默认管理距离:
+--------------------+--------------------+ | 路由类型 | 默认协议优先级 | | 直连路由(Direct) | 0 | | OSPF | 10 | | IS-IS | 15 | | 静态路由(Static) | 60 | | IGRP | 80 | | RIP | 100 | | OSPF ASE(自治系统外部路由) | 150 | | OSPF NSSA(非完全末梢区域路由) | 150 | | IBGP | 255 | | EBGP | 255 | +--------------------+--------------------+
- 最低度量值(Metric):当存在多条来自同一种路由协议、指向同一目的网络、且具有相同最长前缀长度的路由条目时,再比较度量值,度量值数值越小越优先。度量值是路由协议内部计算出的到达目的网络路径的代价,不同协议有不同的计算方法,比如RIP以跳数(经过路由器数量)作为度量值,OSPF以开销Cost(基于接口带宽)作为度量值,EIGRP则以复合度量值(默认包含带宽、延迟,可选可靠性、负载、MTU等)作为度量值,BGP以路径属性组合(如AS_PATH长度、LOCAL_PREF、MED等)作为度量值。
- 其他高级规则(特定协议或场景):如在BGP协议中,如果上述3条规则比较结果均相同,还可以进行更多精细的属性比较。
4 匹配原则
路由匹配原则描述路由器如何在路由表中查找与数据包目的ip地址对应的路由条目的过程。
核心原则:
- 精确匹配(最长前缀匹配): 路由器将数据包目的ip地址与路由表中每个路由条目的子网掩码进行按位逻辑与运算,如果结果等于该路由条目的网络地址,则认为该条目匹配;在所有匹配的条目中,选择前缀长度最长(子网掩码最长)的那一条;
- 顺序无关(基于目的网络的查找): 路由条目在表中存储的物理顺序不影响匹配结果;
- 递归查找: 也叫路由迭代,如果匹配到的路由条目的下一跳地址不是直连接口,而是另一个ip地址时:
1. 路由器以这个下一跳ip地址作为新的目的ip地址,再次查找路由表,找到一条能够到达“下一跳路由器”的路由; 2. 上述过程可能递归多次,直到找到最终指向一个直连接口的路由条目,数据包才能被发送出去。
- 默认路由(0.0.0.0/0): 能匹配任何目的ip地址,是一个兜底的路由条目,通常指向一个默认网关。
此处含有隐藏内容,登录后即可查看!
5 路由过程
当路由器接收到一个数据包需要进行路由转发时:
- 提取目的ip地址:从数据包头部提取目的ip地址;
- 查找路由表:根据最长前缀匹配原则进行匹配;
- 处理多条最长匹配:如果有多条最长匹配路由条目,则先比较管理距离,再比较度量值;
- 确定下一跳和出接口:根据选出的最有路由条目,确定数据包的下一跳ip和出接口;
- 递归查找(如有需要):如果下一跳为非直连接口,则重复步骤“2. 查找路由表”的过程,直到找到直连出接口;
- 转发数据包:将数据包封装到以太网帧中并通过出接口转发出去。
此处含有隐藏内容,登录后即可查看!
正文完