第6章 静态路由和动态路由(4)_OSPF动态路由协议
6. OSPF动态路由协议
6.1 OSPF协议(Open Shortest Path First,OSPF开放式最短路径优先协议)
(1)通过路由器之间通告链路的状态来建立链路状态数据库,网络中所有的路由器具有相同的链路状态数据库,通过该数据库构建出网络拓扑。
(2)运行OSPF协议的路由器通过网络拓扑计算到各个网络的最短路径(开销最小的路径),路由器使用这些最短路径来构造路由表。
6.2 OSPF术语
(1)Router-ID:每一台OSPF路由器只有一个Router-ID,使用IP地址的形式来表示,该ID可以手工指定或路由器上活动Loopback接口中最大的IP地址,如C类地址优先于B类地址,注意非活动接口的IP地址不能被用作Router-ID。如果没有活动的Loopback接口,则选择活动物理接口IP地址最大的。
(2)开销(Cost):
①OSPF协议选择最佳路径的标准是带宽,带宽越高计算出来的开销越低。到达目标网络的各个链路累计开销最低的,就是最佳路径。用Metric(度量值)来表示开销,如10Mb/s接口(10 000 000),其Metric=100 000 000/10 000 000 = 10。其中的分子是个固定值。
②OSPF路由器计算到目标网络的Metric值,必须将沿途所有接口的Cost值累加起来,但只累加出接口,不计算进接口。
③OSPF会自动计算接口上的Cost值,但也可以通过手工指定该接口的Cost值,手工指定的值优先于自动计算的值。如果到目标网络Cost值相同,会执行负载均衡,最多有6条链路同时执行负载均衡。
(3)链路(Link):运行在OSPF进程下的路由器接口。
(4)链路状态(Link-State,LSA):即OSPF接口上的描述信息。如接口的IP地址、子网掩码、网络类型、Cost值等等。OSPF路由器之间交换的并不是路由表,而是链路状态。
(5)邻居(Neighbor)
①要想在OSPF路由器之间交换LSA,必须先形成OSPF邻居。只有邻居才会交换LSA,路由器将链路状态数据库中所有的内容毫不保留地发给所有邻居。
②OSPF靠周期性地发送Hello包来建立和维护。当超过4倍的Hello时间,也就是Dead时间过后还没收到邻居的Hello包,邻居关系将被断开。
6.3 OSPF协议工作过程

(1)邻居表的建立
①当R1路由器刚开始工作时,接口状态为down state,然后R1发送一个 Hello包,状态变为init state,等收到R2路由器发送来的Hello数据包,看到自己的ID出现在其应答的邻居表中,就建立了邻接关系,将其状态改为双向(two-way state)。
②OSPF规定,每两个相邻路由器每隔10秒要交换一次问候数据包,这样就能确定哪些邻站是可达的。若40秒钟没收到某相邻路由器发来的问候数据包,则可认为该相邻路由器不可到达,应立即修改链路状态数据库,并重新计算路由表。
③路由器通过发送Hello得知哪些相邻路由器在工作,以及将数据发往相邻路由器所需的“代价”,生成“邻居表”。
(2)拓扑表的建立
①交换状态:OSPF让每一个路由器和相邻路由器交换己有的链路状态摘要信息。
②加载状态:经过与相邻路由器交换摘要信息后,路由器就使用链路状态请求数据包向对方请求发送自己所缺少的某些链路状态项目的详细信息。经过一系列的分组交换,全网同步的链路数据库就建立了。
③完全邻接状态:邻居间的链路状态数据库同步完成,通过邻居链路状态请求列表为空且邻居状态为Loading判断。
(3)生成路由表
①每个路由器按照产生的全区域数据拓扑图,再运行最短路径算法,产生到目标网段的路由条目。
②在网络运行中,只要一个路由器的链路状态发生变化,该路由器就要使用链路状态更新数据包,用洪泛法向全网更新链路状态。(洪泛法指的是路由器通过所有输出端口向所有相邻的路由器发送消息。而每一个相邻路由器又再将此消息发往其所有的相邻路由器(但不再发送给刚刚发来消息的那个路由器)。这样,最终整个区域中所有的路由器都得到这个消息的一个副本,所以OSPF总是比RIP收敛更快,也没有RIP那种“坏消息传播得慢”的问题。)
6.4 OSPF的5种报文
(1)问候数据包(hello包):发现并建立邻接关系。
(2)数据库描述数据包:向邻居给出自己的链路状态数据库中的所有链路状态项目的摘要信息。
(3)链路状态请求(LSR)数据包:向对方请求某些链路状态项目的完整信息。
(4)链路状态更新(LSU)数据包:用洪泛法对全网更新链路状态。这种数据包是OSPF协议最核心的部分,也是最复杂的数据包。
(5)链路状态确认(LSAck):对LSU做确认
6.4 配置OSPF单区域

