前言

在一个典型的数据通信网络中,往往存在多个不同的IP网段,数据在不同的IP网段之间交互是需要借助三层设备的,路由是实现数据的跨网段转发最基本的要素

本篇笔记包含路由器的基本工作原理,路由器如何选择最优路由的方法,路由的基本概念,并介绍直连路由、静态路由的基本概念,介绍动态路由协议的优势和它的分类,OSPF的基本概念和适用的组网场景、OSPF协议工作原理等相关知识。


路由

我们知道,路由功能位于OSI模型中的第三层——网络层上啊,它帮助网络中数据找到目的地。路由(route)是指导数据包转发的路径信息,通过路由可以确认转发IP报文的路径。

互联网非常复杂,大多数情况下主机之间的通信需要进过很多层路由转发,而路由器(router)是能够将数据包转发到正确的目的地,并在转发过程中选择最佳路径的设备。路由设备维护着一张路由表,保存着路由信息,它被称为路由表(Routing Tables)。

路由器想象成一个空中交通指挥员,把数据包想象成飞往不同机场(或网络)的飞机。就像每架飞机都有一个唯一的目的地并遵循唯一的路线一样,每个数据包都需要被尽可能高效地引导到其目的地。与空中交通指挥员员确保飞机到达目的地而不迷路或沿途遭受重大干扰一样,路由器帮助引导数据包到达其目标 IP 地址。

路由中包含以下信息,这些信息标识了目的网段、明确了转发IP报文的路径:

  • 目的网络(Destination address):标识目的网段
  • 掩码(Netmask):与目的地址共同标识一个网段
  • 网关/下一跳(Gateway):路由器转发到达目的网段的数据包所使用的下一跳地址
  • 接口(Interface):数据包被路由后离开本路由器的接口
  • 权重(Metric):度量是到达目标网络所需经过的跳数或路由器数量

例如:

路由器会选择最优的路由条目放入路由表中,路由器通过对路由表的管理实现对路径信息的管理。路由器需要发现路由,可以通过三种方式:直连路由、静态路由和动态路由。


直连路由

直连路由(Direct routing)指向本地直连网络的路由,由设备自动生成。使用直连路由进行路由转发时,目的IP和路由器接口IP在一个网段之中。当路由器为路由转发的最后一跳路由器时,IP报文匹配直连路由,路由器转发IP报文到目的主机。

此时20.1.1.0是目的IP地址,它已经是路由转发的最后一跳路由器直连的位置。直连路由在路由表中显示的协议为 Direct ,在所有路由协议中优先级是最优的。


静态路由

静态路由(Static routing)由网络管理员手动配置,配置方便,对系统要求低,适用于拓扑结构简单并且稳定的小型网络。除非网络管理员手动更改或修改路由表,否则它不会更改路由表。静态路由不使用复杂的路由算法,并且比动态路由提供更高或更高的安全性。

当报文没有在路由表中找到匹配的具体路由表项时使用默认路由(Default routing)。如果报文的目的地址不能与路由表的任何目的地址相匹配,那么该报文将选取缺省路由进行转发。它表示为:0.0.0.0/0

默认路由一般用于企业网络出口,配置一条缺省路由让出口设备能够转发前往Internet上任意地址的IP报文。


动态路由

动态路由(Dynamic routing)是路由表在路由器运行时根据现有网络条件动态创建和更新的的路由,可以有效减少管理人员工作量,更适用于大规模网络。

那么动态路由是使用什么策略进行动态选择的呢,我们把那些策略称为动态路由协议(Dynamic routing protocol)。根据工作范围的不同,动态路由协议可分为两类:

  1. IGP(Interior Gateway Protocols,内部网关协议):RIP, OSPF, IS-IS等。
  2. EGP(Exterior Gateway Protocols,外部网关协议):BGP

IGP被用于在AS(Autonomous System,自治系统)内部实现路由信息的交互,而EGP则被用于在AS之间实现路由信息的交互。AS是由一个单一的机构或组织所管理的一系列IP网络及其设备所构成的集合,例如中国电信的骨干网为AS4134。

而IGP中又可以分为距离矢量路由协议(Distance Vector Routing Protocols)和链路状态路由协议(Link-State Routing Protocols)。

距离矢量路由协议

距离矢量路由协议指的是基于距离矢量的路由协议,RIP是最具代表性的距离矢量路由协议。

