拒绝八股文!这篇图解动态路由分分钟爱了
你好,这里是网络技术联盟站。
昨天给大家详细介绍了静态路由,以及思科、华为、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 等协议。
-
额外资源:静态路由不需要任何额外的资源;动态路由需要额外的资源,如内存、带宽等。
总结
在动态路由中,路由条目是由路由算法自动生成的,路由表会定期更新,因此,如果发生任何变化,新的路由表将根据它们形成。
本文瑞哥主要介绍了:
-
什么是动态路由?
-
为啥要选择动态路由?
-
动态路由的优点
-
动态路由的类型
-
距离矢量路由
-
链路状态路由
-
混合路由
-
路径矢量
-
动态路由的工作原理
-
度量值与管理距离
-
度量值
-
管理距离
-
动态路由和静态路由的比较
从下一节开始,将带大家一一了解动态路由协议。
朋友们,本节涉及的动态路由,你明白了吗?
- 说了半天跨平台,今儿咱就来跨跨!(完结篇)——Kubernetes 上手实践
- 我认为前端的职责可能需要重新划分
- 使用 External Secrets Operator 管理 Kubernetes 的 Secret
- Android 应用安全机制实现方案探究
- C 中的四种智能指针
- MySQL 存储引擎
- 为什么说 DevOps 治理是实现快速开发的关键
- Observability 之深度采样 Sampling 场景和落地案例(下)
- VUCA 时代,CTO 如何洞察市场先机,成就业务?|华为云联创营 CTO 领航班第五期开启
- IIR 数字滤波器设计(数字信号处理)
- SAP ABAP 里存在 Java List 这种集合工具类么?CL_OBJECT_COLLECTION 了解一下
- 用 manim 写一个排序算法动画
- 【精通内核】计算机程序的本质、内存组成与 ELF 格式
- Kubernetes 之父:他们现在在哪里?
- 将 50 万个文件放在一个 Git 存储库中,我们做了这些
- 数据治理(四):数据仓库数据质量管理
- 直接上瘾!百万人都在学的 Docker
- 开源一夏 | 使用 JavaScript 和 CSS 做一个图片转 PDF 的转换器
- 梦回战国,领略两千多年前公孙龙如何将面向对象运用得炉火纯青
- 对话钉钉 CTO:从低代码到酷应用,To B、To C 技术大融合的必然趋势