OSPF工作原理邻接-数据库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OSPF工作原理邻接-数据库相关的知识,希望对你有一定的参考价值。

OSPF 协议概述:(open shortest path first - 最短路径优先)

 OSPF在不同的路由器之间,通过互相传递各自的路由条目,以
 保证全网的所有的设备,具备相同的路由信息。

 运行 OSPF 的路由器,会以组播的方式周期性的发送 OSPF Hello 报文,
 用于 OSPF 邻居关系的建立。
    -周期时间 : 10s
    -组播地址 : 224.0.0.5 ->表示的是所有的 OSPF 路由器。
    - OSPF 属于 OSI 模型第 3 层 ; 
    - 在 IP 头部中使用的协议号 是: 89

网络类型
1.broadcast
2.NBMA
3.p2p
4.p2mp

OSPF工作过程:

1、建立邻居表 :考虑邻居的建立过程以及影响因素

2、同步数据库 :考虑数据库同步的过程以及稳定性

3、计算路由表 :每一个路由器都会基于“自己的”数据库信息,
                独立的进行路由的计算。(路由器使用的 SPF) 

OSPF 的报文类型:
1、hello -- 用于 OSPF 邻居的建立、维护 以及 拆除
2、DBD(DD) -- database description ,数据库描述报文
3、LSR -- link state request , 链路状态 请求 报文--数据库条目
4、LSU -- link state update , 链路状态 更新 报文--数据库条目
5、LSAck -- link state ack ,链路状态 确认 报文

DBD 关键字段 描述:
I - init ,该标记如果为1,表示的是该 DBD 报文是 “第一个DBD”。
通过第一个 DBD 报文的比较,用来确定 主从关系;
M - more , 该标记如果为1,表示后面还有更多的 DBD报文,也就是
该 DBD 报文不是最后一个 DBD ,那么此时不应该进行
后续的 Loading,此时是在exchange 阶段.
MS- master/slve,该标记如果为1,表示该路由器是 主路由,如果是0
表示该路由器是从路由。
一旦主从关系确定以后,那么从路由器发送的 DBD 报文的
序列号要跟着主路由器的 DBD 序列号进行变化,从而实现
对 DBD 报文的“隐式确认”。

DBD Sequence , DBD报文序列号。每个路由器发送的第一个 DBD 的序列号 
            是随机的。一旦确定主从关系,那么从路由器的 DBD 的序列号 
            要随着主路由器的变化。从而实现 DBD 报文的“可靠”传输。                              

OSPF 数据库 :

  • OSPF 的数据库是通过“区域”进行隔离和组织的。

    • 不同 的区域,数据库内容是不同的。
    • 不同 的区域,数据库的内容是完全隔离的。

    • 不同 的区域中的链路的变化,所造成的影响,仅仅在一个区域内部
      不会影响到其他区域。
    • 划分区域以后,每个区域中的路由器的数据库就会大大的减小,从而
      节省每个路由器的内存占用率。

    • 同一个区域的路由器的数据库,必须是完全一致的。

OSPF 数据库中包含的内容,称之为 LSA (link-state advertisement)
即,链路状态通告。
OSPF 就是通过各种类型的 LSA 将路由器计算出来的。
使用的 LSA 的类型不同,那么计算出来的 路由的类型,也就不同。
LSA 条目结构:

type : 表示的是 LSA 的类型 (1/2/3/4/5/7)

link-id:表示的是 LSA 的名字 ,并且不同类型的LSA的名字的表示是不同。

advrouter:表示的是 advertise router ,即通告路由器,也就是产生该LSA
的路由器的名字

age:表示的 LSA 的存活时间,以秒为单位,并且正计时。最大值为 3600s。
如果存活时间变成了3600s,表示该 LSA 不可用,就必须在数据库中删除。
为了保证 LSA 不会因为时间的正常计时导致误删,
所以,我们需要在 LSA 达到 最大 age 之前,发送一个“新的” LSA。
该新的 LSA,每1800s产生并发送一次;
该新的 LSA,只能由 LSA 的 advrouter 产生。
当其他路由器收到这个“新的LSA”以后,就会将自己的 age 计时器清0,
重新计时。
【OSPF数据库刷新机制:1800s】

