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的三种通信量:

  1. 域内通信量:单个区域内的路由器之间交换数据包构成的通信量
  2. 域间通信量:不同区域的路由器之间交换数据包构成的通信量
  3. 外部通信量:ospf域内的路由器与ospf域外或另一个自治系统内的路由器之间交换数据包构成的通信量

ospf链路状态数据库

链路状态数据库的组成

  • 每个路由器都创建了由每个接口、对应的相邻节点和接口速度组成的数据库
  • 链路状态数据库中每个条目称为LSA(链路状态通告),常见的有六种LSA类型

道阻且长,行则将至!加油! --不是冷漠
原文地址:https://www.cnblogs.com/bushilengmo/p/13221265.html