OSPF基础,浅显易懂

OSPF

思维导图

·OSPF基本概念
·OSPF的工作过程
·OSPF报文
·OSPF邻居建立过程
·DR,BDR的选举
·LSA的解析
·OSPF区域类型
·OSPF的网络类型
·OSPF的路径选择
·OSPF特殊特性及实例分析

一.OSPF的基本概念

OSPF(Open shortest path first,开放式最短路径优先),是一种链路状态型协议,基于SPF算法。OSPF是一种层次式的协议,他不向邻居通告路由项,向邻居通告的是链路状态信息,由各路由器根据链路状态数据库自行计算生成路由表

二.OSPF的工作过程

1.了解直连网络:正确配置接口的IP地址和子网掩码并激活接口,并将接口包含在一条network语句中
2.发送HELLO包:建立OSPF邻居关系:邻居是指同样在链路对应接口上启用了OSPF功能的路由器
3.建立链路状态数据包:其中包含与该路由器直接相连链路的各种状态,包括邻居ID,链路类型和带宽等。一旦建立了临界关系,即可创建LSP
4.将链路状态数据包泛洪至邻居:每台路由器将自身库中的LSP都泛洪给邻居路由器,直至区域内所有OSPF路由器都具有相同的LSDB(链路状态数据库)
5.建立自身的路由表:路由器根据链路状态数据库,使用SPF算法,各自建立自己的路由表

三.OSPF报文

1.OSPF报文
OSPF报文格式
2.OSPF数据包
OSPF中公有五种数据包,在整个OSFP运行的过程中起着重要的作用
·HELLO包
·DBD包
·LSR包
·LSU包
·LSACK包
(1)HELLO包
作用:建立邻居关系,根据包中的内容来协商邻居关系
建立邻居关系需要匹配的字段:HELLO和失效时间间隔,区域号相同,区域末节标识
出现阶段:邻居建立阶段
在这里插入图片描述

(2)DBD包(Datebase Description)
作用:在OSPF邻居关系建立之后,DBD包负责描述本地的LSDB,接收到路由器通过和自己的LSDB做对比,进而同步区域中的LSDB
特殊字段:
1字段,置1表示这是第一个要发送的数据包
M字段,置1表示之后还有DD包要发送
MS字段,用来表示谁是主(Master)谁是从(Slave)
DD Sequence Number:利用序列号来确保传输的完整性和可靠性
LSA Headers:LSA头部摘要信息
在这里插入图片描述
(3)LSR包(Link-State Update)
作用:用来向邻居路由器请求某些缺失的路由,或者哪些LSA是已经缺失了的
特殊字段:
LS Type,指定所请求的LSA类型,一共7类
Link State ID:用来表示LSA,根据LSA种类不同,有不同的含义
Advertising Router:用来表示产生此LSA路由器ID
在这里插入图片描述
(4)LSU(Link-State Update)
作用:对LSR进行回应,或者定时发送LSU来更新区域中的LSDB,发送的是真正需要的LSA的内容
特殊字段功能:
Number of LSA,指定此报文中共发送的LSA数量
LSAs:一条条具体的LSA完整的信息,可以有多个LSA的信息
在这里插入图片描述
(5)ACK包
作用:用来在收到对端的LSU之后返回的确认报文,内容是需要确认的LSA头部
特殊字段:
1.LSA Headres:LAS头部信息
在这里插入图片描述

四.OSPF邻居建立过程

首先对邻居关系和邻接关系要区分开,两台路由器相互之间的状态是2-way时则表明邻居关系建立,当邻居关系位FULL时则表明邻接关系建立
1.邻居关系变化过程
down->init->2-way->exstart->exchange->loading->full
down:表示还没有建立起来的邻居关系,没有检测到邻居的存在
init:收到了HELLO包,但是包中的邻居信息中没有自己的路由器ID
2-way:收到了HELLO包,包中的邻居信息包含自己的路由器ID
exstart:表示正在协商主从关系,即谁先发送DBD
exchange:在主路由器的带领下,开始交换DBD
loading:请求更详细的信息,即交换LSU
full:表示已完全建立邻接关系,数据库已与邻居完全一致

2.邻居建立过程详解
(1)邻居建立过程(down->init->2-way)
多路访问链路中,OSPF首先确定DR和BDR,这能优化广播网络中的信息交换过程,在2-way之后即进行DR和BDR的选举

(2)交换LSDB过程(exstart->exchange)
路由器在交换LSDB之前,会选举出一台主路由器来主导整个交换阶段,决定主路由器的阶段是exstart阶段
exstart:首先一条链路上的路由器初始都认为自己是主路由器,发送空的DBD包(不含LSA的索引,含有RID,MS位,M位,1位都会置1).收到对端的空的DBD后,会比较RID,大的一端将成为主路由器,从路由器还需要发送一个DBD包对主路由器进行响应。至此进入exchange阶段
exchange:在主路由器的带领下开始交换LSDB。主路由器发送的DBD包,从路由器总要作出回应。从路由器发送的DBD包全部是对主路由器发送的DBD包作出的回应,如果主路由器没有要通过的信息了,从路由器还有,那么从路由器就会将M置1,这样主路由器就知道从路由器还有信息要发送,会继续向从路由器发送DBD包,从路由器得以发送有关信息

