OSPF路由协议详解
概述:
OSPF 全称为Open Shortest Path First,也就开放的最短路径优先协议,因为OSPF是由IETF开发的,它的使用不受任何厂商限制,所有人都可以使用,所以称为开放的,而最短路径优先(SPF)只是OSPF的核心思想,其使用的算法是Dijkstra算法。
工作过程:
OSPF特点:
- 可适应大规模网络
- 使用组播更新,属于触发更新(组播地址:224.0.0.5,224.0.0.6)
- 快速收敛
- 使用SPF算法构造无环网络
- 具有区域划分。
- 使用LSA报文来交换路由信息
基本概念:
Router ID:ospf区域内唯一标识路由器的ip地址。
Router ID选取规则:
- 选取路由器loopback接口上数值最高的ip地址
- 没有loopback接口,在物理端口中选取ip地址最高的
- 也可以使用router-id命令指定Router ID(32位公网IP地址)
区域ID:
- 区域ID可以表示成一个十进制的数字
- 也可以表示成一个ip
DR和BDR的选举方式
自动选举DR和BDR
- 网段上Router ID最大的路由器将被选举位DR,第二大的将被选举为BDR
手工选择DR和BDR
- 优先级范围是0~255,数值越大,优先级越高,默认为1
- 如果优先级相同,则需要比较Router ID
- 如果路由器的优先级被设置为0,则不参与选举
OSPF的三张表
- 邻居表
2台路由器的OSPF要协同工作,基本要求就是二者形成全毗邻的邻接关系,而邻居表存储了OSPF路由器邻居的状态和邻居的其他信息。
- 拓扑数据库(LSDB)
OSPF用LSA来描述网络拓扑信息,LSDB中存储着路由器产生或者受到的LSA。
- OSPF路由表
基于LSDB进行SPF算法运算,计算出的路由存储在此表中,也就是说用于实际数据传送的路由存在此处
OSPF中消息数据包的类型(5种)
OSPF协议7种状态分析:
---------------------------- ---------------------------
| | 112.18.17.1/30 112.18.17.2/30 | |
| 路由A |--------------------------------------------------------------------| 路由B |
| | | |
---------------------------- ----------------------------
E0 E1
【Down State】
I am route ID 112.18.17.1/30, and I see no one
-------- ---------------
|Hello|----------》》》--------------------------------------------------------》》》----------|to 244.0.0.5|
-------- ---------------
E0 E1
【Init State】
Router B
Neighbor list
112.18.17.1/30 init E1
I am route ID 112.18.17.2/30, and I see 112.18.17.1
-------- -------
| to A |----------《《《--------------------------------------------------------《《《---------|Hello|
-------- -------
Router A
Neighbor list
112.18.17.2/30 init E0
【Two-Way State】 ###此时只是建立邻居关系,还没有建立连接关系
########################################################################################
第一个DBD不包含LSA头部吗,只是RID,
1:init=0 不是第一个DBD
M:more=1表示后读DBD
MS:master=1表示主
---------------------------- - --------------------------
| | 112.18.17.1/30 112.18.17.2/30 | |
| 路由A |----------------------------------------------------------------- --| 路由B |
| | | |
---------------------------- ---------------------------
E0 E1
【Exstart State】
I will start exchange because I have router ID 112.18.17.1
--------
| DBD |----------》》》--------------------------------------------------------》》》---------------
--------
No ,I will start exchange because I have a higher router ID
-------
-------------------《《《--------------------------------------------------------《《《---------|DBD|
-------
选主从的目的,是谁先发DBD,这和选DR、BDR是两个概念
【Exchange State】
Here is a summary of my LSDB -------
-------------------《《《--------------------------------------------------------《《《---------|DBD|
-------
-------- Here is a summary of my LSDB
| DBD |----------》》》--------------------------------------------------------》》》---------------
--------
########################################################################################
---------------------------- ---------------------------
| | 112.18.17.1/30 112.18.17.2/30 | |
| 路由A |----------------------------------------------------------------- --| 路由B |
| | | |
---------------------------- ----------------------------
E0 E1
-------- Thanks for the information ---------
|LsAck|----------《《《--------------------------------------------------------》》》----------|LsAck|
-------- ---------
【Loading State】
-------- I need the complete entry for net work 112.18.16.0
| LSR |----------》》》--------------------------------------------------------》》》---------------
--------
Here is the entry for network 112.18.16.0 ------
-------------------《《《--------------------------------------------------------《《《---------|LSU|
------
-------- Thanks for the information
|LsAck|------------》》》--------------------------------------------------------》》》----------
--------
【Full State】
OSPF的三种通信量:
- 域内通信量:单个区域内的路由器之间交换数据包构成的通信量
- 域间通信量:不同区域的路由器之间交换数据包构成的通信量
- 外部通信量:ospf域内的路由器与ospf域外或另一个自治系统内的路由器之间交换数据包构成的通信量
ospf链路状态数据库
链路状态数据库的组成
- 每个路由器都创建了由每个接口、对应的相邻节点和接口速度组成的数据库
- 链路状态数据库中每个条目称为LSA(链路状态通告),常见的有六种LSA类型