网络:OSPF理解
OSPF(开放最短路径优先)协议使用Dijkstra算法,常见的版本有:OSPFv2、OSPFv3等。以下主要介绍OSPFv2,OSPFv3是面向IPv6的且不兼容IPv4。
1.工作过程:
1)每台路由器学习激活的直接相连的网络。
2)每台路由器和直接相连的路由器互交,发送Hello报文,建立邻居关系。
3)每台路由器构建包含直接相连的链路状态的LSA(Link-State Advertisement,链路状态通告)。链路状态通告(LSA)中记录了所有相关的路由器,包括邻路由器的标识、链路类型、带宽等。
4)每台路由器泛洪链路状态通告(LSA)给所有的邻路由器,并且自己也在本地储存邻路由发过来的LSA,然后再将收到的LSA泛洪给自己的所有邻居,直到在同一区域中的所有路由器收到了所有的LSA。每台路由器在本地数据库中保存所有收到的LSA副本,这个数据库被称作"链路状态数据库(LSDB,Link-State Database)"
5)每台路由器基于本地的"链路状态数据库(LSDB)"执行"最短路径优先(SPF)"算法,并以本路由器为根,生成一个SPF树,基于这个SPF树计算去往每个网络的最短路径,也就得到了最终的路由表。

2.术语
链路(Link):当一个接口加入OSPF进程,就被当做是OSPF的一条链路。
链路状态(Link-State):包括接口的IP、子网、网络类型、链路花费、链路上的邻居等。
路由器ID(Router ID,简称RID):RID是一个用来标识路由器的IP地址,可以在OSPF路由进程中手工指定;如果没有指定,路由器默认选择回环接口中最高的IP作为RID;如果没有回环地址,路由器使用所有激活的物理接口中最高的IP作为RID。
邻居(Neighbor):两台或多台路由连接在一个公共的网络上;比如两台路由通过串行线路相连,或多台路由通过以太网相连。
邻接(Adjacency):邻接是两台路由器之间的关系,OSPF只与建立了邻接关系的邻居共享路由信息。
区域(Area):OSPF通过划分区域来实现分层设计,跨越两个或两个以上区域的路由被称作ABR(Area Border Router,区域边界路由)。所有的区域都和"Area 0"相连,"Area 0"被称作骨干区域,骨干区域路由器具有整个自制系统中所有路由条目,LSA的扩散仅限制在区域内,通过划分多个区域可以减小LSA扩散过程中对硬件的负担。
指定路由器(Designated Router,简称RD):当OSPF链路被连接到多路访问的网络中时,需要选择一台指定路由器(DR),每台路由器都把拓扑变化发给DR和BDR,然后由DR通知该多路访问网络中的其他路由器。
备用的指定路由器(Backup Designated Router,简称BDR):当DR发生故障的时候,BDR转变成DR,接替DR工作。
花费(Cost):OSPF中使用的唯一度量值,使用链路的带宽计算得来。
3.邻居关系
Down:OSPF初始状态,还没有开始交换信息。
Init:交换信息初期,表示已经收到了邻居的Hello报文,但是报文中没有列出本路由的RID,也就是说对方还没有收到本路由发出的Hello报文。
Two-Way:双向阶段,双方都收到了对方发送的Hello报文,建立了邻居关系。在多路访问的网络中,两个接口状态是DROther的路由器之间将停留在此状态,其他情况将继续转入高级状态。在此状态下的路由器是不能共享路由信息的,想共享路由信息,必须建立邻接关系。(注意邻居关系和邻接关系的区别)
Exstart:准备开始交换阶段,双方通过Hello报文决定主从关系,最高RID的路由将成为主路由,最先发起交换。主从关系确立后进入下一个阶段。
Exchange:开始交换阶段,路由器将本地的"路由状态数据库(LSDB)"用"数据库描述(DBD)"报文来描述,然后发给邻路由。如果这个阶段中的路由收到不在其数据库中的有关链路的信息,那么在下一个阶段中将请求对方发送该路由条目的完整信息。
Loading:加载阶段,路由器通过发送"链路状态请求(LSR)",来向邻居请求一些路由条目的详细信息。邻居则会使用"链路状态更新包(LSU)"来回复LSR请求,收到邻居发回的LSU后,再发送LSAck向发送LSU的路由进行确认。
FULL:完全邻接状态,Loading结束后,路由器之间就变成了"Full adjacency"。