lenght:表示的是该 LSA 的报文长度。

sequence:序列号。表示的是 LSA 的新旧程度。 LSA 每变化一次,序列号都会
加1,即序列号越大,表示越新。
观察比较同一个区域中的所有的 LSA 的序列号,不同的序列号
之间的差异,应该是越小越好。

metric:度量值,表示的是该 LSA 的产生路由器到达该 LSA 表示的网段
的距离。

1类LSA - router LSA ,

任何一个 OSPF 路由器,都会在任何一个自己连接的区域,

  产生一个 router lsa 。相当于每一个路由器在每一个区域
  自我介绍

2类LSA - network LSA

只能由 DR 产生

    # 用来对同一个“网段”中的路由器,宣告 DR 的管理范围的。

3类LSA - summary abr

只能由 ABR 产生

    # 用来表示不同区域之间的路由信息的。

4类LSA - summary asbr

由与 ASBR 在同一个区域的 ABR 产生的。

    #用来在不同的区域之间传输“ASBR的router-id”。

5类LSA - exteral LSA

只能由 ASBR 来产生

     # 用来表示 OSPF 的外部路由;

OSPF 邻居建立影响因素:(本质上是在分析 hello 中的参数)

1.router-id 不能相同。
2.area-id 必须相同。
3.认证必须相同(类型以及密码都得相同)
4.子网掩码必须相同(特殊情况下)
5.hello-timer 必须相同
6.dead-timer 必须相同
7.特殊标记位,必须相同(option-代表的是OSPF路由器的能力)
8.端口优先级不能全为0(特殊情况下)

--- 特殊情况下 ----
OSPF 网络中需要选举 DR/BDR 的情况下,就是这里所谓的“特殊情况”下
DR:指定路由器
BDR:备份的指定路由器

OSPF 邻接关系的建立过程:

0、down      - 该状态下,down 没有启用 OSPF 协议。
1、init      - 初始化状态。表示的是本地路由器接收到了对方发送
               过来的 hello报文;
2、two-way   - 双向通信状态。表示的是本地路由器接收到了对方发送
               过来的 hello 报文,并且在该报文中发现了自己的RID;
               如果该网络类型中需要选举DR/BDR,则在该阶段进行。
3、exstart   - 交换初始化状态。在该状态下,双方路由器都会发送第一个
               DBD报文,为的就是选举一个主/从关系,主要目的就是为了
               实现 “数据库同步”的可靠性和高效性。
               [DBD报文中包含的是数据库中的条目的基本信息]
4、exchange  - 交换状态。在该阶段,主从路由器会进行 DBD 报文的
               互相传输,最终实现两边数据库的比对工作。
5、loading   - 加载状态。在该状态下,主从路由器就会通过 LSR和LSU
               进行 “数据库条目”的请求和发送,并通过 LSAck 报文
               对该过程进行确认。
6、full      - 完全邻接。即此时邻居路由器之间的数据库完全一致。

OSFP 的基本配置命令:

[R1]ospf 1 router-id 1.1.1.1
【该路由器的ID】
[R1-ospf-1]area 0
【区域0--主干区域】
[R1-ospf-1-0.0.0.0]network 192.168.1.0 0.0.0.255
【进行宣告网段】
[R1]display ospf peer brief
【查看OSPF的邻居表】
[R1]reset ospf process
【重启OSPF进程】
[R1-GigabitEthernet0/0/2]ospf dr-priority 10
【修改OSPF的优先级--默认是1】
[R1-GigabitEthernet0/0/2]ospf network-type p2p
【修改网络类型】

以上是关于OSPF工作原理邻接-数据库的主要内容,如果未能解决你的问题,请参考以下文章

OSPF之邻居关系邻接关系

OSPF建立邻居邻接关系 学习笔记

ospf协议有四个主要工作过程是?

OSPF邻居/邻接建立(3)

OSPF内部网关协议

学习记录12