(1)配置OSPF协议(以R1路由器为例)
①R1(config)#router ospf 1 //1表示给ospf进程指定一个进程编号
②R1(config-router)#network 192.168.0.0 0.0.255.255 area 0,network的作用是为本路由器的OSPF进程指定网络范围,路由器R1的三个接口都属于192.168.0.0/16这个网段,可以合并,但注意使用的是反转掩码。
(2)查看OSPF协议的三张表
①显示邻居信息:R1#show ip ospf neighbor (注意NeighborID就是邻居路由的ID。FULL状态表示路由器与其他邻居处于完全邻接状态)
②显示邻居详细信息:R1#show ip ospf neighbor detail
③显示链路状态数据库:R1#show ip ospf database(其中的ADV Router表示通告链路状态的路由器)
④查看完全的链路状态数据库:R1#show ip ospf database router(每条链路状态包括自己与哪个路由器直连,以及自己连接着哪些网段)
⑤查看路由表:R1#show ip route或R1#show ip route ospf(只显示OSPF生成的路由表)

(3)监控OSPF协议的活动
①R1#debug ip ospf ? //查看能诊断的事件
②R1#debug ip ospf hello //显示hello数据包的活动(采用多播地址224.0.0.5)
③R1#debug ip ospf flood //洪泛数据包跟踪,显示链路状态更新(LSU)数据包的发送和接收。
④R1#undebug all //关闭诊断
(4)验证OSPF协议的健壮性
①PC1> tracer 192.168.3.2 //通过R1→R2→R3
②断开R1和R2之间的链路,再次PC1> tracer 192.168.3.2 //通过R1→R4→R5→R6
6.5 OSPF多区域
(1)自治系统与OSPF区域

①因特网的规模非常大,有成千上万的路由设备的互连在一起。如果让所有的路由器知道所有网络怎样到达,则路由表将非常大。
②许多单位不愿外界了解自己单位网络的布局细节以及本部门所采用的路由选择协议。
③划分区域的好处就是利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个自治系统。在一个区域内部的路由器只需要知道本区域的完整网络拓扑,而不需要知道其他区域的网络拓扑。
④OSPF使用层次结构的区域划分,在上层的区域叫主干区域(标识符为0.0.0.0),其作用是连通其下层的区域。从其他区域来的信息都由区域边界路由器进行概括(路由汇总)(如上图主干路由器有R1、R2、R3,自治系统边界路由器有R3,区域边界路由器有R4和R5)
(2)两大类路由选择协议
①内部网关协议(IGP):即在一个自治系统内部使用的路由选择协议,与在互联网中的其他自治系统选用什么协议无关。目前主要使用RIP和OSPF协议。
②外部网关协议(EGP):负责在不同的自治系统间进行路由选择协议(不同的自治系统可能使用不同的内部网关协议)。目前使用最多的外部网关协议是BGPv4协议。
(3)OSPF多区域

①RouterA上启用和配置OSPF协议
//RouterA路由器
RouterA#conf t
RouterA(config)#router ospf
RouterA(config-router)#network 40.0.0.0 0.0.0.255 area
②RouterB上启用和配置OSPF协议
//RouterB路由器
RouterB#conf t
RouterB(config)#router ospf
RouterB(config-router)#network 40.0.0.0 0.0.255.255 area
//将area1汇总成1条通告给area0
RouterB(config-router)#network 40.1.0.0 0.0.255.255 area
③RouterC上启用和配置OSPF协议
//RouterC路由器
RouterC#conf t
RouterC(config)#router ospf
RouterC(config-router)#network 40.0.0.0 0.0.255.255 area
//将area2汇总成1条通告给area0
RouterC(config-router)#network 40.2.0.0 0.0.255.255 area
④RouterD、RouterE和RouterF上启用和配置OSPF协议
//RouterD路由器
RouterD#conf t
RouterD(config)#router ospf
RouterD(config-router)#network 40.1.0.0 0.0.255.255 area
⑤RouterG、RouterH和RouterI上启用和配置OSPF协议
//RouterG路由器
RouterG#conf t
RouterG(config)#router ospf
RouterG(config-router)#network 40.2.0.0 0.0.255.255 area
第6章 静态路由和动态路由(4)_OSPF动态路由协议的更多相关文章
- Spring Cloud (十三) Zuul:静态路由、静态过滤器与动态路由的实现
		
前言 本文起笔于2018-06-26周二,接了一个这周要完成的开发任务,需要先等其他人的接口,可能更新的会慢一些,还望大家见谅.这篇博客我们主要讲Spring Cloud Zuul.项目地址:我的gi ...
 - 【Cisco】实现同一个路由器一个端口用动态路由,另一个端口用静态路由
		