(3)同步链路状态数据库过程(Loading->Full)
DBD交换完毕之后,路由器就有了邻居的LSA的索引列表,路由器进入Loading状态,开始请求自己没有的LSA,路由器会发送一个LSR来请求多个LSA,对端回复LSU包来告诉路由器他想要的信息,可以通过LSACK来确认对端已经收到了LSU,等到两端均不再发送LSU和LSR则LSDB同步完成,进入FULLL状态

五.DR和BDR的选举

1.DR和BDR存在的意义
DR和BDR是存在于多路访问中,作用是减少区域内的同步次数,降低路由器内存消耗,减少路由流量更新,确保同一区域内拥有相同的DR和BDR

2.选举过程
DR和BDR的选举过程是非抢占的
先比较优先级优先级较大的将被选举为DR和BDR,若优先级相同,再看RID,RID大者胜出,若优先级为0,则意味着不进行DR和BDR的选举
非DR和BDR,发送给DR和BDR时所使用的组播为224.0.0.6,DR和BDR发送给非DR和BDR使用的是组播224.0.0.5

六.LSA

1.LSA基本概念
LSA是路由器建立的用来描述链路状态信息的一种数据结构,保存在LSDB中,承载在LSU中发出,描述的是链路或接口的状态及每条链路的成本

2.最新LSA的判定规则
·更高的序列号
·校验和,越大越新
·老化时间
·更小的LS年龄

3.LSA类型
类型1:路由器LSA(Router Link States)
Link-state ID:源路由器ID
通告路由器:OSPF路由器
通告范围:只在特定区域内泛洪
通告内容:
·路由器在区域内的接口和接口所连接的邻居(链路的开销等),路由器直连链路状态
·网络连接类型
·是否为ABR
在这里插入图片描述
在这里插入图片描述
类型2:网络LSA(NET Link-State)
链路状态ID:DR的IP接口地址
通告路由器:DR和BDR
通告范围:在特定的区域内泛洪,只有存在在DR和BDR的网络中才会出现
通告内容:通告的是一个传输子网,列出了构成中转网络的所有路由器,包括链路的子网掩码,链路状态等信息(即与DR和BDR由关联的所有路由器)
在这里插入图片描述
在这里插入图片描述
类型3:汇总LSA (Summary Net Link State)
链路状态ID:目的网络的地址
通告路由器:ABR
通告范围:区域间通告,由一个区域通告给另一个区域,
通告内容:将本区域内的1类和2类LSA进行汇总发送给其他区域(非骨干–》骨干)。通告了源区域中的子网,掩码,以及ABR到目的的开销,即某个区域到到另一个区域中某台路由器的开销就是本地到ABR的开销,加上3类LSA中通告的开销(LSA只能由发出的路由器更新和删除,其他路由器只负责转发)
类型LSA的生成和传播规则:
·ABR只会将来自骨干区域中的3类LSA进行SPF算法,得出路由表,再将创建的LSA发送进非骨干区域,而不会对于来自非骨干区域中的LSA进行操作(一个区域中有两个ABR的问题),但这些LSA会存在于非骨干区域的LSDB中,并且在非骨干区域中泛洪
·LSA的泛洪,从非骨干区域到骨干区域,只会考虑区域内路由
·LSA的泛洪,从骨干区域到非骨干区域,会考虑区域内路由,也会考虑区域间路由

在这里插入图片描述
在这里插入图片描述
类型4:ASBR汇总LSA
链路状态ID:ASBR的路由器ID
通告路由器:最原始的是有外部路由引入的区域的ABR,之后再由各个区域的ABR修改度量值后再传入各自区域
通告范围:除了末节区域的整个OSFP域
通告内容:如何到达ASBR
4类LSA的泛洪:最原始ABR将该LSA注入到骨干区域(携带的度量值为ABR到ASBR的距离),骨干区域中的ABR收到后,修改度量值(为原始开销加上ABR到原始通告ABR的距离)后通告进非骨干区域(非骨干区域路由器中到ASBR的度量值为收到的4类LSA加上到ABR的距离)
在这里插入图片描述
类型5:自治系统LSA
链路状态ID:通告进自治系统的外部网络号
通告路由器:ASBR的RID,ABR只转发不修改
通告范围:除了末节区域的整个OSPF自治系统

在这里插入图片描述
类型7:NSSA外部LSA
链路状态:引入的外部网络号
通告范围:只存在于NSSA区域,在ABR处被当作5类LSA泛洪出去。转换为5类LSA之后,将保留一个地址(Forward Address),为ASBR的接口地址,其他区域到外部的路径实际上是去到保留地址的路径在这里插入图片描述

