ospf邻居 ExStart OSPF邻居表_OSPF

OSPF和EIGRP一样都是通过发送hello包建立邻居关系

邻居关系通过周期性发送Hello包来建立,Hello包建立的表叫邻居表,邻居表的内容比较简单,就是我本地哪个接口连接了哪个邻居。

建立完邻居之后我就开始传送路由信息了,而传送的路由信息叫做LSA,通过传送LSA来构建链路状态数据库;

链路状态数据库里面存放LSA,它包含了本区域完整的链路状态信息(其实跟EIGRP的拓扑表类似,但比EIGRP的拓扑表详细)

LSDB构建好了之后,OSPF利用SPF算法从链路状态数据库中算出一条最优的路径放到路由表

 

ospf邻居 ExStart OSPF邻居表_ospf邻居 ExStart_02

LS路由协议比DV路由协议更了解网络中的信息,因此更能找到最佳网络的路径(如何来理解?)

每台路由器有一个完整的网络拓扑信息;

所以,链路状态路由器更能找到最佳网络的路径;

可以和EIGRP做一个对比:

R1-R2-R3

比如运行的是EIGRP,R3宣告Lo0,R3通过EIGRP邻居把路由发给R2,R2再传给R1,R1上查看路由表或者拓扑表时无法判断路由的始发者是谁,只知道是R2传过来的,所以这种DV协议也叫传闻式的协议。

而如果运行的是OSPF的话,那OSPF的数据库中不仅包含R3的Lo0路由而且还包含拓扑信息,比如R1清楚的知道该条路由是谁通告出来的。

EIGRP是高级的DV是因为EIGRP有拓扑表,但拓扑表相对简单,只有路由!

OSPF是LS,拓扑表不仅包含路由还包含拓扑信息(lsa)

如:路由通告的源,DV是传闻路由协议也在此体现出来,来源只有邻居而不是路由通告的源

这也是DV和LS的一个区别!!!

 

ospf邻居 ExStart OSPF邻居表_华为认证_03

ospf三张表:

邻居表:

通常也被称为邻接数据库;

包含所有直连的邻居列表;

拓扑表:

通常也称为LSDB(链路状态数据库);

包含本区域所有的链路状态信息;

同一个区域内的所有路由器有相同的LSDB(链路状态数据库);

拓扑表不仅包含路由还包含拓扑信息(lsa),如:路由通告的源、掩码等等信息

路由表:

通常也叫转发数据库;

存放到达目的地的最佳路径;
 

ospf邻居 ExStart OSPF邻居表_OSPF_04

链路状态路由协议一定要分层,层次化的网络设计在OSPF中被强制,即规划OSPF时一定要划分区域;

OSPF中主要分两大区域:

主干区域(骨干区域 or Area0)

常规区域(非骨干区域)

这是DV和LS的另一个区别!!!

衔接:

那我们看一下划分区域有哪些作用?

 

ospf邻居 ExStart OSPF邻居表_华为认证_05

1、减小路由表条目(如何减小呢?其实是可以做域间汇总!可以根据PPT说明一下汇总的好处可以使得H、G上的路由条目更少)

2、本地拓扑的变化只影响本区域(为什么?其实也是因为做了汇总,例如,在C上汇总Area1的路由,F上路由的变化不会影响其他区域)

3、某些LSA不会泛洪到整个OSPF域,减少网络流量(有些LSA只在本区域泛洪,有些LSA会泛洪到整个OSPF域)

4、需要分层的网络设计

 

ospf邻居 ExStart OSPF邻居表_思科认证_06

区域术语;

骨干路由器BR:A、B

内部路由器IR:F\G\H

ASBR:A

ABR:CDE

 

ospf邻居 ExStart OSPF邻居表_OSPF路由器_07

OSPF通过互相发送Hello包来建立邻居;

Hello包中会包含一些建立OSPF邻居必要的参数;

我们先回顾一下EIGRP建立邻居的条件:

1.K值要匹配  2.AS号要一致  3.验证要一致

那OSPF建立邻居需要哪些必要条件呢:我们在后面再做详细的探讨

1. Hello和Dead intervals 时间要一致;

2. 区域ID要一致;

3. 验证要一致;

4. Stub 标记要一致;即:stub区域中的所有路由器都要配置成stub路由器

 

ospf邻居 ExStart OSPF邻居表_OSPF_08

首先,两个概念要区分开,即邻居和邻接的区别:

邻居:仅仅交互了Hello包!没有交互路由信息!!!

邻接:不仅交互了Hello包,还交互了LSA(路由信息)!!!

所以,形成邻接的一定是邻居,反过来就不一定了!!!

OSPF大致分为两种网络类型:

Point-to-Point类型(典型:Serial口)

    所有的邻居(neighbor)都会变成邻接(adjacent)

MA类型(BMA、NBMA)(路由器之间有些能够到adjacent状态,有些只能到neighbor状态)

    所有邻居都和DR、BDR形成Adjacent关系;

    DROTHERs之间只能到达two-way状态;

路由的更新只会在两台adjacent状态的路由器之间传送;

一旦形成adjacent关系,LSDBs就会通过交互LSAs同步;

LSAs泛洪到整个区域;

 

ospf邻居 ExStart OSPF邻居表_ospf邻居 ExStart_09

OSPF计算:

通过应用Dijkstra的SPF算法的对链路状态数据库进行计算路由器找到最好的到达目的地的路径:

在同一个区域内的每台路由器都有一致的LSDB;

每台路由器以自己为根算出最短路径;

最优路径是Cost值最小的路径;

 

ospf邻居 ExStart OSPF邻居表_ospf邻居 ExStart_10

黑色的线是实际的物理线路,假设都是Ethernet,cost值都是10;

路由器X以自己为根到达其他路由器的路径如图所示,都是选择Cost最小的路径;

Cost 值的计算也是路由流向的入接口;

1

ospf邻居 ExStart OSPF邻居表_华为认证_11

ospf地metric根据cost进行计算

cost=10^8/带宽

B--->Byte

b--->bit   

1B=8bit

接下来我们看一下lsa地运行是怎么样地?

 

ospf邻居 ExStart OSPF邻居表_ospf邻居 ExStart_12

当两台路由器间R1--->R2建立了邻居关系,就会互相发送LSA,当路由器收到LSA以后怎么处理的呢?我们看图所示

Step1.

如果本路由器从来没有收到过此LSA,那么路由器就将其加入LSDB,并且转发/泛洪此LSA,同时继续SPF计算,得出到达此目标的最佳路由。

Step2.

如果本路由器,曾经收到过描述同一个网络的LSA:

如果新收到的LSA序号与自己已有的相同,则丢弃此LSA。

如果新收到的LSA序号比自己已有的更新,则同Step1,去计算最佳路由。

如果新收到的LSA的序号,比自己的更旧,就将自己较新的LSA,发送给源。

ospf邻居 ExStart OSPF邻居表_ospf邻居 ExStart_13

链路状态数据库(LSDB)中的每一条LSA都有一个序列号

•  4字节

•  从0x80000001到0x7FFFFFFF???

每隔30分钟OSPF将泛洪每一次LSA

•  泛洪时LSA序列号增 加1

•  具有较大(新)序列号的LSA被认为是新的LSA

最终,当序列号用尽时,将重新从0x80000001开始

•  现有的旧的LSA的年龄将被设置为最大年龄(3600秒),并且被清除

 

ospf邻居 ExStart OSPF邻居表_思科认证_14

每台OSPF路由器为它属于某个区域的那些接口产生一条Router LSA

•  示例中Link ID为192.168.1.67的路由器已经更新了8次;最后一次更新是48秒之前。