Ospf--动态路由--链路状态路由协议!全面解析OSPF协议!

一、了解OSPF的基本概念;

1、Ospf简介:

开放式最短路径优先OSPF(Open Shortest Path First)是IETF组织开发的一个基于链路状态的内部网关协议(Interior Gateway Protocol)。
目前针对IPv4协议使用的是OSPF Version 2(RFC2328);针对IPv6协议使用OSPF Version 3(RFC2740)。如无特殊说明,本文中所指的OSPF均为OSPF Version 2。

2、OSPF基本特点:

OSPF作为基于链路状态的协议,能够解决RIP所面临的诸多问题。此外,OSPF还有以下优点:
OSPF采用组播形式收发协议报文,这样可以减少对其它不运行OSPF路由器的影响。
OSPF支持无类型域间选路(CIDR)。
OSPF支持对等价路由进行负载分担。
OSPF支持报文认证。

3、Router-ID:

OSPF Router-ID用于在OSPF domain中唯一地表示一台OSPF路由器,从OSPF网络设计的角度,我们要求全OSPF域内,禁止出现两台路由器拥有相同的Router-ID。
OSPF Router-ID的设定可以通过手工配置的方式,或者通过协议自动选取的方式。当然,在实际网络部署中,强烈建议手工配置OSPF的Router-ID,因为这关系到协议的稳定。

4、OSPF Cost:

OSPF使用cost“开销”作为路由度量值。
OSPF接口cost=100M /接口带宽,其中100M为OSPF的参考带宽(reference-bandwidth),可以修改。
每一个**OSPF的接口都有一个cost值。
一条OSPF路由的cost由该路由从起源一路到达本地的所有入接口cost值的总和。Ospf--动态路由--链路状态路由协议!全面解析OSPF协议!
华为ensp模拟器更改接口cost值
[r1]interface g/0/0
[r1-g/0/0]ospf cost 9

5、OSPF进程号(Processor ID)

OSPF进程号的取值范围是1-65535,只具有本地意义,用于在一台网络设备上标识OSPF进程。华为的网络产品支持运行多个OSPF进程,每一个OSPF进程需指定特定的进程号加以区分。
由于进程号只具有本地意义,因此两台直连的设备,如果要建立OSPF邻接关系,则并不要求二者使用相同的进程号。

6、 通配符掩码Wildcard-mask

这里涉及到一个知识点,反掩码
通配符是一个32比特长度的数值,用于指示IP地址中,哪些比特位需要严格匹配,哪些比特位则无所谓。
通配符通常采用类似网络掩码的点分十进制形式表示,但是含义却与网络掩码完全不同。
Ospf--动态路由--链路状态路由协议!全面解析OSPF协议!
Ospf--动态路由--链路状态路由协议!全面解析OSPF协议!

二、了解OSPF邻居关系建立过程;

1、OSPF的三张表:

邻居表(Peer table):

OSPF是一种可靠的路由协议,要求在路由器之间传递链路状态通告之前,需先建立OSPF邻居关系,hello报文用于发现直连链路上的其他OSPF路由器,再经过一系列的OSPF消息交互最终建立起全毗邻的邻居关系,OSPF路由器的邻居信息显示在邻居表中。

链路状态数据库(Link-state database,简称LSDB):

OSPF用LSA(link state Advertisement,链路状态通告)来描述网络拓扑信息,然后OSPF路由器用LSDB来存储网络的这些LSA。OSPF将自己产生的以及邻居通告的LSA搜集并存储在LSDB中。掌握LSDB的查看以及对LSA的深入分析才能够深入理解OSPF。

OSPF路由表(Routing table):

基于LSDB进行SPF(Dijkstra算法)计算,而得出的OSPF路由表

2、OSPF报文类型:

报文类型 报文作用
Hello报文 : 周期性发送,用来发现和维持OSPF邻居关系。
DBD报文:( Database Description packet)描述本地LSDB的摘要信息,用于两台设备进行数据库同步。这里涉及到一个主从关系,后面会介绍
LSR报文:(Link State Request packet)用于向对方请求所需的LSA。设备只有在OSPF邻居双方成功交换DD报文后才会向对方发出LSR报文。
LSU报文:(Link State Update packet)用于向对方发送其所需要的LSA。
LSAck报文:(Link State Acknowledgment packet) 用来对收到的LSA进行确认。

3、 OSPF邻居关系的建立(宏观)

OSPF之所以能被应用广泛首先要理解它的特点以及LSA和LSDB的意思,网络中每台路由将自己搜寻到的LSA放入到LADB(链路状态数据库)中,从而路由器才能有下一步的spf计算的过程,所以核心思想一定要掌握。
Ospf--动态路由--链路状态路由协议!全面解析OSPF协议!

