CCNA 之 七 路由协议 三 OSPF
OSPF协议
OSPF开放式最短路径优先
全称:Open Shortest Path First
是目前使用最为广泛的路由协议,主要因为OSPF是开放式协议,和IGRP、EIGRP思科的私有协议不同。
接口敏感型的协议;
链路状态路由协议

特点:
- 是一种链路状态路由协议,无路由环路(全局拓扑),
RFC2328 - "开放"意味着非私有的
所有的厂商都可以使用的公有化的协议;
- 管理型距离:110(AD值)
- OSPF采用SPF算法计算达到目的地的最短路径
什么叫链路(LINK)? = 路由器接口
什么叫状态(State)? = 描述接口以及其与邻居路由器之间的关系
OSPF metric
每个路由器都把自己当做根,并且给予累计成本
Cost值来计算到达目的地的最短路径
Cost = 参考带宽(10^8) / 接口带宽(b/s)
OSPF metric详细的计算方式:
进来一条路由的所有路由器的如接口方向的累计;
OSPF报文类型
- Hello 简历和维护
OSPF邻居关系 - DBD 链路状态数据库描述信息(描述
LSDB中LSA头部信息) - LSR 链路状态请求,向
OSPF邻居请求链路状态信息 - LSU 链路状态更新(包含一条或多条
LSA) - LSAck 对
LSU中的LSA进行确认。
OSPF区域
- 在区域边界可以做路由汇总,减小了路由表
- 减少了
LSA洪范的范围,有效的把拓扑变化控制在区域内,提高了网络稳定性 - 拓扑的变化影响可以只限制涉及本区域内
- 多区域提高了网络的扩展性,萝莉与组件大规模网络
OSPF的三张表
- 邻居表(neighbor table):
OSPF用邻居机制来发现和维护路由表的存在,邻居表存储了双向通信的邻居关 系OSPF路由器列表的信息。
- 拓扑表(topology table):
OSPF用LSA(Link state Advertisement 链路状态通告)来描述网络拓扑信息,然后OSPF路由器用拓扑数据库来存储网络的这些LSA信息
- OSPF路由表(routing table)
对链路状态数据库进行
SPF(Dijkstra)计算,而得出的OSPF路由表。
OSPF基本的运行步骤:
- 步骤1、建立邻居关系(Establish route adjacencies)
- 步骤2、必要的时候进行DR的选举(Elect the DR / BDR)
- 步骤3、发现路由(Discover routes)
- 步骤4、选择合适的路由器(Select appropriate route)
- 步骤5、维护路由信息(Maintain routing infomation)
一、建立邻居关系
下图中为OSPF在建立邻居关系发送的Hello包中的数据


Hello包用来发现OSPF邻居关系并建立相邻关系,通过组播地址224.0.0.5来给ALLSPFRroutes- 通告两台路由器建立相邻关系必要的统一的参数。
- 在以太网和帧中继网络等多路由访问网络中选举制定路由器(DR)和备用制定路由器(DBR)
OSPF的网络类型
BMA广播性多路访问Point-to-Point点对点NBMA非广播型多路访问
以上三种是根据某一个路由器接口的二层封装来识别这个路由器的这个接口应该是
OSPF的网络类型,从而影响到OSPF在这个接口上运转.
- 点对多点
不是路由器自己设别,需要手工配置

