OSPF介绍
OSPF(Open Shortest Path First,开放最短路径优先)OSPF直接工作在IP层之上,IP协议号89,OSPF以组播方式发送协议包!
组播地址:224.0.0.5 / 224.0.0.6
链路状态数据库结构
-
邻居表:
- 也被称为邻接数据库
- 包含邻居列表
-
拓扑表:
- 通常被称为链路状态数据库(LSDB)
- 包含该区域或网络中的所有路由器及其连接链路
- 区域内的所有路由器有相同的LSDB
-
路由表:
- 通常称为转发数据库(forwarding database)
- 包含到目的地的最佳路径
链路状态数据库结构:网络结构
- 链路状态路由协议通过OSPF协议执行具有层次网络结构。
- 两层的层次结构由以下部分组成:
- 中转区域 (骨干区域 0)
- 常规区域 (非骨干区域)
- 两层的层次结构由以下部分组成:
OSPF 区域特点:
- 最大限度地减少路由表条目
- 本地区域内拓扑变化的影响
- 在区域边界阻止LSA的泛洪
- 需要分层网络设计
- 路由器A和B都是骨干路由器
- 骨干路由器属于区域0
- 路由器C,D和E被称为区域边界路由器
- ABR连接着骨干区域和非骨干区域
OSPF的邻接
- 路由器通过交互Hello报文发现邻居。
- 路由器在检查Hello包中的某些参数或选项后邻居建立成功。
OSPF邻接建立
-
点对点WAN链路:
- 建立全互联的邻接关系.
-
LAN链路:
- 只会与DR和BDR建立全互联的邻接关系
- DRother保持two-way状态
-
一旦建立邻接关系, 通过交互LSA开始同步LSDB
-
LSA将以可靠的方式在区域(或网络)中泛洪
OSPF Calculation(算法)
- 路由器通过将Dijkstra的SPF算法应用于链路状态数据库,找到目的地的最佳路径,如下所示:
- 同一区域的路由器拥有相同的 LSDB
- 在区域中的每个路由器将自己作为根
- 到特定目的地的链接总成本最低的路径优选
- 最佳路由放入转发数据库(路由表)中。
OSPF报文类型
- Hello 报文
- Database Description 报文
- Link-State Request 报文
- Link-State Update 报文
- Link-State Acknowledgment 报文
1、OSPF分组封装在IP分组的有效负载中,不使用TCP,利用LSAck来实现自己的确认机制。
2、IP报头中,协议标示符89表示OSPF分组。
OSPF建立邻接关系的过程详细描述
流程描述如下 |
---|
1、OSPF路由器接口up,发送Hello包,(NBMA模式时将进入Attempt状态)。 |
2、OSPF路由器接口收到Hello包,进入Init状态;并将该Hello包的发送者的Router ID,添加到Hello包(自己将要从该接口发送出去的Hello包)的邻居列表中。 |
3、OSPF路由器接口收到邻居列表中含有自己Router ID的Hello包,进入Two-way状态,形成OSPF邻居关系,并把该路由器的Router ID添加到自己的OSPF邻居表中。 |
4、在进入Two-way状态后,广播、非广播网络类型的链路,在DR选举等待时间内进行DR选举。点对点没有这个过程。 |
5、在DR选举完成或跳过DR选举后,建立OSPF邻接关系,进入exstart(准启动)状态;并选举DBD交换主从路由器,以及由主路由器定义DBD序列号,Router ID大的为主路由器。目的是为了解决DBD自身的可靠性。 |
6、主从路由器选举完成后,进入Exchange(交换)状态,交换DBD信息。 |
7、DBD交换完成后,进入Loading状态,对链路状态数据库和收到的DBD的LSA头部进行比较,发现自己数据库中没有的LSA就发送LSR,向邻居请求该LSA;邻居收到LSR后,回应LSU;收到邻居发来的LSU,存储这些LSA到自己的链路状态数据库,并发送LSAck确认。 |
8、LSA交换完成后,进入FULL状态,所有形成邻居的OSPF路由器都拥有相同链路状态数据库。 |
9、定期发送Hello包,维护邻居关系。 |
如下图:
OSPF状态机
OSPF的邻居状态机 | |
---|---|
1、Down | 本地一旦发出hello包,进入下一状态; |
2、Init(初始化) | 本地接收到的hello包中若存在本地的RID,进入下一个状态; |
3、2-way(双向通信) | 邻居关系建立标志,条件匹配:点到点网络直接进入下一状态;MA网将进行DR/BDR选举(40s),非DR/BDR间不能进入下一状态; |
4、Exstart(预启动) | 使用类hello的DBD包进行主从关系选举,RID数值大为主,主优先进入下一状态机; |
5、Exchange(准交换) | 使用真正的DBD包进行主从关系选举,RID数值大为主,主优先进入下一状态; |
6、Loading(加载) | 使用LSR/LSU/LSack来获取未知LSA信息; |
7、Full(转发) | 邻接关系建立的标志; |
卡在各个状态的原因 | |
卡在Down状态 | OSPF没有运行; |
卡在Init状态 | 没有收到对方的hello包; |
卡在2-way状态 | MA网络没法选举; |
卡在Exstart状态 | MTU不匹配; |
卡在exchange状态 | 包交互有问题,发出DBD后没有收到ACK; |
卡在Loading状态 | LSA加载不完全,包交互有问题; |
OSPF Router ID
- 在OSPF网络内通过OSPF router ID标识路由器。
- LSDBs 使用OSPF的 Router ID 区分不同的路由器。
- 使用Loopback接口或手动配置Router-id保持Router-ID稳定。
Router ID选举顺序 |
---|
1、手动设置的Router ID |
2、活跃的Loopback接口中IP地址较大的 |
3、活跃的物理接口中IP地址较大的 |
OSPF网络类型
OSPF网络类型包括以下几种: | |
---|---|
1、loopback 环回口 | 1、环回口在OSPF中式一类单独的网络类型2、环回口下配置的IP,不管掩码配置为多少,发出路由时都会当做/32的主机路由 |
2、point-to-point 串口、帧中继的点到点子接口 | 1、如果二层的协议为PPP、HDLC等,则OSPF网络类型为P2P 2、如果帧中继子接口类型为P2P的,则OSPF网络类型也为P2P 3、不选举DR、BDR 4、使用组播地址224.0.0.5 5、OSPF能够根据二层封装自动检测到P2P网络类型 |
3、broadcast 以太网口/快速以太口 | 1、通常出现在以太网 2、选举DR、BDR 3、所有路由器均与DR及BDR建立邻接关系. 4、使用组播地址224.0.0.5及224.0.0.6 |
4、NBMA 帧中继 | 1、使用物理接口默认为NBMA 2、使用子接口默认为点对点 3、使用NBMA需要使用neighbor命令指定邻居 |
5、point-to-multipoint
1、物理接口:无
2、自动建立
3、hello:30s /Dead时间:120s
4、不选举DR/BDR
5、特点:学习对方的主机路由
6、point-to-multipoint no-broadcast
1、物理接口:无
2、hello时间:30s /Dead时间:120s
3、无DR不能自动建立
4、手工指定单播邻居
5、特点:学习对方主机路由