4、OSPF的七种状态

down:初始状态。

init:互相发送Hello报文,hello报文中包含Router ID,AreaID,各种定时器,认证,DR信息,接口优先级等等。初始化状态即单向通信,A收到B的hello(或B收到A的hello)。

tow way:路由器收到对方的Hello包,网络中非DR,BDR路由器之间就是这种状态,也是一种稳态。 双方互相通信状态,彼此收到对方的hello,并且从hello包中读取信息,建立邻居关系。

exstart:确立主从关系,RID高的路由器成为主路由器,如果MTU值不匹配,将停留在此阶段。就是将要开始发送DBD,在发送之前确认谁先发,谁后发,他们自动协商,依靠router id,越大越优先。

exchange:主从关系确立后,开始交换DBD报文,LSDB同步的第一个阶段,主要建立LSDB的总体框架。

lading:加载DBD,发送LSR,通过更新LSU,LSA报文,交换相互缺少的DD报文,完成LSDB的同步。第二个阶段。收到DBD后进行比较是否相同(比较依据查看***),然后进行LSR、LSU的请求和更新

full:同步完成后,建立邻接关系。以后LSA的交换,用过LSU报文进行。

5、OSPF邻居关系的建立(细节)这里结合ospf的七个状态来讲述如何建立的,这里真的是纯干货,想学好数通的推荐保存一下这个关系图

Ospf--动态路由--链路状态路由协议!全面解析OSPF协议!

Ospf--动态路由--链路状态路由协议!全面解析OSPF协议!

Ospf--动态路由--链路状态路由协议!全面解析OSPF协议!
这里在EX-start中双方交互DBD报文,这里的报文内部没有lac,只有routerid,用来比较主从关系,这里不要跟DR和BDR的选举混淆了

OSPF邻居关系的建立(查看邻近路由表信息)
Display ospf peer
Ospf--动态路由--链路状态路由协议!全面解析OSPF协议!

三、了解OSPF的基本工作机制;

1、OSPF网络类型:

OSPF支持的网络类型
(1)点到点网络
(2)广播型多路访问网络
(3)非广播型多路访问(NBMA)网路
(4)P2MP网络
(5)常见链路层协议对应的默认网络类型:
网络类型 常见链路层协议
Point-to-point ------ PPP链路;Lapb链路;HDLC链路;
Broadcast ------- 以太网链路;
NBMA ----- 帧中继链路;ATM链路
P2MP ------- 需手工指定

2、DR、BDR:

在广播多路访问网络(Multi Access)中,所有的路由器的接口都是相同网段,这些接口都将两两建立OSPF邻居关系,这就意味着,网络*有:
n(n-1)/2
这么多个OSPF邻居关系,维护如此多的邻居关系不仅仅额外消耗设备资源,更是增加了网络中LSA的泛洪数量。

为减小多路访问网络中的 OSPF 流量,OSPF 会在每一个MA网络(多路访问网络)选举一个指定路由器 (DR) 和一个备用指定路由器 (BDR)。
DR选举规则:最高OSPF接口优先级拥有者被选作DR,如果优先级相等(默认为1),具有最高的OSPF Router-ID的路由器被选举成DR,并且DR具有非抢占性。

(1)wait计时原则

Ospf--动态路由--链路状态路由协议!全面解析OSPF协议!
正是因为有了这个特性,导致DR有可能是Routerid比较小的路由器

(2)组播地址

路由器R3用224.0.0.6通知DR及BDR。
DR、BDR监听224.0.0.6这一组播地址。
Ospf--动态路由--链路状态路由协议!全面解析OSPF协议!
DR向组播地址224.0.0.5发送更新以通知其它路由器。
所有的OSPF路由器监听224.0.0.5这一组播地址。
Ospf--动态路由--链路状态路由协议!全面解析OSPF协议!

修改优先级,人为参与DR/BDR选举

修改优先级,使得R1为DR
Ospf dr-priority 255(这里的255是最大值)
Ospf--动态路由--链路状态路由协议!全面解析OSPF协议!

3、OSPF area的概念

LSA泛洪严重,OSPF路由器的负担很大。
区域内部动荡会引起全网路由器的SPF计算。
LSDB庞大,资源消耗过多,设备性能下降,影响数据转发。
每台路由器都需要维护的路由表越来越大,单区域内路由无法汇总。

(1)OSPF多区域

