OSPF总结

OSPF  收敛速度快,选择路径佳,占用资源少

OSPF的版本

OSPFV1,OSPFV2     ————IPV4

OSPFV3                      ————IPV6

OSPFV2适用于中大型网络(OSPFV2为适用中大型的网络,需进行结构化部署即划分区域)

区域划分的目的:区域内部传拓扑信息,区域之间传路由信息。

OSPF的数据包是跨层封装于3层报头后方 ,协议号89

若一个网络只包含单一的OSPF区域,则为单区域OSPF网络;若为一个网络包含多个OSPF区域则为多区域OSPF网络

区域划分的要求:区域之间必须有ABR;(区域边界路由器,同属于多个区域,并且一个接口对应一个区域,至少有一个对应骨干区域)区域划分须按星型拓扑结构来划分,中心为骨干区域

为方便管理,给不同区域增加一个编号即区域ID,由32位二进制构成可用点分十进制或直接十进制表示

骨干区域的ID为0,区域之间可有多个ABR,一个ABR可属于多个区域

OSPF数据包类型

hello包  周期发现,建立与保活邻居关系       发送周期为10s      OSPF中判定邻居失效的时间为4倍的hello时间(死亡时间)

RID  区分与标定OSPF中不同路由的设备(全网唯一,格式统一(按IP地址格式32位二进制))

RID的获取方法:1.手工配置2.自动获取

自动获取     首先,先取自己环回接口中配置的最大的IP地址作为RID,若无环回接口,则将在自己物理接口配置的IP地址中选择最大的作为RID

hello包中携带RID

DBD包    数据库描述包(携带路径信息摘要)  (菜单)

LSR包    链路状态请求报文 (基于DBD包请求未知LSA信息)   (点菜)

LSU包    链路状态更新报文    (真正携带LSA信息的数据包)       (上菜)

LSACK包   链路状态确认报文     确认包

OSPF在收敛完成之后,存在每30min一次的周期更新

OSPF状态机

down状态      启动OSPF,之后发hello包,进入下个状态

init状态(初始化状态)     收到hello包中包含自己本地的RID,进入下个状态

two-way状态(双向通信)  标志着邻居关系的建立

条件匹配成功,则进入下一个状态,若匹配失败,则停留在邻居关系,仅使用hello包来保活

exstart状态(预启动)      使用未携带数据的DBD包进行主从关系的选举,RID大的为主,可以优先进入下一个状态

exchange状态(准交换)   使用携带数据的DBD包进行目录共享

loading状态(加载)       基于对端的DBD包中的信息,使用LSR/LSACK/LSU获取LSA信息

full状态        标志着邻接关系的建立

OSPF的工作过程

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

发送包的类型
Hello包  用于发现和维持邻居关系

数据库描述包:向邻居发送摘要信息以同步链路状态数据库,选举DR和BDR

链路状态请求包:路由器收到包含新信息的DBD后发送的,用于请求更详细的信息。

链路状态更新包:收到LSR后发送链路通告(LSA)一个LSU数据包可能包含几个LSA。

链路状态确认包:确认已经收到LSA,每个LSA要被分别确认。     

在ospf协议的DBD包中将携带本地接口的MTU值,若两端一致可以正常建立邻居关系;若不一致将无法建立邻接关系;默认华为设备不携带MTU

多进程双向重发布

ospf多进程:一台路由器上的多个进程,每个进程拥有自己的数据库,独立计算路由条目,且计算所有不共享;最终将所有最佳路径加载于同一张路由表内;

路由器的一个接口只能工作在一个进程中;

可用于解决不规则区域,将不规则位置工作不同的进程中,实现分开,之后利用重发布技术来共享路由表;  解决了选路不佳和资源占用的问题

[r4]ospf 1

[r4-ospf-1]import-route  ospf  2

[r4-ospf-1]q

[r4]ospf 2

[r4-ospf-2]import-route  ospf  1

结构突变

