OSPF开放式最短路径优先协议-个人总结
OSPF 介绍
- OSPF(Open Shortest Path First)开放式最短路径优先协议:是一个内部网关协议(IGP),是一种链路状态路由协议,采用最短路径优先(SPF)算法计算到达目的地的最短路径,由此构建路由表;
OSPF 网络类型
- 点到点网络(P2P):不选举DR、BDR,二层协议为PPP、HDLC等时,自动检测为P2P网络类型;
- 广播多路访问(Broadcast):需要选举DR、BDR(这样在一个网段内存在多台路由器时,无需两两互相建立联系,避免大量开销而浪费资源)。使用Hello消息通过组播地址224.0.0.5周期性广播发现邻居。DR、BDR侦听组播224.0.0.6;
- 非广播多路访问(NBMA):需要选举DR、BDR,采用静态发现即手动指定邻居(比动态发现邻居减少大量的流量)。由DR负责向其他路由器逐一发送Hello消息;
- 点到多点网络(P2MP):只能手动强制更改至该网络类型;
网络类型 | 建立邻居和学习路由的说明 |
---|---|
P2P | 可以与Broadcast、NBMA建立邻居关系,但无法学习路由;可以与P2MP建立邻居关系,且能学习到路由(hello time和dead time一致的情况下) |
Broadcast | 可以与P2P建立邻居关系,但无法学习路由;可以与NBMA建立邻居关系,且能学习到路由(hello time和dead time一致的情况下) |
NBMA | 可以与P2P建立邻居关系,但无法学习路由;可以与Broadcast建立邻居关系,且能学习到路由(hello time和dead time一致的情况下) |
P2MP | 可以与P2P建立邻居关系,且能学习到路由(hello time和dead time一致的情况下) |
OSPF 报文和格式
OSPF首部报文格式:(byte)
部分字段 | 说明 |
---|---|
Packet Type | 对应5类报文(如1:Hello) |
AuType | 认证类型,为0代表不认证,1为简单认证,2为MD5认证 |
-
Hello报文:用于建立、发现和维护邻居关系;
部分字段 | 说明 |
---|---|
HelloInterval | 默认10s |
Options | 可选项,E为允许5类LSA泛洪,N/P为允许7类LSA泛洪 |
Rtr Pri | 指定优先级,默认1,为0代表不参与DR/BDR选举 |
RouterDeadInterval | 指定路由器失效时间,默认40s |
-
DD报文:用于描述本地路由器的LDSB(即LSA摘要),还有选举主从(空的LSA首部);
部分字段 | 说明 |
---|---|
Options | 可选项,E为允许5类LSA泛洪,N/P为允许7类LSA泛洪 |
I | 多个连续报文的第一个置1 |
M | 多个连续报文的最后一个置0 |
MS | 主从选举,1代表主Master,0代表从Slave |
-
LSR报文:用于请求相邻路由器LSDB里的部分数据;
-
LSU报文:用于应答LSR报文,也用于向对端路由器发送所需的真正LSA完整内容;
-
LSAck报文:用于确认收到了LSU报文,内容含有所确认的LSA首部;
OSPF 状态机
流程图预览:
- Down:初始状态,还未收到任何Hello报文;
- Attempt(只在NBMA才有的状态):定期向手工配置的邻居发生Hello报文,且一直未收到对方的Hello报文,如果超过Dead time没收到,转为Down状态;
- Init:已收到Hello报文(目的地址为组播224.0.0.5),同时该Hello报文中的邻居列表里还没有我的RouterID即对方未收到我的Hello报文,立刻单播发送给对方Hello报文,报文中的邻居列表包含自己和对方的RouterID;
- 2-Way:此时双方都收到了对方的Hello报文,建立了邻居关系(在广播和NBMA网络中,会选举DR、BDR,优先根据接口优先级越大越优先 > RID越大越优先,DROther之间会停留在该状态);
- ExStart:开始发送DD报文(不包含链路信息),选举主从关系(RouterID大的为主),确定DD***;
- Exchange:交换DD报文(保护LSA首部),描述本地LSDB;
- Loading:发送LSR,通过更新LSU、LSA报文,互相补充缺少的DD报文,完善LSDB;
- Full:此时邻居路由器的LSDB同步完成,形成了邻接关系;
停留状态 | 原因分析 |
---|---|
Down | 一直没收到邻居的Hello报文 |
Attempt | 已发送单播Hello报文,但是没有收到Hello报文 |
Init | 收到了Hello报文,但该报文邻居列表不包含接受路由器 |
2-Way | 广播和NBMA网络中,DROther之间会正常停留在该状态 |
ExStart | 邻居路由器直接MTU不匹配或RouterID重复等原因 |
Exchange | 邻居路由器之间MTU不匹配 |
Loading | MTU不匹配或硬件故障 |
OSPF LSA类型
LSA首部:
LS type | Link State ID | Advertising Router |
---|---|---|
Router-LSA(1) | 产生此LSA的路由器RID | 始发对应LSA的路由器RID |
Network-LSA(2) | DR的接口IP地址 | 始发对应LSA的路由器RID |
Summary-LSA(IP network)(3) | 所通告的区域外的网络地址 | 始发对应LSA的路由器RID |
Summary-LSA(ASBR)(4) | 所通告区域外的ASBR的RID | 始发对应LSA的路由器RID |
AS-External-LSA(ASBR)(5) | 所要通告的外部AS的网络地址 | 始发对应LSA的路由器RID |
NSSA AS-External-LSA(7) | 所要通告的外部AS的网络地址 | 始发对应LSA的路由器RID |
- Type1 LSA即Router LSA(路由器LSA):每个OSPF路由器都会产生路由器LSA,内容包含了对应设备物理接口所连接的链路或接口,并且指明了各链路的状态、开销等参数;
Type | Link ID | Link Data |
---|---|---|
1 - Point-to-point connection to anther router | 对端路由器RID | 和网络相连的通告路由器接口地址 |
2 - Connection to a transit network | DR的接口地址 | 和网络相连的通告路由器接口地址 |
3 - Connection to a stub network | 子网号 | 掩码 |
4- Virtual link | 对端路由器RID | 和网络相连的通告路由器接口地址 |
-
Type2 LSA即Network LSA(网络LSA):由DR或BDR产生,内容包含了DR和BDR所在网段的链路状态,也仅在所属的区域内传播;
-
Type3 LSA即Network summary LSA(网络聚合LSA):由ABR产生,内容包含了所连接的某个区域内某个网段的聚合路由(包括缺省路由),并通告非Totally Stub或NSSA区域,达到减少区域内部路由器的路由表表项的目的;
-
Type4 LSA即ASBR summary LSA(ASBR聚合LSA):由ABR产生,内容包含了从该ABR到达OSPF路由域中各个ASBR的路由,通告给整个路由域(仅在普通区域中泛洪);
-
Type5 LSA即Autonomous system external LSA(自治系统外部LSA):由ASBR产生,内容包含了到达AS外部的路由,仅在普通区域中泛洪;
E | 说明 |
---|---|
0:第一类外部路由 | 手动配置,优先级高于第二类外部路由,开销为内外部开销之和 |
1:第二类外部路由 | 默认,优先级低于第一类外部路由,开销为外部开销,忽略内部开销 |
- Type7 LSA即NSSA External LSA(NSSA外部LSA):由ASBR产生,内容同Type5 LSA,但专用于NSSA区域和Totally NSSA区域连接的ASBR向NSSA区域内泛洪外部AS的路由,然后经过NSSA区域ABR上转换为Type5 LSA向OSPF路由域内其他区域中传播;
OSPF 链路类型
- Point-to-point connection to anther router(P2P):网络类型为P2P的接口,在OSPF中的P2P网络里会与末梢链路同时出现(P2P链路描述对端RID及本地接口,末梢链路描述子网);
- Connection to a transit network(传输链路):拥有至少两台路由器的链路,即有OSPF邻居的接口(除了P2P类型);
- Connection to a stub network(末梢链路):该接口没有邻OSPF邻居;
- Virtual link(虚链路):逻辑链路,可以使非直连骨干区域area0的区域通过虚链路逻辑上与骨干区域相连;
OSPF 特殊区域
- Stub区域(末节):把一个非骨干区域配置成Stub区域,不接受Type4 LSA和Type5 LSA,通过ABR自动生成(多一条)的默认路由(Type3 LSA)指向骨干区域;
- Totally stub区域(完全末节):同Stub区域,只是同时不接受Type3 LSA,LSDB中只有一条Type3 LSA默认路由指向骨干区域;
- NSSA区域:不接受Type4 LSA和Type5 LSA,但是可引入外部路由,以Type7 LSA通告出去,在ABR上转换为Type5 LSA向普通区域泛洪,同样ABR会下放一条默认路由(Type7 LSA);
- Totally stub区域:同NSSA区域,不接受Type3 LSA,LSDB中只会存在一条Type3 LSA的默认路由;