一.先构建以下网络图: 准备三台路由器,三台交换机,三台主机,连接所有设备并配置端口IP和网关,DCE端口的时钟频率都设置为64000.
 - CISCO实验记录五:静态路由与RIP动态路由
		
一.实验要求 1.创建设备间静态路由 2.检查三层连通性 3.清空路由,使用RIP创建动态路由 4.检查路由表 二.实验操作 1.创建设备静态路由 #iip route 192.168.1.0 255 ...
 - CCNA - Part12 - 路由协议 (1) - 静态路由,动态路由 RIP
		
路由器 在之前关于路由器的介绍中,我们知道它是网络互联的核心设备,用于连接不同的网络,在网络之间转发 IP 数据报.对于路由器来说,路由表是其内部最为重要的构成组件.当路由器需要转发数据时,就会按照路 ...
 - vue-router动态路由 刷新页面 静态资源没有加载的原因
		
在做项目的时候,发现刷新页面的时候,静态路由没有加载,度娘了一圈,终于解决了. vue-router使用history模式+使用嵌套路由: 访问路由和嵌套路由页面,显示正常,但是刷新页面的时候,嵌套路 ...
 - Reactjs之静态路由、动态路由以及Get传值以及获取
		
1.新增知识点 /* react路由的配置: 1.找到官方文档 https://reacttraining.com/react-router/web/example/basic 2.安装 cnpm i ...
 - RIP、OSPF、BGP、动态路由选路协议、自治域AS
		
相关学习资料 tcp-ip详解卷1:协议.pdf http://www.rfc-editor.org/rfc/rfc1058.txt http://www.rfc-editor.org/rfc/rfc ...
 - vue+iview实现动态路由和权限验证
		
github上关于vue动态添加路由的例子很多,本项目参考了部分项目后,在iview框架基础上完成了动态路由的动态添加和菜单刷新.为了帮助其他需要的朋友,现分享出实现逻辑,欢迎一起交流学习. Gith ...
 - Cisco动态路由配置
		
前言: 学完静态路由配置,该学动态路由.所以 学习完后来做终结. 准备: PC:192.168.1.10 R1:fa0/0 192.168.1.1 fa0/1 1.1.12.1 R2: fa0/0 1 ...
 - Miox带你走进动态路由的世界——51信用卡前端团队
		
写在前面: 有的时候再做大型项目的时候,确实会被复杂的路由逻辑所烦恼,会经常遇到权限问题,路由跳转回退逻辑问题.这几天在网上看到了51信用卡团队开源了一个Miox,可以有效的解决这些痛点,于是乎我就做 ...
 
随机推荐
- C# 键盘响应事件及键值对照表
			
键盘响应事件总结 键盘响应事件是在用户按下某个键后触发的事件,可以是任意操作,但不是任意键都可以被捕获的. 原型:public event KeyPressEventHandler KeyPress ...
 - kafka 知识点
			
Replica如何分布 为了尽量做好负载均衡和容错能力,需要将同一个Partition的Replica尽量分散到不同的机器.如果所有的Replica都在同一个Broker上,那一旦该Broker宕机, ...
 - webpack 4  学习资料
			
webpack 4 学习资料 资料 网址 webpack 中文版 https://webpack.docschina.org/configuration/ webpack 4 教程 https://s ...
 - TP5 中引入第三方类库
			
通过了解tp5的目录结构,我们知道其中有两个目录是纺织扩展类库文件的. extend是放置自定义或者其他类文件的. vendor目录是放置composer类库文件的. 当我们的第三方类库文件是下载的, ...
 - spring-AOP框架(基于配置文件的方式配置AOP)
			
.xml: ref-指向,order-指定优先级
 - Jmeter录制脚本过程及Could not create script recorder报错、您的连接不是私密连接报错
			
转载自 https://www.cnblogs.com/wwho/p/7173172.html Jmeter录制脚本过程及Could not create script recorder报错.您 ...
 - Github访问慢解决办法
			
为什么慢?github的CDN被某墙屏了. 绕过dns解析,在本地直接绑定host.打开dns查询工具网站http://tool.chinaz.com/dns 查询域名github.global.ss ...
 - redis常用客户端命令
			
sentinel操作: 1.查询主节点:redis-cli -h 172.16.4.220 -p 46379 SENTINEL get-master-addr-by-name mymaster 2.查 ...
 - Visual Studio搭建Python开发环境
			
一.搭建开发环境 1.创建工程: 2.下载环境: 创建好工作以后,点击运行,就会出现下面这个界面,然后点击下载,并安装 http://jingyan.baidu.com/article/fec4bce ...
 - delphi 关于 "高位" 与 "低位"
			
Longint = Integer WPARAM = Integer LPARAM = Integer LRESULT = Integer FARPROC = Pointer function Mak ...