OSPF(Open Shortest Path First)
1、概述
路由协议OSPF全称为Open Shortest Path First,也就开放的最短路径优先协议,因为OSPF是由IETF开发的,所以所有厂商都可以用。
OSPF的流量使用IP协议号。
OSPF对网络没有跳数限制,支持 Classless Interdomain Routing (CIDR)和Variable-Length Subnet Masks (VLSMs),没有自动汇总功能,可以手动汇总。
OSPF并不会周期性更新路由表,而采用增量更新,即只在路由有变化时,才会发送更新,并且只发送有变化的路由信息;事实上,OSPF是间接设置了周期性更新路由的规则,因为所有路由都是有刷新时间的,当达到刷新时间阀值时,该路由就会产生一次更新,默认时间为1800秒,即30分钟,所以OSPF路由的定期更新周期默认为30分钟。
OSPF所有路由的管理距离(Ddministrative Distance)为110,OSPF只支持等价负载均衡。
OSPF是典型的链路状态路由协议,路由器之间交换的并不是路由表,而是链路状态,OSPF通过获得网络中所有的链路状态信息,从而计算出到达每个目标精确的网络路径。
2、OSPF术语
Router-ID
RID是路由器在ospf中的唯一标识,选举原则,思科会自动在所有环回口中选择最大的IP,做RID,如果没有环回口,则选择活动的物理口IP最大的一个。同时也可以手动指定。
RID绝对不可以重名,否则路由器收到的链路状态,就无法确认发起者的身份。
注:如果一台路由器收到一条链路状态,无法到达该Router-ID的位置,就无法到达链路状态中的目标网络,Router-ID只在OSPF启动时计算,或者重置OSPF进程后计算。
COST
OSPF会自动计算接口上的Cost值,但也可以通过手工指定该接口的Cost值,手工指定的优先于自动计算的值。
OSPF计算的Cost,同样是和接口带宽成反比,带宽越高,Cost值越小。到达目标相同Cost值的路径,可以执行负载均衡,最多6条链路同时执行负载均衡。
链路状态LSA
链路状态(LSA)就是OSPF接口上的描述信息,例如接口上的IP地址,子网掩码,网络类型,Cost值等等,因为ospf路由器之间交换的并不是路由表,而是链路状态信息。
OSPF区域
因为OSPF路由器之间会将所有的链路状态(LSA)相互交换,毫不保留,当网络规模达到一定程度时,LSA将形成一个庞大的数据库,势必会给OSPF计算带来巨大的压力;为了能够降低OSPF计算的复杂程度,缓存计算压力,OSPF采用分区域计算,将网络中所
有OSPF路由器划分成不同的区域,每个区域负责各自区域精确的LSA传递与路由计算,然后再将一个区域的LSA简化和汇总之后转发到另外一个区域,这样一来,在区域内部,拥有网络精确的LSA,而在不同区域,则传递简化的LSA。
OSPF的区域0就是所有区域的核心,称为BackBone 区域(骨干区域),而其它区域称为Normal 区域(常规区域),在理论上,所有的常规区域应该直接和骨干区域相连,常规区域只能和骨干区域交换LSA,常规区域与常规区域之间即使直连也无法互换LSA。
Internal Router(IR)
路由器所有接口都属于同一个区域。
Area Border Router (ABR)
一台OSPF路由器属于多个区域,即该路由器的接口不都属于一个区域。
Autonomous System Boundary Router (ASBR)
一台OSPF路由器将外部路由协议重分布进OSPF
注:
★一台路由器可以运行多个OSPF进程,不同进程的OSPF,可视为没有任何关系,如需要获得相互的路由信息,需要重分布。
★每个OSPF进程可以有多个区域,而路由器的链路状态数据库是分进程和分区域存放的。
DR/BDR
当多台OSPF路由器连到同一个多路访问网段时, 通过在多路访问网段中选择出一个核心路由器,称为DR(Designated Router),网段中所有的OSPF路由器都和DR互换LSA,这样一来,DR就会拥有所有的LSA,并且将所有的LSA转发给每一台路由器;DR就像
是该网段的LSA中转站,所有的路由器都与该中转站互换LSA,如果DR失效后,那么就会造成LSA的丢失与不完整,所以在多路访问网络中除了选举出DR之外,还会选举出一台路由器作为DR的备份,称为BDR(Backup Designated Router),BDR在DR不可用时,代替
DR的工作,而既不是DR,也不是BDR的路由器称为Drother,事实上,Dother除了和DR互换LSA之外,同时还会和BDR互换LSA。
选举原则:
首先比较优先,选举优先级最高的成为DR,优先级数字越大,表示优先级越高,被选为DR的几率就越大,次优先级的为BDR,优先级范围是0-255,默认为1,优先级为0表示没有资格选举DR和BDR。
其次比较RID,如果在优先级都相同的情况下,Route-Id 最大的成为DR,其次是BDR,数字越大,被选为DR的几率就越大。
注:★ Drother路由器将数据包发向目标地址224.0.0.6,只能被DR和BDR接收,其它Drother不能接收;而DR和BDR将数据包发向目标地址224.0.0.5,可以被所有路由器接收。
3、OSPF数据报
Hello
建立和维护OSPF邻居。
DBD
交换LSDB的摘要信息
LSR
请求某条特定的LSA信息
LSU
发送给邻居,邻居所请求的LSA
LSACK
用于确定LSA的接受
4、OSPF启动状态
Down → 路由器刚刚启用OSPF进程,Hello包还没收到,在此进程,可以向外发送Hello包,以试图发现邻居。
Attempt →非广播多路访问中,有这个状态,需要手动指定邻居
Init →只是OSPF路由器一方收到了另一方的Hello,但并没有双方都交换Hello,也就是对方的Hello中还没有将自己列为邻居。
Two-way →双方都已经交换了Hello信息,并且从Hello中看到对方已经将自己列为邻居,并且如果是需要选举DR和BDR的话,也已经选举出来,但OSPF邻居之间并不一定就会交换LSA,如果不需要交换LSA,则永远停留在此状态,如果需要形成邻接并互相交换LSA,则状态继续往下进行,(比如Drother与Drother之间将永远停留在Two-way状态,因为Drother与Drother之间不需要交换LSA。)
Exstart →在邻居之间交换完整的LSA之前,会先发送DBD,LSR,谁先发,谁后发,需要确定顺序,在此阶段,就是确定邻居的主从关系(Master---slave),由主路由器向从路由器发送信息。
注:在任何网络环境下,OSPF在交换LSA之前,都需要确定主从关系。
Exchange → 交换DBD的过程,发送LSR。
Loading →邻居收到LSR,回复LSU。
Full→表示数据库已经同步,数据库状态变成了收敛,但路由表却还在计算当中。
注:除了Two-way和Full这两个状态,邻居停留在任何状态,都是不正常。
5、OSPF网络类型
OSPF在运行时,必须考虑链路层的类型,称为OSPF网络类型,网络类型可分为如下几种:
点到点
点到多点
广播
非广播多路访问
由于不同的网络类型,将会影响到OSPF的Hello时间与Dead时间,关系到DR与BDR的选举与否,影响到OSPF邻居是自动建立还是手工建立,总结如下表:
网络类型 |
Hello时间 |
选举DR/BDR |
邻居建立方式 |
点到点 (Point-To-Point) |
10秒 |
否 |
自动 |
点到多点 (Point-To-Multipoint) |
30秒 |
否 |
自动 |
广播 (Broadcast ) |
10秒 |
是 |
自动 |
非广播 (Non-Broadcast ) |
30秒 |
是 |
手工 |
点到多点非广播 (Point-To-Multipoint Non-Broadcast) |
30秒 |
否 |
手工 |
注★OSPF邻居的成功建立,并不要求双方网络类型一致,但双方网络类型不一致,将可能导致链路状态数据库中的条目无法进入路由表。
6、OSPF LSA类型
类型 1 (Router Link)
任何一台路由器都会产生,每台路由器的每个接口,都由自己的链路状态,即使有多个OSPF接口,也只有一条1类LSA,因为所有接口的链路状态会打包成一条1类LSA。
类型 2 (Network Link)
只有在选举DR/BDR的网络类型中才会产生,并却只有DR产生。
类型 3 (Summary Link)
类型3的LSA就是将一个区域的LSA发向另一个区域时的汇总和简化,ABR其实就是将LSA 1汇总和简化,变成LSA 3后再发到另一个区域的。
类型 4 (ASBR Summary Link)
ABR产生,主要告诉其它区域如何前往ASBR,泛洪范围ABR连接的其他区域
类型 5 (External Link)
ASBR产生,用于通告前往自治域系统外部的路由,并传遍整个ospf自主系统,泛洪范围整个自治域
类型 7 (NSSA Link)
NSSA将外部路由重分布进OSPF时,路由信息使用类型7来表示,LSA 7由NSSA区域的ASBR产生,LSA 7也只能在NSSA区域内传递,如果要传递到NSSA之外的其它区域,需要同时连接NSSA与其它区域的ABR将LSA 7 转变成LSA 5后再转发。
OSPF(Open Shortest Path First)的更多相关文章
- OSPF(Open Shortest Path First开放式最短路径优先 -链路状态路由协议
OSPF分为OSPFv2和OSPFv3两个版本,其中OSPFv2用在IPv4网络,OSPFv3用在IPv6网络 思科OSPF的协议管理距离(AD)是110,华为OSPF的协议管理距离是10 通告网络接 ...
- hdu-----(2807)The Shortest Path(矩阵+Floyd)
The Shortest Path Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- zoj 2760 How Many Shortest Path 最大流
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1760 Given a weighted directed graph ...
- The Shortest Path in Nya Graph
Problem Description This is a very easy problem, your task is just calculate el camino mas corto en ...
- hdu 3631 Shortest Path(Floyd)
题目链接:pid=3631" style="font-size:18px">http://acm.hdu.edu.cn/showproblem.php?pid=36 ...
- Shortest Path(思维,dfs)
Shortest Path Accepts: 40 Submissions: 610 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: ...
- Shortest Path
Shortest Path Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)T ...
- (中等) HDU 4725 The Shortest Path in Nya Graph,Dijkstra+加点。
Description This is a very easy problem, your task is just calculate el camino mas corto en un grafi ...
- 【ZOJ2760】How Many Shortest Path
How Many Shortest Path 标签: 网络流 描述 Given a weighted directed graph, we define the shortest path as th ...
随机推荐
- wx获取地理位置
1.公众号配置. 2.引入js 一个放在根目录下的txt文件. 3.1)第一个ajax为获取后台传给的wx.config需要的参数:wx.ready().通过ready接口处理成功验证.然后才是wx. ...
- 剑指offer数组2
面试题39:数组中出现次数超过一半的数字 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次, ...
- 金蝶K/3 同步用核算项目配置
- ansible的tests
Ansible的tests : 路径 /usr/lib/python2.7/site-packages/ansible/plugins/test core.py # failure testing ' ...
- Java中CountDownLatch和CyclicBarrier的使用和比较
CountDownLatch和CyclicBarrier同为Java1.5开始引入的,应用于多线程编程中的一种工具,二者用途十分相近,十分容易混淆. CountDownLatch CountDownL ...
- Shell 编程详解
部分引用自:https://blog.csdn.net/qq_22075977/article/details/75209149 一.概述 Shell是一种具备特殊功能的程序,它提供了用户与内核进行交 ...
- 图书管理系统 (c语言实现) (全部代码)
直接上代码不解释 #include <stdio.h> #include <stdlib.h> #include <string.h> #define AVAILA ...
- 2019-2-13TextBox技巧
清空所有的TextBox文本框 思路:这些TextBox都是在一个窗体上的,这时候我们可以利用一个循环去遍历窗体上所有的TextBox控件.(代码如下) foreach (Control i in C ...
- 【JAVA基础】一:聊聊笔试常见到的 “==、equal” 比较是否相等的内在差别
开始本文之前,先让我们记住一个口诀(这个口诀只针对基础的类比如String.Integer等,如果是自定义的类,需要看equal的具体实现): equal比较其值,== 比较地址 这两天在走查代码的时 ...
- 关于Android studio 设置点击打不开的解决
今天早上觉得字体太小了想改下字体发现设置点不开,后来发现是打了汉化包的bug,后来换了一个汉化包就能打开了.