LSA的泛洪解决方式:
选举
DR和BDR
这里需要注意:DR和BDR的选举,只在以太网(MA)或者是Frame relay的方式才会进行,并且DR和BDR的选举,会影响路由器之间建立邻居关系的时间,因为在建立邻居关系的时候,会穿插着进行DR和BDR的选举。
- 为减小多路访问网络中的OSPF流量,
OSPF会选举一个制定路由器(DR)和一个备用制定路由器(BDR) - 选举规则:最高接口优先级被选作DR,如果优先级相等(默认为1),具有最高的路由器
ID(Router-ID)的路由器被选举程DR,并且DR具有非抢占性 - 制定路由器(DR):
DR负责使用该变化信息更新其他所有OSPF路由器(DRouter) - 备用制定路由器(BDR):
BDR会监控DR的状态,并在当前DR发生故障时接替其角色
RouterID
用于表示OSPF路由器的ID,全网唯一性;可手动配置,也可动态选举(有Loopback接口时,选择最高的Loopback IP地址;否则,选择最高活跃物理接口的IP地址)。
LSA泛洪
当网络中某一台路由器R1线路发生变化时,R1会通过组播地址
224.0.0.6发送通知LSA,而一个OSPF网络环境中,只有DR和BDR会监听这个地址,也就是说该网络中,只有DR和BDR会接收到通知
DR接收到后,再通过组播地址224.0.0.5发送变更通知LSU,改地址代表网络中所有运行OSPF协议的路由器都会监听224.0.0.5地址,并受到通知
路由器收到包含变化后的LSA的LSU后,更新自己的链路状态数据库,过一段时间(SPF延迟),对更新的链路状态数据库执行SPF算法,必要时更新路由表。
OSPF基本配置
- 开启OSPF进程
- 宣告特定的网络到OSPF区域
通配符掩码
通配符是一个用于决定哪些IP地址位该精确匹配(0代表精确匹配)哪些地址被忽略的32位数值,通常用于处理访问控制列表(ACL)、OSPF和EIGRP等路由协议的网络通告。
掩码:1位表示网络号;0位表示主机位。掩码用于区分IP地址中的网络及主机部分
通配符:1位表示无所谓;-位表示需要严格匹配。通配符用于决定一个IP钟的那些为该匹配
下面是实际配置:
根据下图中的拓扑配置OSPF

