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防环机制
- 在同一个区域每台路由具有一致的LSDB
- 每台路由器以自己为根计算到达每个目标的最短路径(最小cost值)
- 必须区域划分
优点
域间汇总减少路由条目数量
汇总路由是在所有明细路由均消失后才删除,网络更稳定
区域划分后不同类别的LSA传播范围不同,控制更新量
过程
基于本地LSDB(1/2类LSA)生成--生成有向图--基于有向图来进行最短路径树生成
最短路径树,关注本地LINK-ID的LSA开始,基于该LSA内提及到点到点或传输网络信息再查看link-id递归到下一条信息;基于所有点到点和传输网络信息生成最短路径树主干;
然后用树中每台设备的末梢网络信息补充路由表,完成收敛