ospf链路状态路由协议
一、OSPF基本慨念
1、ospf特性
①、ospf路由信息传递与路由计算是分离的
②、ospf是基于SPF(最短路径优先算法)计算的
③、ospf是以累计链路开销 作为选路参考值
2、Router-ID
2.1、Router-ID:唯一标识一台OSPF路由器,每台运行OSPF的路由器都有一个Router-ID
2.2、Router-ID是一个32位无符号的整数
2.3、Router-ID选举规则 建议手动配置,如果没有手动配置选举如下:
①、路由器使用Loopback接口最大的IP地址作为Router-ID
②、如果没有Loopback,使用物理接口中最大的IP地址作为Router-id
2.4、OSPF路由器的Router-id重新修改后,通过重置ospf进程更新Router-id
3、OSPF报文
可选项:
DN:用于解决mpls中的环路问题
O:用于流量工程
DC:按需链路
L:校验
N/P:NSSA,可以处理LSA-7;P位只会出现在LSA-7的报文中
MC:组播报文转发
E:允许泛洪LSA-5
MT:始发路由器支持多拓扑OSPF
3.1、Hello报文:用于发现、建立和维护邻居关系
3.2、DD(数据库描述)报文:描述LSDB情况,交换链路状态数据库摘要
3.3、LSR(链路状态请求)报文:请求自身缺少的链路状态信息
3.4、LSU(链路状态更新)报文:发送详细的链路状态信息,回应LSR的请求
3.5、LSAck(链路状态确认)报文:收到LSU后进行确认,发送确认报文
DD报文类型
LSR报文类型
LSU报文类型
LS Ack报文类型
4、Hello间隔时间
Hello | 间隔时间 | 死亡时间 |
---|---|---|
P2P | 10s | 40s |
MA | 10s | 40s |
P2MP | 30s | 120s |
NBMA | 30s | 120s |
5、OSPF邻居状态机
5.1、Down 状态:初始状态,在NBMA网络上,Down状态仍然可以静态配置的邻居发送Hello报文
5.2、attempt 状态:此状态只存在NBMA网络中,没有收到邻居的任何信息,但是周期性的向邻居发送报文,尽最大努力建立邻居,每隔Hello间隔就发送Hello报文。需要收到指定邻居。
5.3、Init 状态:收到Hello报文后状态为Init,但是尚未与邻居建立双向通信关系
5.4、2-Way 状态:收到Hello报文中包含自己的Router-id,则状态为2-way。如果需要和邻居关系建立成邻接关系则进入Exstart状态,否则,停留在此状态。
2-Way状态下是双向通信已建立,但没有形成邻接关系,此状态下,进行DR和BDR的选举1、DR和BDR作用:减少邻接关系,降低ospf协议流量
2、DR主要负责在MA网络中建立和维护邻接关系并负责LSA的同步,
3、DR(指定路由器)的选举过程及时间:
首先所有的路由器都会成为DR-other,先选举BDR,BDR发现没有DR,会自动成为DR,DR-other发现没有BDR,在选举出来一个BDR,DR的选举时间等于Deadtime,只有在广播网络中才会选举DR和BDR,并且DR和BDR不能被抢占
4、DR和BDR的选举规则:是基于接口选举的
①、接口的DR优先级越大越优先
②、接口DR优先级相同时,Router-id越大越优先5.5、Exstart 状态:此状态路由器开始向邻居发送DD报文,DD报文不包含链路状态描述。开始协商主从关系并确定DD报文的序列号
5.6、Exchange 状态:交互DD报文,路由器发送包含链路状态信息摘要的DD报文,描述本地LSDB的内容
5.7、Loading 状态:DD报文交互完成后进入此状态,相互发送LS Request报文请求LSA ,发送LS Update报文通告LSA。
5.8、Full 状态:LSR重传列表为空,此状态为Full。形成邻接关系,路由器的LSDB已经同步
6、影响OSPF邻接关系建立的因素(10条)
6.1、Router-ID必须唯一
①、相邻路由器的router-id 不能相同,相同不能建立邻居
②、同一个区域不相邻设备的router-id可以相同,但是影响路由学习
③、不同区域不相邻的设备的router-id可以相同,不会影响路由学习
6.2、接口区域ID:相邻的直连接口区域ID必须相同,区域 ID 包含在 ospf 头部,双方不一致时无法建立邻居
6.3、认证类型必须一致
6.4、MA网络掩码必须一致(为什么 p2p 中掩码可以不一致):
MA 网路中掩码必须一致,因为 MA 网络中所有路由器共用一个网段,只有一个 2L 的 Network
来描述当前的网络拓扑和网络号,所以当掩码不一致时,无法通过一个 2LSA 描 述不同的掩码。P2P 网络中掩码之所以可以不一致是因为 P2P
中有 1LSA 的 stub 类型来 描述每一个网络的掩码信息,并且在 PPP 链路中 NCP 阶段,两台路由器会互推自己的 IP
地址,并且以 32 位主机路由的方式加入自己的路由表,所以 P2P 网络中建立邻居不需要 掩码一致。
①.接口网络类型如果是Broadcast,MA网络,掩码长度必须一致
②.接口网络类型如果是P2P,P2P网络,掩码长度可以不同
③.接口网络类型如果是P2MP,P2MP网络,掩码长度可以不同(通过在接口下配置ospf p2mp-mask-ignore命令忽略检查掩码长度)
6.5、MA 网络中优先级不能为零,DR 选举不成功。
6.6、区域类型(option 字段中的 E 位与 N 位):
E 位代表能处理外部路由,在 OSPF 中外部路由就是指 5lsa,N 位代表 NSSA 区域
E | N | 区域类型 |
---|---|---|
0 | 0 | Stub |
0 | 1 | Nssa |
1 | 0 | 普通/骨干区域 |
6.7、hello-dead 间隔(区别网络类型)
网络类型 | Hello time | Hold time |
---|---|---|
P2P | 10 | 40 |
MA | 10 | 40 |
NBMA | 30 | 120 |
P2MP | 30 | 120 |
6.8、 MTU必须一致(默认不检查,不一致时会停留 在哪种状态):
如果开启了 MTU 检查,如果双方 MTU 不一致,则MTU值小的一方停留在 Exstart 状态, 另一方停留在 Exchange 阶段。
6.9、网络类型(四种,当两边不一致是否一定建立不了邻居,如果能建立会不会有问题, 哪种网络类型发送单播,哪种发送组播)
双方网络类型不一致,不能建立 FULL 的邻接关系,但如果修改 hello,dead 时间, 可以建立 full 的邻居关系(除了 NBMA这种网络类型,NBMA 即使修改时间也无法和其他网络类型建立邻居关系,因为其收发 hello 报文都是单播),MA 与 P2P、P2MP 修改时间 可以建立 FULL 的邻居关系,但不能计算路由。
类型报文 | Hello | DBD | LSR | LSU | LSAck |
---|---|---|---|---|---|
NBMA | 单播 | 单播 | 单播 | 单播 | 单播 |
V-link | 单播 | 单播 | 单播 | 单播 | 单播 |
P2MP | 组播 | 单播 | 单播 | 单播 | 单播 |
MA | 组播 | 单播 | 单播 | 组播 | 组播 |
P2P | 组播 | 组播 | 组播 | 组播 | 组播 |
6.10、不要设置silence(静默接口)特点:OSPF 的 silence 接口,不收不发
二、OSPF域间路由
1、LSA头部
链路状态老化时间:产生LSA时,时间为0,传递过程中递增,老化时间到达MaxAge(3600s)时,该LSA不再被用于路由计算
可选项:同hello中的可选字段
DN:用于解决mpls中的环路问题
O:用于流量工程
DC:按需链路
L:校验
N/P:NSSA,可以处理LSA-7;P位只会出现在LSA-7的报文中
MC:组播报文转发
E:允许泛洪LSA-5
MT:始发路由器支持多拓扑OSPF
链路状态类型(LS type):LSA类型
链路状态ID(LS ID):LSA标识,不同的LSA类型,该字段的定义是不同的。
①LSA-1:产生这条LSA的路由器的router ID
②LSA-2:DR的接口IP地址
③LSA-3:所描述网段的网络地址
④LSA-4:ASBR的router ID
⑤LSA-5:需要到达的AS外部的网络地址
⑥LSA-7:需要到达的AS外部的网络地址
通告路由器:产生该LSA的路由器ID
链路状态序列号:该LSA的序列号,用于判断LSA的新旧或是是否存在重复
校验和:校验和
长度:LSA总字节长度
注:LS type,LS ID,通告路由器识别一条LSA。三者相同则认为是同一个LSA
2、LSA类型
2.1、Router-LSA(1类)
①、描述本区域内的链路状态信息
②、传播范围:本区域内传播
Router-ID | Link ID | Link Data |
---|---|---|
P2P | 邻居的 router ID | 自己的接口 IP |
Stub | 自己的接口网段 | 掩码 |
Transit | 伪节点(DR)的接口 IP | 自己的接口 IP |
V-link | 邻居的 router ID | 自己的接口 IP |
2.2、Network-LSA
①、描述MA网络中的拓扑信息
②、传播范围:本区域内传播
③、通告着DR路由器
二类LSA中主要内容:
①、Type:二类LSA
②、Ls id:DR的接口IP地址
③、Adv rtr:产生此二类的路由器Router-ID,即DR的Router ID
④、Net mask:该网段的网络掩码
⑤、Attached Router:连接到该网段的路由器列表,呈现了此网段的拓扑信息
2.3、Network-Summary-LSA(3类LSA)
①、描述区域间的路由,用来通告区域外部的地址
②、由ABR路由器始发的
Network-Summary-LSA中主要包括以下内容:
Lsid:目的网段地址
Adv rtr(产生3类LSA的额router-id):ABR的Rouer-id
Net mark:目的网段的网络掩码
Mrtric :ABR到达目的网段的开销值
2.4、SABR-Summary-LSA(四类)
①、由ABR路由器始发的
②、描述如何从ABR到达ASBR
③、为五类LSA服务的
④、四类LSA只能在一个区域内泛洪,五类LSA每泛洪到一个区域,相应区域的ABR都会生成一条新的四类LSA来描述如何到达ASBR
SABR-Summary-LSA(四类)中主要包括以下内容:
Ls id:ASBR的Router-id Adv rtr :
产生四类LSA的ABR的router-id Metric :
从该ABR到达此ASBR的OSPF开销值
2.5、AS-External-LSA(5类)
①、始发与ASBR路由器
②、传播范围:整个OSPF区域泛洪 ③、网络掩码:外部路由的目的网络掩码
④、E:表示外部路由使用的度量值类型,置0位type-1,置1位type-2
⑤、度量值:ASBR到达外部路由的cost
⑥、转发地址:内部数据包到达外部路由目的必须经过的地址
⑦、外部路由标记:只有外部路由可以配置携带标记,用于部署路由策略
五类LSA中包含的主要信息:
①、Ls id:目的网段地址
②、Adv rtr:ASBR的Router-id
③、Net mark:目的网段的网络掩码
④、Metric:ASBR到达目的网络的开销,默认值为1
⑤、Tag:外部路由信息可以携带一个嗯Tag标签,用于传递该路由的附加信息,通常用于路由策略,默认值为1。
⑥、Forwardiing address地址
2.6、NSSA-External-LSA(7类)
①、LSA-7的格式与LSA-5相同,只是在LSA-7中,LSA头部中的可选项P位置1,链路状态类型会标识LSA-7,链路状态ID为需要到达的AS外部的网络地址。
②、在非纯末梢区域内始发于ASBR路由器(在非纯末梢区域内部)的LSA通告。
③、只在始发这个LSA的非纯末梢区域内泛洪。
④、非纯末梢区域内的ABR可以将这类LSA转换为LSA5,然后再骨干区域内泛洪。
3、外部路由类型(Type)
3.1、第一类外部路由(External Type-1 ) Cost :AS内部路由开销值+AS外部开销值
3.2、第二类外部路由(External Type-2 ) Cost :AS外部路由开销值 (这类路由可信度较低)
3.3、默认情况下:OSPF外部路由采用的是第二类外部路由
4、Forwardiing address 地址
4.1、FA 地址的作用,及产生条件,5 类 LSA 携带 FA 与不携带 FA 的区别。
①、FA 的作用:解决次优路径和放环 (FA地址只存在5类LSA中)
(1)FA地址有FA = 0和FA != 0两种情况
②、5类LSA的 FA地址 不等于 0 产生的条件:
(1)下一跳网段不是 P2P 类型
(2)下一跳网段不是P2MP 类型
(2)下一跳接口所在网段必须宣告进 OSPF
(3)下一跳接口不能被 silent
同时满足以上四个条件时,FA地址为ASBR路由器到外部路由的下一跳地址
③、5类LSA中如果携带 FA 地址,则直接选择通过 FA 的地址去往目标网段,如果没有携带 FA地址,则选择通过 ASBR 去往目标网段
4.2、7 类 LSA 中的 P 位的作用:
为了将 NSSA 区域引入的外部路由发布到其它区域,需要把 Type7-LSA 转化为Type5-LSA 以便在整个 OSPF网络中通告。
•P-bit(Propagate bit)用于告知转化路由器该条 Type7LSA 是否需要转化。
•缺省情况下,转换路由器的是 NSSA 区域中 Router ID 最大的区域边界路由器(ABR)。
•只有 P-bit 置位并且 FA(Forwarding Address)不为 0 的 Type7LSA 才能转化为 Type5 LSA。 FA用来表示发送的某个目的地址的报文将被转发到 FA 所指定的地址。
•区域边界路由器产生的 Type7LSA 不会置位 P-bit。
•NSSA 区域中的默认路由不会进行 7 转 5。
5、避免域间路由环路传递规则
①、所有非骨干区域都要和骨干区域直连
②、ospf从骨干区域传来的3类LSA不在传回骨干区域
6、虚连接
虚连接可以在任意俩个区域边界路由器上建立,但要求这两个区域边界路由器都有端口连接到一个相同的非骨干区域
三、OSPF特殊区域
1、Stub区域(末节区域)
①、仅存在一类、二类、三类LSA,只能有一个连接其他区域的ABR,没有ASBR。
②、不允许四类、五类LSA在Stub区域传播
③、Stub区域ABR将生成一条缺省路由(对应的三类LSA),并发不给Stub区域中其他路由器。
④、Stub区域中路由器的LSDB,路由表规模都会大大减少
⑤、配置Stub区域需要注意以下几点:
(1)骨干区域不能被配置为Stub区域
(2)如果将一个区域配置成Stub区域,则该区域中所有路由器都必须配置Stub
(3)Stub区域不能存在ASBR,自治系统外部路由不能在本区域内传播
(4)虚连接不能穿越Stub区域建立
⑥、配置Stub区域后,所有自治系统外部路由均以 一条三类的默认路由代替
⑦、Stub区域除路由条目减少外,当外部网络发生变化后,Stub区域内的路由器不会直接受到影响
2、Totally Stub区域(完全末节区域)
①、仅存在一类、二类LSA,只能有一个连接其他区域的ABR,没有ASBR,且不能有虚连接。
②、不允许三类、四类、五类LSA在Totally Stub区域传播
③、Totally Stub区域内路由器对其他区域访问是通过本区域ABR所产生的三类LSA缺省路由实现的
④、与Stub区域配置的区别是:在ABR上配置no-summary参数
⑤、当其他自治系统网络发生变化后,Totally Stub区域内的路由器不会直接受到影响
3、NSSA区域(次末节区域)
①、存在一类、二类、三类LSA,可以有多个ABR,可以有多个ASBR。
②、不允许存在其他区域四类、五类LSA在本区域传播
③、可以引入外部路由
④、ASBR可以从直连的外部AS引入 7 类LSA,并且在ABR上进行 7 类转 5 类
4、Totally NSSA 区域(完全次末节区域)
①、存在一类、二类LSA,可以有多个ABR,可以有多个ASBR。
②、不允许存在其他区域三类、四类、五类LSA在本区域传播
③、可以引入外部路由
④、ASBR可以从直连的外部AS引入 7 类LSA,并且在ABR上进行 7 类转 5 类
四、OSPF 其他特性
1、区域间路由汇总
1.1、区域间路由汇总作用:
①、减少路由表规模
②可以避免网络中的路由振荡,提高网络稳定性
1.2、区域间路由汇总只能在ABR路由器上汇总,汇总时,ABR会以网段为单位生成三类LSA,把路由信息发送给其他区域
1.3、汇总命令
ospf 1 //ospf进程下
area 0 //区域下
abr-summary IP地址 子网掩码
2、外部路由汇总
2.1、外部路由汇总在ASBR路由器上汇总
2.2、汇总命令
ospf 1 //ospf进程下
asbr-summary IP地址 子网掩码
3、ospf 定时更新
3.1、LSA每1800s更新一次,3600s失效(老化时间),当计时器超时LSA将从LSDB中删除
4、ospf 触发更新
4.1、当链路状态发生变化之后,立即发生链路状态更新,其他路由器收到更新消息后立即进行路由计算,快熟完成收敛
5、ospf 认证功能
5.1、两种认证方式:
(1)区域认证 (2)接口认证
当两种认证都存在时,优先使用接口认证方式。
5.2、认证模式分为:
①、Null不认证
②、simpel(明文认证)
③、md5认证
④、HMAC-MD5认证