浅谈-动态路由之OSPF的理解
路由
在网络中,路由相当于就是一张地图,让路由器知道这个对应的IP数据包应该往哪端口、网段走;而这个“地图”我们称之为路由表,不同的目的IP路由表的下一个跳也不同,其生成方式有又有多种:
- 静态路由:网络管理员手动定义的路由表条路
- 默认路由:特殊的静态路由,路由表中没有的可以统一定义往这一路走。
- 动态路由:通过路由协议来自动生成路由表条目,其中动态路由又有很多种,通过自治系统(AS)来划分
- IGP(内部网关协议)RIP、OSPF、IS-IS、EIGRP
- EGP(外部网关协议)BGP
| 协议名 | 协议算法 | 备注 |
|---|---|---|
| RIP(路由信息协议) | 距离矢量协议(DV) | |
| OSPF(开放式最短路径优先) | 链路状态协议(LS) | 可以用在大型的企业核心网中 |
| IS-IS(中间系统到中间系统) | 链路状态协议(LS) | 这个协议我用比较少,和OSPF类似 |
| EIGRP(增强内部网关路由协议) | 链路状态+距离矢量协议(LS+DV) | 思科私有协议 |
| BGP(边界网关协议) | 距离矢量协议(DV) | 用在AS之间的路由协议,结合MPLS技术,实现不同AS内路由协议不同也可正常通信 |
路由协议算法
路由协议算法一般是两种,距离矢量协议和链路状态协议。
距离矢量协议
距离矢量路由协议算法,定期(比如RIP是30s)获取相邻路由器的路由表条目,对开销更低或者新的条目进行开销增加的操作,更新在自己的路由表条目。
- 特点:开销小、路由器只知道邻居路由器的情况可能有不是最优的路由决策、收敛较慢;
链路状态协议
链路状态协议算法,获取最多使用Dijkstra算法,求出最短路径。
- 特点:开销大、收敛快
OSPF协议(协议号89)
OSPF是我们最常用的动态路由协议。回归到我们动态路由的目的:
让路由器能够自动地建立自己的路由表,并且能够根据实际情况的变化适时地进行调整。
OSPF基本思想:
每个路由器将已知的链路状态信息通告邻居,收敛后,每个路由器对全网的链路状态有相同的路由认识,也就是全部拓扑。单台路由器根据全部拓扑,使用Dijkstra计算路由。
LSA和LSDB
| 名词 | 注解 |
|---|---|
| LSA(链路状态通告) | LSA含有路由器链路状态的信息(比如路由器编号,直连网段,开销等),一台路由器对于一条LSA |
| LSDB(链路状态数据库) | 存在每台路由器中,由多条LSA组成,实现区域内部可以达到信息同步 |

