ospf简介

OSPF(Open Shortest Path First开放式最短路径优先)是一个IGP(Interior Gateway Protocol,内部网关协议),用于在单一自治系统(autonomous system,AS)内决策路由。OSPF有三个版本,分别是OSPFv1、OSPFv2和OSPFv3,其中OSPFv1在实验室阶段就已摒弃,而OSPFv3用于IPv6,所以我们这里只介绍OSPFv2。
在这里插入图片描述

ospf与rip的异同

在这里插入图片描述

相同点

  • 都是无类别路由协议,rip在传递路由信息会携带子网掩码,ospf的lsa(链路状态通告)也携带子网掩码
  • 都是以组播的形式通信,rip:224.0.0.9,ospf: 224.0.0.5/224.0.0.6
  • 都支持等开销负载均衡,手工认证

不同点

由于rip自身的劣势:只有一种包,选路不佳,收敛慢,导致rip只适用于中小型的网络环境中。而ospf有5种数据包,分工明确;通过spf算法保证选路无环;有触发更新,收敛块,加上ospf其他各种减少占用资源的措施使ospf可以应用于中大型的网络环境中。

ospf的5种数据包

ospf的数据包通过跨层封装,跨层封装于3层报头,通过协议号89区分ospf
![在这里插入图片描述](https://img-blog.csdnimg.cn/f79d1e6497e24f9ea841de0946bd1081.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5YKy54S2Kg==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center

hello包

hello包用于周期发现、建立和保活邻居关系。当路由器启动ospf进程后,默认每10秒(hello时间,可以修改)发送一个hello包,hello中携带自己的RID和已知邻居的RID,当路由器收到的hello包中包含自己的RID,建立邻居关系。建立邻居关系之后通过hello包告诉邻居我还在,即保活作用。如果过了40秒(dead-time 4倍的hello时间)任没有收到邻居的hello包,即认为该邻居消失。
在这里插入图片描述
注:RID:因为ospf传递的是拓扑信息,需要一个参数对所有路由器进行区分和标定,所以ospf引入RID来完成这个工作,RID在ospf网路内具有唯一性,且由32位二进制构成,采用IP地址的格式。RID可以手工配置或自动获取,如果是自动获取,设备将会在自己环回接口的IP地址中选择最大的作为自己的RID。如果没有环回接口,则将在自己的物理接口上选择IP地址最大的作为RID。

数据库描述包DBD包

由于ospf传递的拓扑信息庞大,所以ospf在互相传递LSA时,先将本地lsa信息的目录传给对方,对方在根据目录选择自己没有的LSA信息,这个目录信息就是DBD包。
在这里插入图片描述

链路状态请求包LSR包

通过DBD包获取邻居的lsa信息目录后,将收到的lsa信息目录和本地数据库进行对比,然后通过LSR包向邻居请求本地所没有的lsa信息
在这里插入图片描述

链路状态更新包LSU包

收到邻居的LSR包后,通过LSU包将lsa信息传递给邻居,是真正携带LSA信息的数据包。
在这里插入图片描述

链路状态确认包LSAck包

收到LSU包需恢复LSAck包确认收到
在这里插入图片描述

ospf的7种状态机

在这里插入图片描述

Down

本地启动ospf,开始发送hello包后进入Down状态,一旦接收到hello,进入下一个状态
在这里插入图片描述

Init

当收到的hello中包含本地的RID时,进入下一个状态
在这里插入图片描述

Two-way

该状态标志着邻居关系的建立,邻居关系建立后还需进行条件匹配,符合条件才可以进入下一个状态。
在这里插入图片描述

Exstart

条件匹配成功后,来到Exstart状态,首先使用空的DBD包进行主从选举,RID大的首先进入下一个状态。进行主从选举的原因为:如果同时发送DBD包,可能会导致网络卡顿,所以进行主从选举后,首先进入下一个状态的先发送带lsa目录信息的DBD包。之所以要使用空DBD包进行选举是为了证明我条件匹配成功,和之前的邻居关系进行区分。
在这里插入图片描述

Exchange

进行主从关系选举后,RID大的首先进入该状态,发送正常的DBD包。
在这里插入图片描述

Loading

查看对端的DBD包中的信息和本地的LSDB数据库目录信息进行对比,基于未知的LSA信息发送LSR包,对端回复LSU包,需要LSACK进行确认。
在这里插入图片描述

Full

标志着邻接关系的建立。 邻接关系主要是为了和之前邻居关系进行区分。邻居关系,仅能使用hello包进行周期保活,只有邻接关系,可以去交换LSA信息。

ospf的工作过程

启动配置完成后,OSPF向本地所有运行OSPF协议的接口以组播224.0.0.5发送hello包。Hello包中携带本地的RID以及本地已知邻居的RID。之后,将收集到的邻居关系记录在一张表中— 邻居表。邻居表建立之后,将进行条件匹配;失败则将停留在邻居关系,仅使用hello包进行周期保活。匹配成功,则开始建立邻接关系。首先使用未携带数据的DBD包进行主从关系选举。之后,使用携带数据的DBD包进行数据库目录的共享。之后,本地使用LSR/LSU/LSACK数据包来获取未知的LSA信息;完成本地数据
库的建立。LSDB(链路状态数据库),生成数据库表。最后,基于本地的链路状态数据库,生成有向图,之后,通过SPF算法将有向图转换成最短路径树。之后,计算本地到达未知网段的路由信息,将路由信息添加到路由表中。收敛完成后,hello包依然需要进行10S(30S)一次的周期保活,没30MIN进行一次周期更新。

在这里插入图片描述

ospf的结构化部署

OSPF为了适应中大型网络环境,需要进行结构化部署。如果区域划分当网络规模不大时,我们也可以将OSPF网络划分在一个区域内,这样的OSPF网络称为单区域OSPF网络。如果一个OSPF网络当中包含多个OSPF区域,称为多区域。OSPF网络区域划分的主要目的是减少资源占用:区域内部传递拓扑信息,区域之间传递路由信息。为了方便对各个区域进行区分和管理,我们给每个区域设计一个编号,区域ID(area ID), 由32位二进制构成,可以通过点分十进制的形式来表示,也可以直接使用十进制来进行表示。
在这里插入图片描述
区域划分的要求:

  1. 区域之间必须存在ABR。ABR(区域边界路由器),同时处于两个或多个区域,至少一个接口对应一个区域,区域之间可以存在多个ABR,一个ABR也可以对应多个区域。
  2. 区域划分必须按照星型拓扑结构划分。所有区域需要连接在中心区域上,这个中心我们称之为骨干区域。

ensp中ospf的基本配置

基础配置

1.启动OSPF进程
[r1]ospf 1 router-id 1.1.1.1 --- 1 进程号,仅具有本地意义;手工配置RID在启动进程时完成
[r1-ospf-1] --- 进入ospf视图
2.创建区域
[r1-ospf-1]area 0  --- 区域id可以用十进制数表示,也可以用点分十进制表示
[r1-ospf-1-area-0.0.0.0]
3.宣告
[r1-ospf-1-area-0.0.0.0]network 12.0.0.0 0.0.0.255 -- network 网段 反掩码 
注:宣告有两个目的:1.激活接口,只有激活的接口可以收发ospf包。2.发布路由,只有激活接口对应的网段信息才能发布出去。
反掩码也是由连续的0和连续的1组成,但0对应的位表示该位不可变,1对应位表示该位可变,如例中表示的范围为12.0.0.0-12.0.0.255

查看邻居表、数据库表

1.查看OSPF的邻居表
[r1]display ospf peer

	 OSPF Process 1 with Router ID 1.1.1.1
		 Neighbors 

 Area 0.0.0.0 interface 12.1.1.1(GigabitEthernet0/0/0)'s neighbors
 Router ID: 2.2.2.2          Address: 12.1.1.2        
   State: Full  Mode:Nbr is  Master  Priority: 1
   DR: 12.1.1.1  BDR: 12.1.1.2  MTU: 0    
   Dead timer due in 35  sec 
   Retrans timer interval: 5 
   Neighbor is up for 00:01:30     
   Authentication Sequence: [ 0 ] 
查看简略邻居表
[r1]display ospf peer brief 

	 OSPF Process 1 with Router ID 1.1.1.1
		  Peer Statistic Information
 ----------------------------------------------------------------------------
 Area Id          Interface                        Neighbor id      State    
 0.0.0.0          GigabitEthernet0/0/0             2.2.2.2          Full        
 ----------------------------------------------------------------------------
2.查看数据库表
[r1]display ospf lsdb --- 查看数据库目录

	 OSPF Process 1 with Router ID 1.1.1.1
		 Link State Database 

		         Area: 0.0.0.0
 Type      LinkState ID    AdvRouter          Age  Len   Sequence   Metric
 Router    2.2.2.2         2.2.2.2            294  48    80000004       0
 Router    1.1.1.1         1.1.1.1            285  48    80000006       0
 Network   12.1.1.1        1.1.1.1            285  32    80000002       0
 
		         Area: 0.0.255.255
		         Area: 1.1.1.1
[r1]display ospf lsdb router 2.2.2.2 --- 查看某一条lsa的详细信息

	 OSPF Process 1 with Router ID 1.1.1.1
		         Area: 0.0.0.0
		 Link State Database 


  Type      : Router
  Ls id     : 2.2.2.2
  Adv rtr   : 2.2.2.2  
  Ls age    : 432 
  Len       : 48 
  Options   :  E  
  seq#      : 80000004 
  chksum    : 0x8187
  Link count: 2
   * Link ID: 2.2.2.2      
     Data   : 255.255.255.255 
     Link Type: StubNet      
     Metric : 0 
     Priority : Medium
   * Link ID: 12.1.1.1     
     Data   : 12.1.1.2     
     Link Type: TransNet     
     Metric : 1
		         Area: 0.0.255.255
		 Link State Database 

		         Area: 1.1.1.1
		 Link State Database
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