每一台运行距离矢量路由协议的路由器都会周期性地将自己的路由表通告出去,其直连的路由器会收到这些路由信息,学习前者通告的路由并更新自己的路由表后,它也会向自己直连的路由器通告其路由表,最终网络中的每台路由器都能获知到达各个网段的路由,这个过程被称为路由的泛洪(Flooding)过程。

运行距离矢量路由协议的路由器周期性的泛洪自己的路由表通过路由的交互,每台路由器都从相邻的路由器学习到路由,并且加载进自己的路由表中。

对于网络中的所有路由器而言,路由器并不清楚网络的拓扑,只是简单的知道要去往某个目的方向在哪里,距离有多远。这即是距离矢量算法的本质。

链路状态路由协议

与距离矢量路由协议不同,链路状态路由协议通告的的是链路状态而不是路由表。运行链路状态路由协议的路由器之间首先会建立一个协议的邻居关系,然后彼此之间开始交互LSA(Link State Advertisement,链路状态通告)。

LSA描述了路由器接口的状态信息,例如接口的开销、连接的对象等。

每台路由器都会产生LSAs,路由器将接收到的LSAs放入自己的LSDB(Link State DataBase,链路状态数据库)。路由器通过LSDB,掌握了全网的拓扑。LSDB汇总了网络中路由器对于自己接口的描述,以及包含全网拓扑的描述。

每台路由器基于LSDB,使用SPF(Shortest Path First,最短路径优先)算法进行计算。每台路由器都计算出一棵以自己为根的、无环的、拥有最短路径的“树”。有了这棵“树”,路由器就已经知道了到达网络各个角落的优选路径。

最后,路由器将计算出来的优选路径,加载进自己的路由表(Routing Table)。

整个过程如下:

这样的过程我们称为开放式最短路径优先协议(Open Shortest Path First, OSPF)。

OSPF Area用于标识一个OSPF的区域。区域是从逻辑上将设备划分为不同的组,每个组用区域号(Area ID)来标识。

OSPF域(Domain)是一系列使用相同策略的连续OSPF网络设备所构成的网络。OSPF路由器在同一个区域(Area)内网络中泛洪LSA。为了确保每台路由器都拥有对网络拓扑的一致认知,LSDB需要在区域内进行同步。OSPF域划分成多个区域,可以使OSPF支撑更大规模组网。

OSPF路由器根据其位置或功能不同,有这样几种类型:

  • 区域内路由器(Internal Router)
  • 区域边界路由器ABR(Area Border Router)
  • 骨干路由器(Backbone Router)
  • 自治系统边界路由器ASBR(AS Boundary Router)

同时,OSPF协议中每个路由器都有Router-ID(Router Identifier,路由器标识符),用于在一个OSPF域中唯一地标识一台路由器。

OSPF使用Cost(开销)作为路由的度量值。每一个激活了OSPF的接口都会维护一个接口Cost值,缺省时接口Cost值 = 100 Mbit/s / 接口带宽。其中100 Mbit/s为OSPF指定的缺省参考值,该值是可配置的。

一条OSPF路由的Cost值可以理解为是从目的网段到本路由器沿途所有入接口的Cost值累加。


路由表

当路由器从多种不同的途径获知到达同一个目的网段的路由(这些路由的目的网络地址及网络掩码均相同)时,会选择路由优先级值最小的路由;如果这些路由学习自相同的路由协议,则优选度量值最优的。

常见路由协议的优先值有默认的情况:

路由来源 路由类型 默认优先级
直连 直连路由 0
静态 静态路由 60
动态 OSPF内部路由 10
OSPF外部路由 150

路由度量值表示到达这条路由所指目的地址的代价。一些常用的度量值有:跳数、带宽、时延、代价、负载、可靠性等。度量值数值越小越优先,度量值最小路由将会被添加到路由表中。

当路由器收到一个数据包时,会在自己的路由表中查询数据包的目的IP地址。如果能够找到匹配的路由表项,则依据表项所指示的出接口及下一跳来转发数据;如果没有匹配的表项,则丢弃该数据包。


后记

本篇笔记包含了了路由器的基本工作原理,路由器如何选择最优路由的方法,路由的基本概念,并介绍直连路由、静态路由的基本概念,介绍动态路由协议的优势和它的分类,OSPF的基本概念OSPF协议工作原理等相关知识。

这里的一切都有始有终,却能容纳所有的不期而遇和久别重逢。
最后更新于 2023-10-05