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

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

昨天给大家详细介绍了静态路由,以及思科、华为、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

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

混合路由

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

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

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

路径矢量

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

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

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

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

动态路由的工作原理

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

  • 路由器的接口接收或者发送路有消息
  • 路由消息通过动态路由协议发送到其他路由器
  • 发消息的路由器与其他路由器共享路由消息
  • 拓扑变化时,该路由协议会成为路由器与路由器之间通信的桥梁

度量值与管理距离

度量值

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

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

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

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

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

管理距离

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

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

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

还是以南京到上海为例:

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

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

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

  • 路由模式:在静态路由中,路由是用户定义的;在动态路由中,路由会根据网络的变化进行更新。
  • 路由算法:没有用于计算最短路径的复杂算法;动态路由采用复杂的算法来寻找最短的路线。
  • 安全:静态路由提供更高的安全性;动态路由提供的安全性较低。
  • 自动化:静态路由是手动的;动态路由是自动化的。
  • 适用性:静态路由用于较小的网络;动态路由用于中大型网络。
  • 协议:静态路由可以不遵循任何特定协议;动态路由遵循 BGP、RIP 和 EIGRP 等协议。
  • 额外资源:静态路由不需要任何额外的资源;动态路由需要额外的资源,如内存、带宽等。

总结

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

本文瑞哥主要介绍了:

  • 什么是动态路由?
  • 为啥要选择动态路由?
  • 动态路由的优点
  • 动态路由的类型
  • 距离矢量路由
  • 链路状态路由
  • 混合路由
  • 路径矢量
  • 动态路由的工作原理
  • 度量值与管理距离
  • 度量值
  • 管理距离
  • 动态路由和静态路由的比较

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

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

  • 发表于:
  • 本文为 InfoQ 中文站特供稿件
  • 首发地址https://www.infoq.cn/article/57dff4d28d7b9fe863db93cd0
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券