1,新增一个网段 --- 触发更新,直接使用携带LSA信息的LSU包进行更新,需要对反回复ACK进行确认

2,断开一个网段 --- 触发更新,直接使用携带LSA信息的LSU包进行更新,需要对反回复ACK进行确认

3,无法沟通 ---- 40S

OSPF的基本配置

启动OSPF进程

[r1]ospf 1 router-id 1.1.1.1              1为进程号,仅具有本地 意义

创建区域

[r1-ospf-1]area 0 

宣告

[r1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0           0.0.0.0为 反掩码,由连续的0和连续的1组成,0带表不可变,1代表可变

查看邻居表【r1】 display ospf peer(brief  概要)

查看邻居关系简表     [r1]display ospf peer brief  

查看OSPF的链路状态数据库  [ r1]display ospf lsdb

 查看LSA详细信息   [r1]display ospf lsdb router 2.2.2.2

查看ospf路由表    [r1]display ip routing-table protocol ospf

OSPF协议在华为设备分配的默认优先级为10

OSPF是以带宽作为开销值的度量标准的 cost = 参考带宽/真实带宽,华为设备OSPF的参考带宽默认为 100Mbps

修改参考带宽的命令     [r1-ospf-1]bandwidth-reference 1000

如果需要修改一台路由器的参考带宽,则需要将所有(OSPF网络 内)路由器的参考带宽都修改为一样的

指定路由器 --- DR (邻接)          备份指定路由器 --- BDR (邻接)    DROther

当一个广播域中存在DR和BDR时,想要看到邻居关系,至少需要4台路由设 备 DR/BDR是接口概念。

条件匹配:在一个广播域中,若所有设备均建立邻接关系,将造成大量的 重复更新,故需要进行DR/BDR的选举,所有非DR/BDR设备之间仅保留邻居关系。

DR/BDR的选举

1,先比较优先级,优先级大的为DR,优先级次大的为BDR 优先级的默认初始值为1。(可以更改)

[r1-GigabitEthernet0/0/0]ospf dr-priority (0~255)

若将一个接口优先级修改为0,则代表放弃为DR/BDR选举

 2,当优先级相同时,则比较RID。RID大的路由器的对应接口为DR, 次大的为BDR。

DR/BDR的选举是非抢占模式(不可修改)   DR/BDR一旦选举成功,则将不能被抢占。DR/BDR的选举时间40S。

重启OSPF进程        reset ospf 1 process  

OSPF的拓展配置

手工认证 [r1-GigabitEthernet0/0/0]ospf authentication-mode md5 1 cipher 123456

注意:两边的KEY ID必须相同

手工汇总    (ABR上不汇总)  [r2-ospf-1-area-0.0.0.0] abr-summary 192.168.0.0  255.255.254.0

沉默接口 [r1-ospf-1]     silent-interface GigabitEthernet 0/0/2

加快收敛 --- 减少计时器时间  (接口上修改) [r1-GigabitEthernet0/0/0]ospf timer hello 5

注意:修改hello时间后,死亡时间将自动按照4倍关系匹配 ,ospf要求,邻居之间的hello时间和死亡时间必须相同, 否则无法建立邻居关系。

缺省路由 [r3-ospf-1]default-route-advertise (always  强制下发)

注意:OSPF要求边界路由器自身必须存在缺省路由,才能下发缺省路由信息

OSPF虚电路

由非法ABR设备,通过直连区域的合法ABR进行授权,来转发路由

由于没有新增链路,故不存在选路不佳问题

虚链路上的两台ABR间的周期资源占用问题

在OSPF网络中 ,并不是每个路由器都需要外部网络的信息,为了减少lsa泛洪量和路由条目,就创建了末节区域(STUB),位于stub边界的ABR将宣告一条默认路由到所有的stub区域内的内部路由器,不接受自治系统外部信息,同时也拒绝4类LSA,stub区域不能包含ASBR(除非ABR也是ASBR)。在末节区域的基础上 ,如果不接受自治系统 外部路由和自治系统内其他区域汇总路由 ,则该区域将会成为完全末节区域 。

     末节区域 :stub area。其他区域产生的LSA,只有第三类lsa,也就是summary lsa能进来,其他的四类五类都会被ABR过滤掉 ,该区域内的路由器也不能引入外部路由 。

     完全末节 :其他区域的LSA都进不来 ,包括3类。该区域的ABR会产生一个缺省的三类LSA ,区域内其他路由器通过这条LSA计算出默认路由 。

     次末节区域 :即NSSA区域。它与stub的区别是 ,这个区域可以引入外部路由 。三类LSA可以进来 ,但四类和五类LSA仍然被过滤。引入的外部路由会以7类LSA的形式存在,ABR也会产生一个缺省的7类LSA,其他路由器通过这LSA计算出默认路由。

    完全次末节区域 :与total stub类似,这个区域也是连三类LSA都过滤掉,及其他区域产生的LSA将无法进入该区域。但是ABR会产生一个缺省的三类LSA,其他路由器通过这条LSA计算出默认路由。在nssa区域中,可能同时存在多个ABR ,为了防止路由环路产生,边界路由器之间不计算对方发布的缺省路由。

ospf扩展

在MA网络中(进行DR/BDR选举)存在7种状态机,init是路由器A收到邻居B的hello包,但该hello包中没有A的RID

点到点网络init状态机在判断可以建立邻居后,直接进入exstart状态机;没有2way状态机----6种状态机

在点到点网络实际仅存在邻接关系;在MA网络(选举DR/BDR)网络中存在邻居和邻接关系

若邻接间的数据库默认一致,将不需要进入loading状态机

在hello时间较大时,比如p2mp和nbma工作方式,默认hello time为30;

hello包收发的间隔较大,从down状态到init需要很长时间的等待,故在两种状态机,存在一个尝试状态机

关于OSPF的DBD包--- 排序问题(隐性确认问题)

首先在exstart状态机,邻接设备间会使用不携带LSA头部信息的DBD包进行主从关系的选举,该选举的作用决定了那台设备优先进入exchange状态机的顺序;

同时在exchange状态时,邻接间将收发携带LSA头部信息的DBD包;可能由于LSA头部信息较多,将多次收发DBD,也需要进行排序;

所以主优先进入exchange,主在exchange优先发送DBD,在发送一个DBD后,需要接收到对端的DBD后,才能发出下一个DBD;目的在于避免两端同时发送携带LSA的DBD报头,导致链路拥塞;  故为了顺序正常,DBD需要进行隐性确认

隐性确认:

从在收到主的DBD包后,复制该DBD包的序列号回复DBD;

在主或从未完成所有LSA头部信息的共享前,对端设备需要使用空包(不携带LSA信息,但复制了对端序列号的DBD)来完成确认。隐性确认可以让ospf协议在exchange状态机取消ACK的确认

OSPF选路规则

AD(管理距离,优先级)无关的一种情况

一台路由器从两个OSPF邻居处学习到了两条相同的路由时,仅比较度量值,不关注管理距离;因为仅针对一台邻居进行管理距离修改的结果是要么两台都被改,要么修改失败;-关注IOS版本---有时修改RID大路由器管理距离生效,有时需要修改RID小的设备

AD(管理距离)无关的第二种情况 O  IA 3类

OlA 与 OIA路由相遇,到达相同目标的两条3类路由,这两条路由均通过非骨干传递,仅关注cost值,不关注管理距离

OSPF的区域水平分割:区域标号为A的3类LSA,不能回到区域A;避免环路产生,先比类型(5/7的LSA才存在类型)-à 区域(骨干优于非骨干)àcost(小优)

E 与OE   E为5类    N 为7类  

默认所有重发布进入路由条目均为类型2,类型2在路由表中cost值不会显示沿途的累加,仅显示起始度量

两条均为OE2或者均为N2,起始度量相同; 关注沿途的累加度量 (OE2路由在表中度量默认不显示内部度量,仅显示起始度量)

两条均为OE2或者均为N2,起始度量不同;优先起始度量小的路径

OE1路由仅比较总度量(起始度量+沿途累加),仅修改起始度量不一定能干涉选路,必须在修改后使得总度量产生区别才能干涉选路

拓扑优于路由   1/2LSA计算所得路由优于3/4/5/7类计算所得

内部优于外部   3类优于4/5/7类

类型1优于类型2  E1优于E2,N1优于N2,E1优于N2,N1优于E2;

E1与N1相遇,或E2与N2相遇,先比总度量(起始+沿途)小优;度量一致5类优于7类

FA-转发地址

正常OSPF区域收到的5类LSA不存在FA值;

产生FA的条件:

5类LSA

 假设R2为ASBR,g0/0口工作的OSPF中,g0/1口工作在非ospf协议或不同ospf进程中;若g0/1也同时宣告在和g0/0相同的OSPF进程中,同时该接口的工作方式为广播型;

将在5类LSA中出现FA地址,地址为R2连接R3网段中R3的接口ip

7类LSA---必然出现FA地址

假设R9为ASBR,S0/0口工作的OSPF中,S0/1口工作在非ospf协议或不同进程中;

S0/1未运行OSPF--FA地址为R9上最后宣告的环回地址(个别IOS也可能是最大环回接口ip地址),若R9没有环回接口;FA地址为R9上最后宣告的物理接口地址(个别IOS也可能是最大的物理接口ip地址)

R9的S0/1也工作OSPF协议中,S0/1接口工作方式为广播,那么FA地址为R10接口ip;

S0/1的工作方式为点到点,那么FA地址为R9的s0/1口ip

对存在FA的5/7类路由,4类LSA无意义,仅递归到FA地址;若FA地址被策略过滤导致不可达

路由表中的度量是到FA地址的度量,不是到ASBR的度量

NP位+E位   P位被加密,故抓包时看不见P位;

正常NSSA区域内的1类LSA中,N=1    E=0  标识该区域转发7类LSA,不转发5类

非NSSA区域E=1 N=0 标识可以转发5类,不能转发7类

P位为1,标识该区域将执行7类转5类;  P为0,不能7转5;

区域0连接到两个非骨干区域,这两个非骨干假设为区域1和区域2;区域1/2同时连接同一个外部协议,且同时进行了重发布配置;区域1为NSSA区域,区域2为非NSSA区域;那么此时的区域1,P位=0不能进行7转5;故骨干区域只能收到从区域2来的外部路由;

若NSSA和非NSSA均将同一条域外路由向内部传递,仅非NSSA区域可以实现

若区域1和区域2均为NSSA区域,那么ABR的RID大区域进行7转5,另一个区域不转,

故同一条域外路由,骨干区域只能收到从一个NSSA区域传递的外部路由;若以上条件中,两个区域均为非NSSA区域,那么P位无效,故两个区域的路由均回进入骨干区域

SFP算法 –OSPF防环机制

  1. 在同一个区域每台路由具有一致的LSDB
  2. 每台路由器以自己为根计算到达每个目标的最短路径(最小cost值)
  3. 必须区域划分

优点

域间汇总减少路由条目数量

汇总路由是在所有明细路由均消失后才删除,网络更稳定

区域划分后不同类别的LSA传播范围不同,控制更新量

过程

基于本地LSDB(1/2类LSA)生成--生成有向图--基于有向图来进行最短路径树生成

最短路径树,关注本地LINK-ID的LSA开始,基于该LSA内提及到点到点或传输网络信息再查看link-id递归到下一条信息;基于所有点到点和传输网络信息生成最短路径树主干;

然后用树中每台设备的末梢网络信息补充路由表,完成收敛

上一篇:leetcode-287. 寻找重复数


下一篇:OSPF的知识点总结及其扩展