网络:OSPF理解的更多相关文章
- OSPF理解
from http://kingdee.blog.51cto.com/98119/27310STP,PIM,OSPF,长的好像(*_*)可以把整个网络(一个自治系统AS)看成一个王国,这个王国可以分成 ...
- 对eigrp默认网络的理解!
EIGRP 默认网络设置的个人总结 (了解即可) //该机制同rip和ospf的default-informationoriginate,原理相同,只是配置格式不同. //!!(唯一作用)该命令起到减 ...
- Docker 网络之理解 bridge 驱动
笔者在前文<Docker 网络之进阶篇>中介绍了 CNM(Container Network Model),并演示了 bridge 驱动下的 CNM 使用方式.为了深入理解 CNM 及最常 ...
- CapsNet胶囊网络(理解)
0 - 背景 Geoffrey Hinton是深度学习的开创者之一,反向传播等神经网络经典算法发明人,他在去年年底和他的团队发表了两篇论文,介绍了一种全新的神经网络,这种网络基于一种称为胶囊(caps ...
- 对sppnet网络的理解
前言: 接着上一篇文章提到的RCNN网络物体检测,这个网络成功的引入了CNN卷积网络来进行特征提取,但是存在一个问题,就是对需要进行特征提取图片大小有严格的限制.当时面对这种问题,rg大神采用的是对分 ...
- 残差网络resnet理解与pytorch代码实现
写在前面 深度残差网络(Deep residual network, ResNet)自提出起,一次次刷新CNN模型在ImageNet中的成绩,解决了CNN模型难训练的问题.何凯明大神的工作令人佩服 ...
- Docker网络详细理解-容器网络互通
这篇文章主要解决以下几个问题: 1.同一个网段的容器互相之间通过ip进行ping通 2.同一个网段的容器互相之间通过容器名,通过使用--link进行ping通,已放弃这种方法 3.同一个网段的容器互相 ...
- AJPFX关于网络编程的理解
1:网络编程(理解) (1)网络编程:用Java语言实现计算机间数据的信息传递和资源共享 (2)网络编程模型 (3)网络编程的三要素 ...
- 理解OAuth 2.0 - 阮一峰的网络日志
原文:理解OAuth 2.0 - 阮一峰的网络日志 理解OAuth 2.0 作者: 阮一峰 日期: 2014年5月12日 OAuth是一个关于授权(authorization)的开放网络标准,在全世界 ...
随机推荐
- Beta冲刺(1/5)(麻瓜制造者)
今天小组进行了第一次冲刺,虽然新组员还没有确定. 今日完成任务 邓弘立:修改登录代码 李佳铭: 用户收藏UI代码编写 江郑: 进行了后台管理员界面ui的设计和环境的搭建 刘双玉:后台github仓库建 ...
- 基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码
比如 想跳到 mao.aspx 的页面 的div id="s" 的位置 那么 只用<a href="mao.aspx#s"> 就可实现跳转到指定位置 ...
- python中的轻量级定时任务调度库:schedule
提到定时任务调度的时候,相信很多人会想到芹菜celery,要么就写个脚本塞到crontab中.不过,一个小的定时脚本,要用celery的话太“重”了.所以,我找到了一个轻量级的定时任务调度的库:sch ...
- KVM虚拟化图
- js == 与 === 的区别[转]
we文章转自http://blog.sina.com.cn/s/blog_4b32835b01014iv9.html 1.对于string,number等基础类型,==和===是有区别的 1)不同类型 ...
- Opencv——相机标定
相机标定的目的:获取摄像机的内参和外参矩阵(同时也会得到每一幅标定图像的选择和平移矩阵),内参和外参系数可以对之后相机拍摄的图像就进行矫正,得到畸变相对很小的图像. 相机标定的输入:标定图像上所有内角 ...
- 记住left join最简单的方式(转)
表aaid adate1 a12 a23 a3表bbid bdate1 b12 b24 b4 select * from a left join b on a.ai ...
- 源码分享篇:使用Python进行QQ批量登录
直接上源码 1 #coding=utf-8 2 __author__ = 'Eagle' 3 import os 4 import time 5 import win32gui 6 import wi ...
- java算法----排序----(6)希尔排序(最小增量排序)
package log; public class Test4 { /** * java算法---希尔排序(最小增量排序) * * @param args */ public static void ...
- 大话设计模式之工厂模式 C#
学无止境,精益求精 十年河东,十年河西,莫欺少年穷 学历代表你的过去,能力代表你的现在,学习代表你的将来 大话设计模式一书中第一个开讲的设计模式是简单工厂模式,关于简单工厂模式大家可参考鄙人的博客:代 ...