路由器根据路由表转发数据包,路由表项可通过手动配置和动态路由协议生成。

 静态路由比动态路由使用更少的带宽,并且不占用CPU资源来计算和分析路由更新。当网络结构比较简单时,只需配置静态路由就可以使网络正常工作。但是当网络发生故障或者拓扑发生变化后,静态路由不会自动更新,必须手动重新配置。 相比较于静态路由,动态路由协议具有更强的可扩展性,具备更强的应变能力。

OSPF(Open Shortest Path First,开放式最短路径优先)具有扩展性强,收敛速度快等特点,作为优秀的内部网关协议被广泛使用。本课程将重点讲解OSPF路由计算,关于OSPF建立过程,请参考数通hcia相关内容。

 

不同的路由协议根据其不同的工作特点可以进行一些分类:

image.png

1.距离矢量路由协议

  运行距离矢量路由协议的路由器周期性地泛洪自己的路由表。通过路由的交互,每台路由器都从相邻的路由器学习到路由,并且加载进自己的路由表中,然后再通告给其他相邻路由器。 对于网络中的所有路由器而言,路由器并不清楚网络的拓扑,只是简单的知道要去往某个目的网段方向在哪里,开销有多大。如下图所示:

image.png

在AR1-4设备上运行了RIP协议 ,此处以AR2作为案例说明,具体配置请参考下图:

image.png

运行距离矢量路由协议的设备会周期性的泛洪自己的路由表。通过在AR2的G0/0/2口抓包可以看到如下图的数据

image.png

AR2将路由直接发送给自己的邻居,每台路由器通过相邻的邻居学习到路由并加载到自己的路由表,然后在通告给其他邻居。此处好比是AR2告诉AR1和AR3说:“我有到达10.0.2.0和10.0.123.0的路由,如果你们有到这两个地方的数据,那么请转发给我。"当AR1学习到这两条路由后也会通告给AR4 "我有到达10.0.2.0和10.0.123.0的路由,如果你有要到这两个地方的数据,那么请转发给我。“   注意:此次只说了有到达这两个目的地的路由,并没有说怎么去到这两个目的地。AR4并不知道怎么去到这个两个目的地,只知道如果要去这两个目的地,那么就去找AR1,所以我们通常也把距离矢量路由称为基于传闻的路由协议。并且这个谣言只能传递15跳设备,15跳之后就默认不可达了。

 

2.链路状态路由协议

链路状态路由协议通告的的是链路状态而不是路由信息。 运行链路状态路由协议的路由器之间首先会建立邻居关系,然后彼此之间开始交互LSA(Link State Advertisement,链路状态通告)

关于OSPF建立的过程,此处就不做介绍了。我们将以下图做为说明简单的了解什么是链路状态路由协议。

image.png

如上图所示,在设备之间运行OSPF后,设备之间建立邻居关系后发送的就不在是路由信息了,而是链路状态信息(简单理解就是描述设备上的接口信息,包括接口的开销、与邻居路由器之间的关系等)

此处以AR1为例,在AR1设备的G0/0/0口抓包可以看到,AR1设备通过updata消息将自己的两个接口信息进行了描述(G0/0/0口和loopback接口)

image.png

image.png

每台路由器都会产生LSA,路由器将接收到的LSA放入自己的LSDB(Link State DataBase,链路状态数据库)。路由器通过对LSDB中所存储的LSA进行解析,进而了解全网拓扑。使用SPF(Shortest Path First,最短路径优先)算法进行计算。每台路由器都计算出一棵以自己为根的、无环的、拥有最短路径的“树”。有了这棵“树”,路由器就已经知道了到达所有网段的优选路径。注意:如果各位有仔细观察上图AR1发送的两个接口的描述信息,那么你就会发现,此处描述两个接口信息的LSA-Type不一样了。此处与OSPF多区域划分有关。另外还会有其他类型的LSA-Type,不同的LSA-Type也会起到不同的作用,后面我们将进行详细的讲解。