当前位置: 首页 > news >正文

【网络协议】聊聊网络路由相关算法

如何配置路由

路由器是一台网络设备,多张网卡,当一个入口的网络包到达路由器时,会根据本地的信息库决定如何正确的转发流量,通常称为路由表

路由表主要包含如下 核心思想是根据目的 IP 地址来配置路由

  • 目的网络:要去哪
  • 出口设备:将包从那个口扔出去
  • 下一跳网关:下一个路由器的地址

ip route add 10.176.48.0/20 via 10.173.32.1 dev eth0
要去10.176.48.0/20 网络,从eth0端口出去,经过10.173.32.1。

如何配置策略路由

但是实际上可能根据不同的策略进行配置
ip rule add from 192.168.1.0/24 table 10
从网络192.168.1.0/24来,使用table10中的路由表。
虽然我们可以通过静态配置路由的方式,但是这种方式是不灵活的,所以,一般使用的是动态路由算法。

动态路由算法

动态路由算法,其实在网络中就是一个图结构,计算不同路由器之间的路径,找到最短路径。知道求最短路径常用的有两种方法,一种是 Bellman-Ford 算法,一种是 Dijkstra 算法。在计算机网络中基本也是用这两种方法计算的。

距离矢量路由算法

矢量路由其实是使用Bellman-Ford算法,本质每个路由器会存储一个路由表,一个是到目标路由器,走那条线出去,还有距离目标路由器的距离。
由此可以看出,如果一旦网络结构更新的话,那么整个网络就需要全部更新路由器信息,代价非常大。并且由于网络是不稳定的,一旦出现路由器挂掉,无法及时获取对应路由器的在线状态。

所以本算法只适用于小规模,限制了距离矢量路由的网络规模。

链路状态路由算法

链路状态路由,其实是每次启动一个路由器,都会计算周边路由器的距离,然后进行全局广播,每个路由器会构建一个完整的图,使用Dijkstra算法 找到两点之间最短的路径。

不像距离距离矢量路由协议那样,更新时发送整个路由表。链路状态路由协议只广播更新的或改变的网络拓扑,这使得更新信息更小,节省了带宽和 CPU 利用率。而且一旦一个路由器挂了,它的邻居都会广播这个消息,可以使得坏消息迅速收敛。

动态路由协议

1. 基于链路状态路由算法的 OSPF

OSPF(Open Shortest Path First,开放式最短路径优先)是基于链路状态路由协议。
内部网关协议重点是找到最短路径,在一个组织内部,路径最短往往优先。也可能会出现多个最短路径,那么就是等等价路由。
这种方式针对大流量可以进行分摊。实现高吞吐量的接入层设计。
在这里插入图片描述

2. 基于距离矢量路由算法的 BGP

小结

本篇主要简单介绍了路由相关信息,路由分为静态路由和动态路由,静态路由可以配置不同的策略,但是不够灵活,动态路由有距离矢量算法和链路状态算法,基于两种算法产生两种协议,BGP协议和OSPF协议。

http://www.lryc.cn/news/204940.html

相关文章:

  • Python 深度学习入门之CNN
  • 国产开发板上打造开源ThingsBoard工业网关--基于米尔芯驰MYD-JD9X开发板
  • 英语——语法——从句——名词性从句——笔记
  • PROSTATEx-2 上前列腺癌的 3D CNN 分类
  • npm ERR! node-sass@6.0.1 postinstall: `node scripts/build.js`
  • 3D学习论文参考-ACCURATE EYE PUPIL LOCALIZATION USING HETEROGENEOUS CNN MODELS
  • 迁移conda环境后,非root用户执行pip命令和jupyter命令报错/bad interpreter: Permission denied
  • 虚拟机使用linux常用问题(虚拟机操作系统:ubuntu 22.04LTS)
  • 编译原理-词法分析器
  • Kafka与MySQL的组合使用
  • 2018年亚太杯APMCM数学建模大赛A题老年人平衡能力的实时训练模型求解全过程文档及程序
  • 华盛顿特区选举委员会:黑客可能已侵入整个选民名册
  • kali安装nodejs、npm失败
  • 插入排序(学习笔记)
  • wps excel js编程
  • Python 类继承解释
  • Reactor反应器模式
  • alibaba.fastjson的使用(六) -- JavaBean==》Json字符串、JSONObject、JSONArray
  • uniapp 自定义导航栏
  • 查分小程序:一键查询成绩,班主任和家长的得力助手
  • Linux内核驱动开发的步骤
  • 【Java 进阶篇】HTML DOM 事件详解
  • redis 从小白到大师系列
  • vue使用.filter方法检索数组中指定时间段内的数据
  • Ubuntu 安装 npm 和 node
  • Matlab论文插图绘制模板第122期—函数折线图(fplot)
  • IK分词器如何修改支持跨版本ES
  • Spring MVC常用十大注解
  • 二、【MyBatis】 MyBatis入门与简单使用
  • 基于DF模式的协作通信技术matlab性能仿真