图1.LSA和LSDB
DB和BDR
- DR指定路由器(Designated Router),负责建立邻接和LSA的同步工作
- BDR备份指定路由器(Back-up Designated Router)
DR/BDR由于端口的优先级来进行选举,接口的DR优先级越大越优先
DR和BDR会与其他所有路由器形成邻接关系并交换链路状态信息,其他路由器之间不直接交换链路状态信息
组播地址传递
| 组播IP | 功能 |
|---|---|
| 224.0.0.5(AllSPFRouter) | DRother侦听224.0.0.5 |
| 224.0.0.6(AllDRouter) | DR/BDR侦听224.0.0.6 |
- 在点到点网络,是连接单独的一对路由器的网络、PPP(点对点)网络上的有效邻居总是可以形成邻接关系的,在这种网络上,OSPF包的目标地址使用的是224.0.0.5来发送LSA等路由选择及更新信息,这个组播地址称为AllSPFRouters。
- 在广播型网络,比如以太网,Token Ring和FDDI,这样的网络上会选举一个DR和BDR,DR/BDR的发送的OSPF包的目标地址为224.0.0.5,运载这些OSPF包的帧的目标MAC地址为0100.5E00.0005;而除了DR/BDR以外的OSPF包的目标地址为224.0.0.6,这个地址叫AllDRouters。
工作过程
- 发现邻居(A、B先相互发送Hello报文)
- 建立邻接关系(网络中选取DR和BDR,网络内所有的路由器只与DR和BDR建立邻接关系)
- 传递链路状态信息LSA(收敛以后区域内所有路由器具有相同的LSDB)
- 触发更新或定时(30min)更新
- 增量更新(只向邻居发送需要LSA)
- 计算最优路由(Dijkstra算法)
- 使用LSDB内的LSA,对应的生产加权的有向图,每台路由器自动计算自己最优的路径。
图2.计算最优路由
Area 区域划分
- 使用划分的区域的方式,将大区域划分为若干个小区域。每个区域内只需要维护本区域内的LSDB,同时可以减少LSA泛洪范围。
- 区域ID可以使用点32位点分十进制命名,也可以直接使用一个十进制数。area 0=area 0.0.0.0
所有的区域以星型结构的方式与area0(骨干区域)直接连接。
- 边界的路由器称之为ABR,可能端口1是area0端口2是area1。
五种报文
| 报文类型 | 功能 |
|---|---|
| Hello | 发现和维护邻居关系 |
| Database Description | 交互链路状态数据库摘要 |
| Link State Request | 请求特定的链路状态信息 |
| Link State Update | 发送详细的链路状态信息 |
| Link State Ack | 发送确认报文 |
浅谈-动态路由之OSPF的理解的更多相关文章
- [原创]浅谈在创业公司对PMF的理解
[原创]浅谈在创业公司对PMF的理解 在创业时,大多数人都常谈一个词叫"MVP“,但PMF谈的比较少,PMF在创业公司尤为重要,以下谈谈个人一些看法. 1.什么是PMF? 创业公司:一种是找 ...
- [原创]浅谈在创业公司对MVP的理解
[原创]浅谈在创业公司对MVP的理解 目前自已所处的公司类似一个创业平台,我们内部会不断的去孵化不同方向的产品,产品经理经常谈到的一个词就是MVP,所以有必需要去了解下什么是MVP? 1 什么是MVP ...
- CISCO 动态路由(OSPF)
OSPF(开放式最短路径优先):是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由.是对链路 ...
- 【 浅谈Linux路由机制 】
以下均为个人实验验证结果,如有问题,恳请指正. 现在服务器一般都有四张网卡,给了我们更多网络模型的选择.为了业务的需求,有时我们需要如下网络架构 系统:centos 7.2 x64 两张网卡不在同一个 ...
- 浅谈对java中锁的理解
在并发编程中,经常遇到多个线程访问同一个 共享资源 ,这时候作为开发者必须考虑如何维护数据一致性,在java中synchronized关键字被常用于维护数据一致性.synchronized机制是给共享 ...
- 浅谈EM算法的两个理解角度
http://blog.csdn.net/xmu_jupiter/article/details/50936177 最近在写毕业论文,由于EM算法在我的研究方向中经常用到,所以把相关的资料又拿出来看了 ...
- 浅谈vue路由原理
Vue的路由实现:hash模式 和 history模式 hash模式:在浏览器中符号“#”,#以及#后面的字符称之为hash,用window.location.hash读取: 特点:hash虽然在UR ...
- 干货,阿里P8浅谈对java线程池的理解(面试必备)
线程池的概念 线程池由任务队列和工作线程组成,它可以重用线程来避免线程创建的开销,在任务过多时通过排队避免创建过多线程来减少系统资源消耗和竞争,确保任务有序完成:ThreadPoolExecutor ...
- 浅谈对ST表的一些理解
今天打了人生第一道ST表题(其实只是ST表跑得最快); ST表是一种用来解决RMQ问题的利器... 大体操作有两步: 第一部分nlogn预处理 第二部分O(1)询问 预处理就是运用倍增+区间动规 ST ...
随机推荐
- HtmlAgilityPack中使用xpath获取属性值
HtmlAgilityPack介绍 HtmlAgilityPack是一个专门用来解析Html的库,它可以使用xml的方式来解析html. 有人说了,html本身不就是xml?是的,html就是xml, ...
- ML.NET相关资源整理
在人工智能领域,无论是机器学习,还是深度学习等,Python编程语言都是绝对的主流,尽管底层都是C++实现的,似乎人工智能和C#/F#编程语言没什么关系.在人工智能的工程实现,通常都是将Pytho ...
- qbxt数学五一Day4
目录 1. 随机试验 2. 概率 1. 平凡 2. 条件概率 3. 期望 习题 1 2 3 4 1. 随机试验 定义: 不能预先确知结果 试验之前可以预测所有可能结果或范围 可以在相同条件下重复实验 ...
- linux学习随笔
date +%Y-%m-%d\ %H:%M:%S cal 10 2009 yum install bc //计算器 bc 安装thefuck yum install gcc gcc++ python ...
- List的同步类比较
TL;NRs CopyOnWriteArrayList类在多线程顺序读取上有很大的优势,但在随机读取上反而有较大的劣势,且在写入方面性能极差. Vector类在顺序读取方面性能较差,但在随机读取方面有 ...
- Linux 02 基本命令
参考源 https://www.bilibili.com/video/BV187411y7hF?spm_id_from=333.999.0.0 版本 本文章基于 CentOS 7.6 工具 清屏 cl ...
- Java精进-20分钟学会mybatis使用
文字分享 希望现在的你无论有明确具体的目标还是没有,都能重视自己的需求和目标,并且常常回顾,或许可以找一个你习惯的方式写出来,挂在哪里,电脑或日记本都好.当你疲惫或迷茫的时候拿出来看一下,这在情怀领域 ...
- java数组---概念
1.数组的定义 数组是相同类型数据的有序集合.数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成.其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们. 2.数组的建 ...
- Java开发学习(二十九)----Maven依赖传递、可选依赖、排除依赖解析
现在的项目一般是拆分成一个个独立的模块,当在其他项目中想要使用独立出来的这些模块,只需要在其pom.xml使用<dependency>标签来进行jar包的引入即可. <depende ...
- 富莱尔ERP
微型版本 按年付费模式 980包含5个用户,后续每增加一个用户加298元. 适合创业型企业,想尝试用下ERP软件解决打送货单问题,客户自动生成账单,自动统计业务员每月业绩功能. 试用账号:wxadmi ...