主页 > 网络知识 > 原来OSPF还有这么多秘密!1分钟带你了解OSPF路由协议

原来OSPF还有这么多秘密!1分钟带你了解OSPF路由协议

OSPF的概述

OSPF是一种链路状态路由协议。不同于距离矢量路由协议依照传闻进行路由选择的工作方式,链路状态路由器从其他路由器那里获取第一手信息。

每台路由器会产生一些关于自己、本地直连链路、这些链路的状态和所有直连邻居的信息(LSA)。这些信息从一台路由器传送到另一台路由器,每台路由器都在一份信息拷贝,但绝不改动信息。最终目的是每台路由器都有一个相同的相关网络的信息,并且每台路由器以自己为根独立的计算各自的最优路径。

链路状态路由协议包括:

▶OSPF

▶IS-IS

OSPF正如它的命名一样,使用Dikstra的最短路径优先(SPF)算法,并且是一个开放的协议,即公有协议。

OSPF的特点

1、使用区域化的概念,这样可以有效的减少算法对 CPU和内存的占用,构建一个层次化的网络拓扑

2、支持无类路由,VLSM,CIDR

3、支持无大小限制、任意的度量值

4、局部更新

5、支持多条路径的等价负载均衡

6、使用组播地址更新(224.0.0.5和224.0.0.6)

7、支持认证

OSPF区域

Transit area(backbone area)传输区域或骨干区域

只有area 0属于传输区域

Regular areas(nonbackbone areas)常规区域或非骨干区域

非0区域都属于常规区域

所有的常规区域必须与骨干区域相连。

通过区域的划分减少链路状态信息的泛洪,链路状态信息只在同一区域内同步;通过手工汇总减少路由条目;构造一个层次化的网络。

路由器类型

ABR:区域边界路由器(Area Border Router)连接区域0和其他一个或多个区域的路由器

ASBR:自治系统边界路由器(Autonomous System Boundary Router)连接外部网络的路由器

内部路由器:R5、R6等

骨干路由器:R1

OSPF的数据报文

OSPF数据包承载在ip之上,协议号为89,分为OSPF数据包头部和OSPF数据包数据部分。

OSPF报头结构

OSPF报头详细描述

Router-ID

路由器ID是在OSPF区域内唯一标识一台路由器的ip地址。

Cisco路由器通过以下方式得到路由器ID:

1、使用命令router-id手工配置

2、如果没有手工配置,路由器选择最大的环回接口ip地址作为router-id

3、如果没有换回接口,则使用最大的物理接口ip地址作为router-id

OSPF hello报文

Hello包用于建立ospf邻居关系,并维护邻居关系,在两台路由器形成邻居之前,必须要相互认可几个参数:

hello报文详细描述

修改ospf的hello interval和dead interval

R1(config)#int s0/0

R1(config-if)#ip ospf hello-interval 10

R1(config-if)#ip ospf dead-interval 10

指定路由器(DR)

和备份指定路由器(BDR)

对于OSPF路由协议来说,在多路访问网络中LSA的泛洪存在两个问题:

1、构建相关路由器之间的邻接关系时,会创建很多不必要的LSA。

2、LSA的泛洪会比较混乱。

在OSPF网络中,如果要在每一台路由器和它的邻居路由器形成完全网状的OSPF邻接关系,5台路由器需要形成10个邻接关系,产生25条LSA通告

为了在多路访问的网络环境中避免这些问题的发生,可以在网络上选举一台指定路由器完成以下工作:

1、描述这个多路访问网络和OSPF区域内其余相连的路由器;

2、管理这个多路访问网络上的LSA泛洪。

DR描述一个多路访问网络,网络上的其他路由器都将和这个指定路由器形成邻接关系,而不是所有路由器都相互形成邻接关系。

关于指定路由器的一个重要问题:如果DR失效,就必须重新选举一台新的指定路由器。网络上的所有路由器也要重新的建立邻接关系。为了避免这个问题,网络上除了选举DR之外,还选举BDR。DR和BDR形成邻接关系,当DR失效,BDR将成为新的DR。并且BDR也和其他路由器形成邻接关系,所以当BDR成为新的DR时,无需重新建立邻接关系,将影响降低到最小。

DR和BDR的选举过程:

1、路由器和邻居路由器之间首先要建立two-way状态,接着查看hello包的优先级、DR、BDR字段,列出所有具有DR和BDR选举资格的路由器列表(即优先级要大于0)

2、所有路由器都宣称自己是DR和BDR

3、通过优先级高的选举为BDR,如果优先级相同选择RID最高的最为BDR

4、由于没有DR的存在,BDR成为DR,重新选举BDR。

在选举成功后,其他的路由器都叫做DRother。即使接入一台优先级更高的路由器,也不会成为新的DR,它只能等待DR失效,原来的BDR成为DR,它再成为BDR。

数据库描述数据包

(DBD)

DBD包用于正在建立的邻接关系。DBD包的主要目的是描述始发路由器数据库中的LSA摘要信息,以便接收路由器能够确定所收到的LSA在其数据库中是否已经存在这些LSA。LSA的摘要信息只需要列出该LSA的头部即可。

DBD报文详细描述

主从关系的选举:通过Router-ID的比较,Router-id大的为master

确认机制:

显式确认:通过ack明确的进行确认。

隐式确认:从路由器使用主路由器相同的序列号进行确认。

链路状态请求包(LSR)

在数据库同步过程中如果收到了DBD包,路由器将会查看DBD里有哪些LSA不在自己的数据库中,或者哪些LSA比自己数据库中的LSA更新。然后将这些LSA记录在链路请求列表中。接着路由器会发送LSR包向它的邻居请求完整的LSA。

LSR报文详细描述

链路状态更新包

(LSU)

用于LSA的泛洪和响应LSR请求包。

LSA数量(Number of LSA):支持这个LSR包中包含的LSA的数量。

链路状态通告(LSA):LSU数据包中携带的完整的链路状态通告信息,一个LSU可以携带多个LSA。

链路状态确认包

(LSAck)

保证LSA可靠的泛洪扩散。一台路由器从它的邻居路由器收到的每一个LSA都必须在LSAck包中进行明确的确认。被确认的LSA是根据在LSAck包里包含它的头部来辨别的,多个LSA可以通过单个LSAck确认。一个LSAck包的组成除了OSPF头部和一个LSA不透的列表之外,没有其他多余的内容了。

说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!