Ospf--动态路由--链路状态路由协议!全面解析OSPF协议!
减少了LSA洪泛的范围,有效地把拓扑变化控制在区域内,达到网络优化的目的。
在区域边界可以做路由汇总,减小了路由表。
充分利用OSPF特殊区域的特性,进一步减少LSA泛洪,从而优化路由。
多区域提高了网络的扩展性,有利于组建大规模的网络 。

Area0为骨干区域,负责在非骨干区域之间中转由区域边界路由器归纳的链路状态通告信息。为了防止出现环路,OSPF要求所有的非骨干区域之间不能直接进行LSA的交互,而必须通过Area0骨干区域进行中转,因此所有的非骨干区域必须都与Area0“直接相连”

(2)OSPF路由器的角色

Ospf--动态路由--链路状态路由协议!全面解析OSPF协议!
区域内路由器 Internal Router
区域边界路由器ABR Area Border Router
骨干路由器 Backbone Router
AS边界路由器ASBR AS Boundary Router

四、 了解OSPF的基础配置。

1、实验需求描述

1、实验目的:使用华为ensp模拟生产环境,熟悉ospf的简单配置并通过Wireshark软件抓包分析出DR和BDR的选取规则,以及了解报文的格式,(因为软件延迟的问题,这里对于ospf的七个状态,就很难按顺序抓出来,小编试了很多次,效果都不太好就不上图了0-0)
2、实验步骤:对路由器配置接口IP, 回环地址,以及宣告路由 ,抓包进行观察DR和BDR后选举的过程,以及五中报文的格式,最后达到全毗邻状态。
具体的实验拓扑入下所示:

Ospf--动态路由--链路状态路由协议!全面解析OSPF协议!

Ospf--动态路由--链路状态路由协议!全面解析OSPF协议!SYS
system-view
Enter system view, return user view with Ctrl+Z.
[Huawei]int g 0/0/0
[Huawei-GigabitEthernet0/0/0]ip add 13.0.0.1 24
[Huawei-GigabitEthernet0/0/0]int loo 0
[Huawei-LoopBack0]ip add 1.1.1.1 32
[Huawei]ospf 1
[Huawei-ospf-1]ospf 1 route-id 1.1.1.1
[Huawei-ospf-1]a 0
[Huawei-ospf-1-area-0.0.0.0]network 13.0.0.0 0.0.0.255 --------宣告自己的网段,这里是反掩码(先不要敲)
Ospf--动态路由--链路状态路由协议!全面解析OSPF协议!SYS
system-view
Enter system view, return user view with Ctrl+Z.
[Huawei]INT g 0/0/0
[Huawei-GigabitEthernet0/0/0]ip add 13.0.0.2 24
[Huawei-GigabitEthernet0/0/0]int loo 0
[Huawei-LoopBack0]ip add 2.2.2.2 32
[Huawei]ospf 1
[Huawei-ospf-1]ospf 1 route-id 2.2.2.2
[Huawei-ospf-1]a 0
[Huawei-ospf-1-area-0.0.0.0]network 13.0.0.0 0.0.0.255--------宣告自己的网段,这里是反掩码(先不要敲)

Ospf--动态路由--链路状态路由协议!全面解析OSPF协议!SYS
system-view
Enter system view, return user view with Ctrl+Z.
[Huawei]INT g 0/0/0
[Huawei-GigabitEthernet0/0/0]ip add 13.0.0.3 24
[Huawei-GigabitEthernet0/0/0]int loo 0
[Huawei-LoopBack0]ip add 3.3.3.3 32
[Huawei]ospf 1
[Huawei-ospf-1]ospf 1 route-id3.3.3.3 配置OSPFrouterid
[Huawei-ospf-1]a 0
[Huawei-ospf-1-area-0.0.0.0]network 13.0.0.0 0.0.0.255 --------宣告自己的网段,这里是反掩码
这里要提醒一下上述提到的wait计时器原则和不抢占原则,结合实验会更加直接的观察到

2、使用wireshark抓包软件进行抓包观察

1、这里提前启动抓包功具,会发现在没有设置routerid的时候是不会发生DR选举的

Ospf--动态路由--链路状态路由协议!全面解析OSPF协议!
2、打开最后一个hello包,发现已经确认DR/BDR了,这里R3是DR因为他的routerid大是3.3.3.3
Ospf--动态路由--链路状态路由协议!全面解析OSPF协议!
3、实验环境,抓的包有延迟,顺序全部都是乱的,但是一定要记得这其中有五个报文、7个状态!!!

Ospf--动态路由--链路状态路由协议!全面解析OSPF协议!Ospf--动态路由--链路状态路由协议!全面解析OSPF协议!