R1配置:
R1>en
R1#conf t
R1(config)#int s 0/0
R1(config-if)#ip add 192.168.1.1 255.255.255.0
R1(config-if)#no sh
R1(config-if)#
R1(config-if)#ex
R1(config)#router ospf 1
R1(config-router)#network 192.168.1.0 0.0.0.255 area 0
R2配置:
R2>en
R2#conf t
R2(config)#int s 0/0
R2(config-if)#ip add 192.168.1.2 255.255.255.0
R2(config-if)#no sh
R2(config-if)#ex
R2(config)#int s 0/1
R2(config-if)#ip add 192.168.2.1 255.255.255.0
R2(config-if)#no sh
R2(config-if)#ex
R2(config)#router ospf 1
R2(config-router)#network 192.168.1.0 0.0.0.255 area 0
*Mar 1 00:05:06.847: %OSPF-5-ADJCHG: Process 1, Nbr 192.168.1.1 on Serial0/0 from LOADING to FULL, Loading Done # 这里提示邻居关系已经建立
R2(config-router)#network 192.168.2.0 0.0.0.255 area 0
R3配置:
R3>en
R3#conf t
R3(config)#int s 0/0
R3(config-if)#ip add 192.168.2.2 255.255.255.0
R3(config-if)#no sh
R3(config-if)#ex
R3(config)#router ospf 1
R3(config-router)#network 192.168.2.0 0.0.0.255 area 0
*Mar 1 00:06:41.635: %OSPF-5-ADJCHG: Process 1, Nbr 192.168.2.1 on Serial0/0 from LOADING to FULL, Loading Done # 这里提示邻居关系已经建立
验证:
R1:
R1#show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
Gateway of last resort is not set
C 192.168.1.0/24 is directly connected, Serial0/0
O 192.168.2.0/24 [110/128] via 192.168.1.2, 00:00:05, Serial0/0
R1#ping 192.168.2.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.2.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 8/14/32 ms
R3:
R3#show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
Gateway of last resort is not set
O 192.168.1.0/24 [110/128] via 192.168.2.1, 00:00:14, Serial0/0
C 192.168.2.0/24 is directly connected, Serial0/0
R3#ping 192.168.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 8/18/36 ms
此时可以看到192.168.1.0/24和192.168.2.0/24网段都能互通,完成。
CCNA 之 七 路由协议 三 OSPF的更多相关文章
- 路由协议之OSPF
目录 OSPF协议 OSPF的七种状态 OSPF的11种LSA Stub和Nssa OSPF中的防环机制 OSPF中的路由汇总和路由过滤 OSPF中的虚拟链路 虚拟链路有两种存在的意义 OSPF中的认 ...
- rip是典型的距离矢量动态路由协议。Ospf是链路状态型的协议
网络工程师十个常见面试问题-看准网 https://m.kanzhun.com/k-mianshiwenti/1465113.html 两者都属于IGP协议,rip是典型的距离矢量动态路由协议.Osp ...
- 详解 CSS 七种三栏布局技巧
作者:林东洲 链接:https://zhuanlan.zhihu.com/p/25070186 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 三栏布局,顾名思义就是 ...
- css中常用的七种三栏布局技巧总结
三栏布局,顾名思义就是两边固定,中间自适应.三栏布局在开发十分常见,那么什么是三栏布局?例如当当网首页边商品导航和右边导航固定宽度,中间的主要内容随浏览器宽度自适应.效果如下图所示: 下面围绕的这样的 ...
- CCNA 之 六 路由协议 二 EIGRP
EIGRP(Enhanced IGRP) 增强型内部网关路由协议 注意:这是cisco私有协议:也就是说,该协议只能运行在思科的设备上,如果有其他的厂家的设备,则不能保证能运行此协议: EIGRP的特 ...
- CCNA 之 五 路由协议 一 静态路由
静态路由 路由选择原理 什么是路由? 就如同去某一个地方,会有很多种路线,每一条路线经都可以称之为路由: 路由器中会维护一张路由表,每一个表项都是一条路由,也就是去往某个网络的路径,然后将对应的数据包 ...
- Mybatis框架七:三种方式整合Spring
需要的jar包: 新建lib文件夹放入jar包,Build Path-->Add To Build Path之后: 原始Dao开发示例: src下:新建核心配置文件sqlMapConfig.xm ...
- 01-http简介-四层 七层 三次握手
HTTP简介.请求方法与响应状态码 接下来想系统的回顾一下TCP/IP协议族的相关东西,当然这些东西大部分是在大学的时候学过的,但是那句话,基础的东西还是要不时的回顾回顾的.接下来的几篇博客都是关于T ...
- 再见Jenkins,从Gitlab代码提交到k8s服务持续交付只需七毛三(走过路过不要错过)
Gitlab runner 快速搭建CICD pipeline 背景 日常开发中,相信大家已经做了很多的自动化运维环境,用的最多的想必就是利用Jenkins实现代码提交到自动化测试再到自动化打包,部署 ...
随机推荐
- Apache Tomcat 远程代码执行漏洞(CVE-2019-0232)漏洞复现
Apache Tomcat 远程代码执行漏洞(CVE-2019-0232)漏洞复现 一. 漏洞简介 漏洞编号和级别 CVE编号:CVE-2019-0232,危险级别:高危,CVSS分值:官方 ...
- 《Effective Java》 读书笔记(八)避免使用Finalizer和Cleaner机制
Finalizer和Cleaner并不等同于C++中的析构函数,是不确定多久会被调用的,甚至有时候可能不会被调用,因此除了作为一个安全网或者终止非关键的本地资源,不应该在Finalizer或Clean ...
- Angular 项目中如何使用 ECharts
在有些使用 ECharts 库的 Angular 项目中,通常除了安装 npm 包之外,还会在 angular.json 中配置 “build.options.scripts”,将 “node_mod ...
- Django学习day6——模板
在day4中,你可能已经注意到我们在例子视图中返回文本的方式有点特别. 也就是说,HTML被直接硬编码在 Python 代码之中. html = "<html><body& ...
- StrGame
如果先手可以控制一轮必胜或者必败,则先手必胜 如果只有必胜的方法,不能保证必败,则最后一轮的先手获得胜利,倒数第二轮的先手会被后手想办法”被胜利“从而在最后一轮成为后手,必败.倒数第三轮先手故意胜利, ...
- iOS开发高级分享 - iOS的可折叠表视图
导言 我曾经开发过一个iphone应用程序,它显示了大量的输入,这些输入分为不同的类别,在`UITableView`...若要更改其中一个输入的值,用户按下表视图中的对应行,并在出现的单独屏幕中更改该 ...
- raw文件转mha文件
raw格式 在体数据(volume)中,经常会遇到raw文件,raw文件就是其实就是所有体素组成的文件,raw文件必须还有一些描信息才能用(因为得知道数据的size,type,spacing等),就像 ...
- Chrome DevTools调试微信X5内核页面
起因:公司最近在做一个双十一的H5宣传页面,大概需求就是模拟微信视频来电,接通视频后弹出某某明星的视频巴拉巴拉@#%!!!~.看到需求我的第一反应是So easy,正当我码代码码的开心的时候,难题他来 ...
- 易初大数据 2019年10月24日 spss笔记 王庆超
数据文件的重置结构:横向结构(个案组),纵向结构,不符合分析方法的时候就需要重组,选定变量重组为个案,数据—重构,重构数据向导,选定变量重组为个案,将选定个案重构位变量,转置所有数据,变量组数目,一个 ...
- [LC]235题 二叉搜索树的最近公共祖先 (树)(递归)
①题目 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p.q,最近公共祖先表示为一个结点 x,满足 x 是 p.q 的祖先 ...