拒绝八股文!这篇图解动态路由分分钟爱了

语言: CN / TW / HK

你好,这里是网络技术联盟站。

昨天给大家详细介绍了静态路由,以及思科、华为、h3c、锐捷、瞻博网络等厂商静态路由的配置命令:

讲到静态路由,必须要介绍它的兄弟: 动态路由

动态路由在中大型网络、有些小型网络架构中是非常常见的,可以这么说,没有动态路由,就没有现在那么庞大的网络体系!

还是那句话,看别人的文章或者看网上普通八股文可能啰里啰嗦,在瑞哥这里全部用人话解释清楚,如果你觉得文章对你有帮助,别忘了收藏哦。

直接开始吧!

什么是动态路由?

有关路由的概念,我们在上一节静态路由中已经详细介绍了,大家可以直接去看:

动态路由的概念是相对于静态路由路由的,动态路由也称为 自适应路由 ,它根据拓扑结构的变化改变 路由表 ,动态路由使用复杂的 路由算法 ,当网络发生变化(拓扑)时,它会向路由器发送消息以确保发生变化,然后重新计算路由以发送更新的路由信息。

用人话来做个解释:你就把动态路由看做智能无人驾驶汽车,你从家去公司上班有三条路可以选择:

  • 过两个红绿灯

  • 不过红绿灯

  • 过三个红绿灯

假设三条路总里程是相同的,那么作为智能无人驾驶汽车,它会经过自己的智能算法算出哪条路最节省时间、最能带来更好的体验,所以选择的 线路二

既然是智能的,那么就能动态切换,加入这个时候线路二道路在施工,车流非常缓慢,作为智能汽车,那一定可以算出来的,这个时候就会选择 线路一

动态路由就是这么一个智能无人汽车。

路由器可以根据当前通信链路的情况,通过各种不同的路由传输数据并到达目的地,可以根据当时网络的当前场景条件为数据选择最佳路径,所以说动态路由就是一种“ 聪明路由 ”!

为啥要选择动态路由?

这个就要先聊聊动态路由的背景了。

1980 年动态路由首次用于计算机网络,第一个路由协议是 RIP,RIP 相信大家肯定不陌生了,学习动态路由的第一个协议就是 RIP,RIP 协议的第 1 版 RIPv1 于 1988 年发布。

没有动态路由的时候,都需要网络管理员手动去配置静态路由打通链路,上节我们提到,静态路由的配置完全取决于网络管理员或者网络工程师,一旦中间开个小差或者脑子一迷糊,可能就会出错,在大型网络环境中,动辄上千台、甚至上万台路由器,暂且不谈如何配置完那么庞大数量的路由器,单单你去规划路由,路由表的长度能吓死人,所以动态路由就应运而生了!

根据历史的轨迹,任何新技术的出现都是为了解决某种旧技术的痛点问题的。

既然动态路由比静态路由好,这个好到底体现在什么地方呢?

动态路由的优点

  • 减轻网络管理员的配置任务。

  • 路由表会自动更新。

  • 适用于中大型网络

  • 网络的整体维护很容易

  • 自适应网络能够立即改变路径以避免中断、系统或设备故障或路由拓扑波动

动态路由的类型

这个在上节也提到过,这里再说明一下,直接上图:

这块就不多说了,因为每种协议背后都是庞大的知识体系,瑞哥会在接下来几天的文章中,好好与大家讲解。

在上图中,我们看到了几个关键词:距离矢量、链路状态、混合、路径矢量。

这四个东东又是啥呢?

距离矢量路由

距离矢量路由使用 距离方向 两个参数来计算数据包从源转发到目的地的最佳路径。

  • 距离是源和目的地之间的路由器数量,每个路由器都将其相邻路由器视为 下一跳

  • 方向就是 数据流向

如图,这张简单的拓扑中,距离就是经过的三台路由器,方向就是数据流向方向: PC1 -> R1 -> R2 -> R3 -> PC2

距离矢量路由使用 Bellman-Ford 算法 来计算路由,从直连或邻居路由器接收路由通告,并定期更新其路由信息,更新路由信息的操作从一台路由器到另外一台路由器,直到到达目的地,它与直接相邻的路由器共享整个路由表信息。

如上图,PC1 和 PC2 通信,数据首先会到达 R1,这个 R1 通过 Bellman-Ford 算法算出来,数据下一个传输的设备应该是 R2,R2 这个时候会接收到 R1 的路由通告,更新自己的路由表,R1 也会动态的感知到,也会更新自己的路由表,R2 和 R3 之间也是同样的操作,最终实现网络通信。

距离矢量协议最典型的就是 RIP

链路状态路由

距离矢量路由依赖于相邻或者直连设备的路由信息,链路状态路由则针对的是整张拓扑的路由信息。

在链路状态路由中,数据从一台路由器到另外一台路由器,路由器本身不会改变邻居路由器的整体路由信息,而是直接复制从其邻居路由器接收到的信息,这样的话,整体链路上的每台路由器都会形成相同的信息。

这种操作有个专业术语: 泛洪

泛洪,我这边用一张图解释一下:

如图,假设路由信息已经从 R1 到达 R4 了,R4 的 g0/1 接口收到了 R1 传过来的链路状态信息,这个时候,R4 会立马将此链路状态信息从除 g0/1 接口外其他所有接口发送出去,这就是 泛洪 ,就跟洪水一样,从闸口往外流。

泛洪后,其他路由器会相应的更新自己的路由表,以达到所有路由器信息一致。

链路状态路由使用 Dijkstra 算法 ,也称为 最短路径优先 (SPF) 算法

如图,从 PC1 到 PC2,一共有三条路:

  • 链路一: PC1 -> R1 -> R4 -> R3 -> PC2

  • 链路二: PC1 -> R1 -> R4 -> R2 -> R3 -> PC2

  • 链路三: PC1 -> R1 -> R2 -> R3 -> PC2

开销:

  • 链路一: 2 + 5 = 7

  • 链路二: 2 + 1 + 5 = 8

  • 链路三: 3 + 6 = 9

最终通过 Dijkstra 算法即最短路径优先算法算出来链路一最优,走 PC1 -> R1 -> R4 -> R3 -> PC2

链路状态协议最典型的就是 OSPFIS-IS

混合路由

顾名思义,它是距离矢量协议和链路状态协议的混合体,比较典型的协议就是 EIGRP,中文术语就是 增强型内部网关路由协议

EIGRP 是一种高级距离矢量路由协议,是早期 Cisco 协议(称为 IGRP)的演进,它不发送链路状态通告,而是向邻居路由器发送传统的距离矢量路由信息。

EIGRP 是 Cisco 专有协议 ,因此网络中运行 EIGRP 的所有路由器都必须是 Cisco 路由器,但现在 EIGRP 正朝着成为开放标准协议的方向发展。

路径矢量

路径向量协议不依赖于到达给定目的地的 成本 来确定每个可用路径是否是无环路的,而是依赖于对到达目的地的 路径的分析 来确定它是否是无环路的。

路径矢量不同于距离矢量路由和链路状态路由,路由表中的每个条目都包含目标网络、下一个路由器和到达目标的路径。

路径矢量协议最典型的就是 BGP

以上就是距离矢量、链路状态、混合、路径矢量简单介绍,具体不能深入,不然一篇文章介绍不清,后面有时间可以单独拉出来进行讨论。

动态路由的工作原理

上面介绍了动态路由的基础知识部分,下面来讨论一下动态路由的工作原理,适用于每一种动态路由的协议:

  • 路由器的接口接收或者发送路有消息

  • 路由消息通过动态路由协议发送到其他路由器

  • 发消息的路由器与其他路由器共享路由消息

  • 拓扑变化时,该路由协议会成为路由器与路由器之间通信的桥梁

度量值与管理距离

度量值

假设一个路由器有多个目的地到一个网络,它如何确定到那个网络的最佳路径?

可以用 度量值 ,也就是 Metric 进行计算。

度量值你可以想象成你从南京到上海,你车里的燃油量是固定的,假设中间不给加油,选择最佳路径到达:

此时耗费的燃油量就是恒定路线的度量值。

下图是各个路由协议的度量值:

管理距离

如果我们在一台路由器上配置了多个路由协议,路由器将如何确定通往所需网络的最佳路径?

可以用 管理距离 ,也就是 AD 去计算,管理距离是路由器用来 优先选择 路由源的方式。

AD 通常是 0 到 255 之间的一个值,该值越小,路由源越好,管理距离为 255 的路由永远不会被信任。

还是以南京到上海为例:

管理距离就好比交通工具选择,那么高铁和飞机一定是非常快的(不算去机场的路上的时间)

动态路由和静态路由的比较

上节讲了静态路由,那么在本节最后呢,我们来做个两者比较:

  • 路由模式:在静态路由中,路由是用户定义的;在动态路由中,路由会根据网络的变化进行更新。

  • 路由算法:没有用于计算最短路径的复杂算法;动态路由采用复杂的算法来寻找最短的路线。

  • 安全:静态路由提供更高的安全性;动态路由提供的安全性较低。

  • 自动化:静态路由是手动的;动态路由是自动化的。

  • 适用性:静态路由用于较小的网络;动态路由用于中大型网络。

  • 协议:静态路由可以不遵循任何特定协议;动态路由遵循 BGP、RIP 和 EIGRP 等协议。

  • 额外资源:静态路由不需要任何额外的资源;动态路由需要额外的资源,如内存、带宽等。

总结

在动态路由中,路由条目是由路由算法自动生成的,路由表会定期更新,因此,如果发生任何变化,新的路由表将根据它们形成。

本文瑞哥主要介绍了:

  • 什么是动态路由?

  • 为啥要选择动态路由?

  • 动态路由的优点

  • 动态路由的类型

  • 距离矢量路由

  • 链路状态路由

  • 混合路由

  • 路径矢量

  • 动态路由的工作原理

  • 度量值与管理距离

  • 度量值

  • 管理距离

  • 动态路由和静态路由的比较

从下一节开始,将带大家一一了解动态路由协议。

朋友们,本节涉及的动态路由,你明白了吗?