本篇将会向读者介绍路由的基本概念。
前言
在一个典型的数据通信网络中,往往存在多个不同的IP网段,数据在不同的IP网段之间交互是需要借助三层设备的,这些设备具备路由能力,能够实现数据的跨网段转发。 路由是数据通信网络中最基本的要素。路由信息是指导报文转发的路径信息,路由过程就是报文转发的过程。
数据从初始位置到终点位置经过的路径称为路由
路由器是依据路由转发报文到目的网段的网络设备
路由表是由路由器维护,保存路由信息
路由信息介绍
路由中包含以下信息:
目的网络:标识目的
网段 掩码:与目的地址共同标识一个网段
出接口:数据包被路由后离开本路由器的接口
下一跳:路由器转发到达目的网段的数据包所使用的下一跳地址 这些信息标识了目的网段、明确了转发IP报文的路径。
路由表
路由器通过各种方式发现路由 路由器选择最优的路由条目放入路由表中 路由表指导设备对IP报文的转发 路由器通过对路由表的管理实现对路径信息的管理。
路由信息获取方式
路由器依据路由表进行路由转发,为实现路由转发,路由器需要发现路由,以下为常见的路由获取方式。
1.直连路由
直连路由指向本地直连网络的路由,由设备自动生成。
直连路由转发的数据包的目的IP和路由器接口IP在同一网段中。
其中目的网络和下一跳也就是路由器接口ip为同一网段。
直连路由出现在路由表中的前提是该接口的物理状态、协议状态都为UP。
查看IP路由表
在eNSP系统中的路由器命令行中操作为
display ip routing-table
Destination/Mask:表示此路由的目的网络地址与网络掩码。将目的地址和子网掩码“逻辑与”后可得到目的主机或路由器所在网段的地址。例如:目的地址为1.1.1.1,掩码为255.255.255.0的主机或路由器所在网段的地址为1.1.1.0。
Proto(Protocol):该路由的协议类型,也即路由器是通过什么协议获知该路由的。
Pre(Preference):表示此路由的路由协议优先级。针对同一目的地,可能存在不同下一跳、出接口等多条路由,这些不同的路由可能是由不同的路由协议发现的,也可以是手工配置的静态路由。优先级最高(数值最小)者将成为当前的最优路由。
Cost:路由开销。当到达同一目的地的多条路由具有相同的路由优先级时,路由开销最小的将成为当前的最优路由。
NextHop:表示对于本路由器而言,到达该路由指向的目的网络的下一跳地址。该字段指明了数据转发的下一个设备。
Interface:表示此路由的出接口。指明数据将从本路由器的哪个接口转发出去。
路由优先级
当路由器从多种不同的途径获知到达同一个目的网段的路由(这些路由的目的网络地址及网络掩码均相同)时,路由器会比较这些路由的优先级,优选优先级值最小的路由。
路由来源的优先级值(Preference)越小代表加入路由表的优先级越高。
拥有最高优先级的路由将被添加进路由表。
度量值
当路由器通过某种路由协议发现了多条到达同一个目的网络的路由时(拥有相同的路由优先级),度量值将作为路由优选的依据之一。
路由度量值表示到达这条路由所指目的地址的代价。
一些常用的度量值有:跳数、带宽、时延、代价、负载、可靠性等。
度量值数值越小越优先,度量值最小路由将会被添加到路由表中。
度量值很多时候被称为开销(Cost)。
两条路由拥有不同的度量值,下一跳为30.1.1.2的OSPF的路由条目拥有更小的度量值,因此被加入到路由表中。
路由最长匹配原则
路由最长匹配原则(Longest Prefix Match Rule)是路由器或三层交换机在转发 IP 数据包时,用来从路由表中选择最佳路由条目的核心规则。
“最长”指的是路由条目的子网掩码(或前缀长度)最长。
“匹配”指的是目标 IP 地址与路由条目的网络地址在掩码定义的范围内一致。
当目标 IP 地址同时匹配路由表中多个路由条目时,路由器会选择其中子网掩码最长(即最具体、最精确)的那条路由进行转发。
类比
江苏省-南京市 较大范围相当于网络地址范围大,掩码短,如/16。
江苏省-南京市-江宁区-淳化街道 为一个更小的范围相当于网络地址范围小,掩码长,如/24。
现在有一个包裹要寄到江苏省南京市江宁区淳化街道赏桂苑(目标IP地址),前者和后者相比显然是后者更精确更直接。
在送快递(数据包)时,系统总是优先选择能送到最精确门牌号(最长匹配路由)的那个配送点(下一跳),如果实在找不到具体门牌号,才选择送到小区门口(默认路由)。
路由转发流程
在典型的IP路由转发过程中:
-
源IP地址和目的IP地址保持不变:
-
源IP地址标识了通信的原始发起者。
-
目的IP地址标识了通信的最终目标。
-
这两个IP地址定义了端到端的逻辑连接。它们在数据包从源主机穿越网络到达目的主机的整个过程中都保持不变。路由器根据目的IP地址来决定如何转发数据包。
-
-
源MAC地址和目的MAC地址在每一跳(每个路由器之间)都会改变:
-
MAC地址用于在同一个物理网络(或链路)上进行本地交付。
-
当数据包从一个路由器发送到下一个路由器(或从主机发送到第一跳路由器,或从最后一跳路由器发送到目的主机)时,它需要被封装在一个新的数据链路层帧(如以太网帧)中。
-
在这个新的帧里:
-
源MAC地址 被设置为发送接口的MAC地址(即当前转发设备接口的MAC地址)。
-
目的MAC地址 被设置为下一跳设备接收接口的MAC地址(即下一跳路由器接口的MAC地址,或者最终目的主机的MAC地址,如果它在同一个子网内的话)。
-
-
路由器是通过ARP协议(在IPv4中)或邻居发现协议(在IPv6中)来查找下一跳IP地址对应的MAC地址的。
-
为什么这样设计?
-
IP地址(网络层): 提供全局的、逻辑的寻址,用于标识网络的起点和终点。保持不变确保了数据包能到达最终目标。
-
MAC地址(数据链路层): 提供局部的、物理的寻址,用于在特定的物理网络上(如一个以太网段)将数据帧直接传递给下一个设备(下一跳路由器或同一网段内的最终主机)。它在每一跳改变,是因为每个物理网络可能有不同的设备和技术,需要不同的物理地址来寻址下一跳。
类比:
想象寄一封国际信件:
-
源地址(发件人地址) 和 目的地址(收件人地址) 写在信封上,在整个运输过程中保持不变。这就像IP地址。
-
信件需要经过多个邮局(路由器)。当信件从一个邮局运送到下一个邮局时,它会被装入新的邮袋或贴上新的运输标签。每个邮袋/标签上的“发件邮局”和“收件邮局”地址在每一段运输旅程中都会改变。这就像每一跳上改变的源MAC地址和目的MAC地址,它们只负责当前这一段本地运输。
总结
当路由器从多种不同的途径获知到达同一个目的网段的路由(这些路由的目的网络地址及网络掩码均相同)时,会选择路由优先级值最小的路由;如果这些路由学习自相同的路由协议,则优选度量值最优的。总之,最优的路由加入路由表。
当路由器收到一个数据包时,会在自己的路由表中查询数据包的目的IP地址。如果能够找到匹配的路由表项,则依据表项所指示的出接口及下一跳来转发数据;如果没有匹配的表项,则丢弃该数据包。
路由器的行为是逐跳的,数据包从源到目的地沿路径每个路由器都必须有关于目标网段的路由,否则就会造成丢包。
数据通信往往是双向的,因此要关注流量的往返(往返路由)。