4.有关LSA的特性及操作
(1)接口失效后,LSA的运作情况
发送新的类型1LSA告诉邻居,没有了链路的信息
(2)产生LSA的路由器身份
区域内路由器产生:1类和2类LSA
ABR产生:3类和4类LSA
ASBR产生5类和7类LSA

七.OSPF区域类型和结构

1.区域类型
(1)骨干区域:所有区域必须连接骨干区域
(2)标准区域:接收所有内部和外部的路由信息
(3)末节区域:不接受自治系统外部的路由信息(不接受4类和5类LSA)
(4)完全末节区域:只接收区域内部路由信息 思科专用,通过默认路由和别的区域相连(不接受3,4,5类LSA,通过默认路由与外部网络通信)
(5)NSSA:接收区域路由和有限的外部路由信息 限制自治系统外信息,NSSA区域中可以有ASBR
(6)完全NSSA:只接收区域内的路由信息和有限的外部路由信息

2.OSPF末节区域的默认路由
(1)末节区域,完全末节区域,完全NSSA区域会自动生成一条区域间的默认路由,NSSA区域不会自动生成,需要手动配置一下

八.OSPF网络类型

1.点到点连接
将一对路由器连接起来的网网络,使用的是PPP HDLC协议
使用组播224.0.0.5来发送各种数据包

2. 广播
多路访问网络,如以太网,需要DR和BDR的选举
通常以组播发送HELLO报文,LSU报文,和LSACK报文,以单播形式发送DD和LSR报文
DR和BDR给非指定路由器发送消息使用的是组播224.0.0.5
非指定路由器给DR和BDR发送消息使用的是组播224.0.0.6

3.非广播多路访问(NBMA, Non-Broadcast Multiple Access)
连接的路由器超过两台但是没有广播功能,帧中继网络和ATM网络
所有数据包均单播发送,指定邻居

4.点到多点
Hello包以组播形式发送,其他类型数据包由单播发送

九.OSFP路径选择

1.OSPF路由类型
·O,区域内路由
·OIA,区域间路由
·OE2,外部路由,开销值在区域内传播时不改变
·OE1,外部路由,开销值在区域内传播时改变
·ON2,在NSSA区域中存在,类似OE2
·ON1,在NSSA区域中存在,类似OE1
·OIA,区域间默认路由
·O
N2,NSSA区域中默认路由

2.选路规则
以下按优先级排列,先出现的优先级最高
·区域内路由
·区域间路由
·E1/N1路由,这两类路由被看作是平等的
·E2/N2路由

十.OSPF几个进阶分析题

1.5类LSA中的转发地址问题
(1)OSPF在引入外部路由时,若产生的类LSA的转发地址为0.0.0.0,则其他路由器在计算到达该外部网络时,将考虑如何到达ASBR,即产生5类LSA的路由器来计算处去往外部路由的下一跳地址
(2)在OSPF引入外部路由时,若产生的5类LSA的转发地址不为0.0.0.0,则其他路由器在计算到达该外部网络时,将考虑如何到达转发地址来计算出外部路由的下一跳地址
当同时满足以下三种情况时,OSPF产生的5类LSA的转发地址不为0.0.0.0
·引入的这条外部路由,其对应的出接口启用了OSPF
·引入的这条外部路由,其对应的接口未设置为passive-interface
·引入的这条外部路由,其对应的出接口的OSPF类型为broadcast
这种情况下,产生的5类LSA,其FA地址等于该引入的外部路由的下一跳地址
在这里插入图片描述
2.7类LSA中的转发地址
若在NSSA区域中引入外部路由,则产生的Type 7LSA中其转发地址均不为0,具体转发地址为该ASBR上启用OSPF的接口的IP地址
(1)若路由器上loopback接口开启了OSPF,则转发地址等于启用OSPF的loopback地址,若存在多个的话,则转发地址等于最后启用OSPF的Loopback接口的IP地址
(2)若该路由器上没有loopback接口开启了OSPF,那么FA地址等于启用了OSPF的物理接口地址,若存在多个,则转发地址为最后启用OSPF的物理接口的IP地址

3.去往外部的路由生成
(1)收到5类LSA,检查LSA中的转发地址,若为0.0.0.0则生成的路由本质上是到ASBR的路由,此时查找4类LSA,根据4类LSA中的度量值来计算去往外部的路由(考虑OE1和OE2,OE1加自治系统内部的开销,OE2不加自治系统内部的开销)
(2)若转发地址不为0.0.0.0,则去往外部的路径,即为去往转发地址的路径

4.虚链路问题
在这里插入图片描述
图中底下两台路由器在区域0中,左边两台为区域14,右边两台为区域23,上边两台为区域12,问最少需要几条虚链路,才能保证正常运行,几条虚链路才能最可靠
解析:
最少要一条即可,即路由器1和4或者2和3
原本区域0,14,23就在域内,只是缺少区域12,那在1和4之间建立虚链路就可以满足最基本要求
最可靠的话,3条

发布了24 篇原创文章 · 获赞 10 · 访问量 2379

猜你喜欢

转载自blog.csdn.net/flat0809/article/details/94601183