Hello时间
Dead时间
注意:修改hello时间,则死亡时间随之改变,而仅修改死亡时间,hello间隔时间不变
OSPF特殊区域标记
跟修改掩码相同
认证字段
两者均需要等待死亡时间超时,才会从full状态切换到down状态
DBD包
使用未携带数据的DBD报文进行主从关系选选举
使用携带数据的DBD报文进行目录信息共享
使用未携带数据的DBD报文进行确认
接口最大传输单元(接口的MTU)
华为将该值设置为0
华为默认不对MTU值进行检测
如果两边均开启该功能,则会进行MTU检测,并且进行检测时,若两边不同,则状态卡在exstart状态
I位:主从关系选举
如果该为置为1,则不会携带LSA头部
M位:代表后续是否有多个DD报文
置为1,则代表后续还有DD报文
置为0,则代表该报文为最后一个DD报文
MS位:代表主设备
该比特位置为1,则代表Master
在中从关系选举完成之前,各个设备均会认为自己的master
DD序列号
用于确保DD报文传输的有序性和可靠性
(DD序列号逐次加1)
DD序列号必须是由master路由器决定,而从设备只能使用master设备发送来的DD序列号来发送自己的DD报文(隐性确认机制)
LSA头部
当路由器使用DD报文来描述自己的LSDB时,LSA的头部信息被包含在内
一个DD报文可以包含一个或多个LSA头部信息
LSR包
基于DBD报文请求本地未知LSA信息
链路状态类型、链路状态ID、通告路由器(LSA三原则):通过三个参数唯一标识一条LSA
LSU包
LSACK包
OSPF的接口网络类型
网络类型 | OSPF接口的工作方式 |
BMA | broadcast,可以建立多个邻居关系,需要进行DR和BDR的选举,hello 10s;dead 40s |
P2P | P2P,只能建立一个邻居关系,不需要进行DR和BDR的选举,hello 10s;dead 40s |
环回接口 | P2P,华为设备定义为P2P类型,但实际上该接口无数据收发。环回接口默认学习32位主机路由, |
P2MP | P2MP,可以建立多个邻居关系,不需要进行DR和BDR的选举;hello 30s,dead 120s。会学习邻居接口IP地址所对应的主机路由 |
NBMA | NBMA,可以建立多个邻居关系,需要进行DR和BDR选举,hello 30s,dead 120s。无法自动建立邻居关系 |
VLINK | vlink;以单播的形式发送hello包,hello 10s,dead 40s。不需要进行 |
广播型多路访问类型(BMA)
OSPF在BMA网络类型的接口上通常以组播的方式发送hello报文,LSU报文和LSACK报文。以单播的形式发送DD报文和LSR报文
点到点类型(P2P)
OSPF在网络类型为P2P的接口上以组播的方式(224.0.0.5)发送所有的协议报文,并且OSPF在P2P类型的网络中不会选举DR和BDR
该接口类型信息中,缺少了在BMA网络中看到的DR优先级、DR和BDR的描述信息
环回接口(虚拟接口)
Type(P2P):在思科中有专门定义的loopback类型作为环回接口的类型,而华为中没有定义,使用P2P来填充(没有意义)
所有通过OSPF学习到的环回接口的路由掩码信息都是32位,这是因为环回接口是一个模拟的接口,它实际上并没有连接用户,所以没有其余的IP地址存在于环回接口之下,只有一个可用的IP地址,故而使用32位掩码来直接标识环回接口,保证路由信息的精确性(避免产生环路或者路由黑洞)
原因在于环回接口此时并没有邻居,也就无法进行正常的DR和BDR选举,当时间超时后,环回接口会认为自己就是DR,并将相应信息填充到该接口信息中
华为将tunnel接口的传输速率定义为64kbps
P2MP接口类型
OSPF在P2MP类型的接口上通常以组播的方式发送hello报文,以单播的方式发送其他报文
P2MP类型无法由设备自动生成,必须由管理员手工更改
P2MP类型网络不需要选举DR和BDR
非广播型多路访问类型(NBMA)
在NBMA场景中,为了让OSPF路由器之间能够正确建立邻居关系,需要使用单播邻居的方式来发送OSPF报文
双向配置
OSPF的不规则区域
远离骨干的非骨干
使用tunnel隧道
在R2和R3之间构建一条隧道,之后,将这个隧道宣告到area 0,相当于将R3这个非法的ABR设备合法化
使用VPN隧道解决不规则区域的问题
1.可能产生选路不佳
2.可能造成重复更新
3.因为虚拟链路的存在,R2和R3之间也需要建立邻居,导致他们之间维护的周期性数据将穿越area 1,导致中间区域的资源消耗过大
虚链路(Vlink):专门为了解决OSPF不规则区域所诞生的技术,是一种虚拟的、逻辑的链路
虚链路的配置条件:只能穿越一个区域
Vlink被视为骨干区域的一段延伸(vlink永远属于area0)
使用vlink解决不规则区域的问题
1.因为虚拟链路的存在,R2和R3之间也需要建立邻居,导致他们之间维护的周期性数据将穿越area1,导致区域的资源消耗过大
2.只能穿越一个区域
实际上,vlink不仅仅应用在我们上述两种不规则区域,还可以用来修复一些次优路径或者骨干区域不健壮问题
Vlink解决没有骨干区域的场景
Vlink环路问题
解决方法:OSPF规定,Vlink所在区域不允许传递聚合路由
使用多进程双向重发布
重发布:把一种路由信息以另一种路由协议的方式发布出去
OSPF的LSA详解
LSA头部
链路状态老化时间(Link-State Age)
16bit,单位s
当该LSA被始发路由器产生时,该值被设置为0,之后随着该LSA在网络中被泛洪,老化时间逐渐积累
最大老化时间:3600s。当达到该时间后,该LSA会被本地路由器删除
在OSPF网络中,只有始发路由器能够提前使该LSA老化,并删除全网该LSA信息
组步调计时器(cisco):240s
可选项
内容和hello包一致
链路状态类型(Link-State Type)
代指该条LSA的类型
链路状态ID
用来标识LSA,不同类型的LSA,对该字段的定义不同
通告路由器
产生该LSA的路由器的RID
链路状态序列号
32位bit,逐次加一
起始:0X80000001;截止:0X7FFFFFFF
序列号空间
线性序列号空间
循环序列号空间
棒棒糖序列号空间
校验和
会参与到LSA的新旧关系对比
判断LSA的新旧关系(链路状态序列号、老化时间、校验和)
1.具备较高序列号的LSA信息更优
2.具备相同序列号的LSA,选择拥有较大校验和的LSA
3.具备相同序列号和校验和,如果某条LSA的老化时间被设置为最大老化时间,则认为该LSA最新
4.具备相同序列号和校验和,没有任何一条LSA的老化时间为最大老化时间,会对比两个LSA的老化时间之差
(1)当差值大于15min(MaxAge Diff:一个LSA实例从始发设备发出,直到被泛洪到整个AS边界所需要的最长时间),会认为两条LSA是不同的,选择较小的LSA
(2)当差值小于等于15min,会认为两条LSA相同,选择随机一个
类型 | LS ID | 通告者 | 作用范围 | 携带信息 |
Type-1 LSA(Router) | 通告者的RID | 区域内所有运行OSPF协议的路由器的RID | 单区域 | 本地接口 |
Type-2 LSA(network) | DR接口IP地址 | 单个MA网络中DR所在的路由器的RID值 | 单区域 | 单个MA网络拓扑信息的补充 |
Type-3 LSA(summary) | 路由信息的目标网络号 | ABR,在通过下一个ABR设备时会被修改为新的ABR的RID | 单区域(ABR临近的) | 路由信息 |
Type-5 LSA(ase) | 域外的㕛信息的目标网络号 | ASBR | 整个OSPF域 | 域外路由信息 |
Type-4 LSA(asbr) | ASBR的RID | 与ASBR同区域的ASBR设备,在通过下一个ABR设备时会被修改为新的ABR的RID | 除去ASBR所在区域的单区域 | ASBR的位置信息 |
Type-1 LSA(Router)
对于一类LSA,网络中所有设备都会发送并且只发送一条
同属于一个区域的接口共同使用一个一类LSA信息进行描述
若存在多个区域,路由器会为每个区域单独产生一个一类LSA,并且每个LSA只描述接入该区域的接口
Type-2 LSA(network)
在一个网络中,只需要一台设备发送
该LSA仅存在于MA网络中,由DR设备产生
链路状态ID为DR的接口IP地址
Type-3 LSA(summary)
通告者均为ABR设备
每一条路由项都使用单独的一条LSA信息进行描述
该LSA中的开销值,指的是通告者到达目的网段的开销值
设备在接收3类LSA之后,需要根据一类LSA和二类LSA计算的拓扑信息来寻找三类LSA的通告者
如果通告者是所在区域的ABR设备,那么自然而言,设备可以通过一类和二类LSA找到通告者;
Type-5 LSA(external)
通告者:ASBR
LS ID:域外路由信息的目标网络号
传播范围:整个OSPF域
五类LSA中携带的是域外路由信息,通过重发布导入OSPF网络,因为不同协议对开销值的算法标准不同,所以在路由导入后,将直接舍弃原本的开销值,之后给
E位:表示外部路由使用的度量值类型,OSPF定义了两种外部路由度量值类型,分别为metric-type-1(E=0)、metric-type-2(E=1)
type-1:所有设备到达域外目的网段的开销值为本地到达ASBR的开销值+种子度量值
type-2:域内所有设备到达域外目的网段的开销值等于种子度量值;OSPF默认使用类型2
外部路由标记:一个只有外部路由才能携带的标记,经常被用于部署路由策略或策略路由
在华为路由器上,缺省时,该字段值被设置为1
转发地址(FA)
FA字段默认为0.0.0.0,;则到达该外部网段的流量会被转发引入到发送这条LSA的ASBR设备
而若字段不为0.0.0.0,则流量会被发送给这个FA字段所表示的地址
作用:解决次优路径问题(与ICMP中的重定向具有相同效果)
FA被设备为其余数值的条件:
引入外部路由的ASBR在其连接外部网络的接口上激活了OSPF协议
该接口的网络类型为BMA或者NBMA
该接口的IP地址属于OSPF协议配置network命令范围
该接口没有被配置为静默接口
Type-4 LSA(Sum-Asbr)
链路状态ID:ASBR的RID值
度量值:填写的是该通告者到达ASBR的cost值
四类LSA的任务就是在辅助五类LSA完成验算过程,找到ASBR
OSPF优化
主要目的:减少LSA的更新量以及数量
1.路由汇总(减少骨干区域的LSA更新量)
2.OSPF特殊区域(减少非骨干区域的LSA更新量)
OSPF路由汇总(路由聚合)
OSPF路由汇总是由手工部署的
OSPF的汇总称为区域汇总,因为OSPF在区域之间才传递路由信息,并且是对路由进行汇总而非LSA信息
域间路由汇总
只要站点内这条汇总路由所涵盖的所有明细路由中有一条是有效的,则ABR就会通告该汇总路由,而当所有的明细路由全部失效时,ABR设备才不会继续通告该汇总路由中
汇总并不会影响ABR设备自身的明细路由
汇总会抑制明细路由的发送
域间路由汇总只能汇总ABR设备自身通过一类LSA和二类LSA信息学习到的路由条目
域外路由汇总
5类LSA汇总之后的开销值计算方法:
Type-2:汇总网段的开销值等于所有明细路由开销值中的最大值+1
Type-1:汇总网段的开销值等于所有明细路由开销值中的最大值
OSPF的特殊区域
第一大类
条件:(1.不能是骨干区域 2.不能存在虚链路 3.不能存在ASBR设备)
末梢区域(Stub Area)
如果将一个区域配置成末梢区域,则这个区域将不再学习4类和5类LSA(ABR设备将不会给在该区域转发4类和5类LSA信息)
该区域将拒绝学习域外路由信息,但是,其依然具有访问域外路由的需求,所以,由该区域ABR设备,会自动生成一条指向骨干区域的3类LSA缺省路由
注意:一旦做特殊区域,则所有区域内的设备都必须做特殊区域
完全末梢区域(Totally Stub Area)
在末梢区域的基础上,进一步拒绝学习3类LSA,仅保留3类缺省即可
第二大类特殊区域
条件:(1.不能是骨干区域 2.不能存在虚链路 3.存在ASBR设备)
非完全末梢区域(NSSA)
如果将一个区域配置成非末梢区域,则这个区域将不再学习4类和5类LSA(ABR设备将不会在给该区域转发4类和5类LSA信息)
该区域依然需要将域外路由信息导入,但因为该区域拒绝5类LSA,所以只能以7类LSA的形式来继续传递域外路由信息
之后,在7类LSA信息离开NSSA区域后,需要再转换成5类LSA进行传输
该区域将拒绝学习域外路由信息,但是,其依然具有访问域外路由的需求,所以,由该区域ABR设备,会自动生成一条指向骨干区域的7类LSA缺省路由
O_NSSA(7类域外路由) 默认优先级也是150
完全的非完全末梢区域(Totally NSSA):在NSSA的基础上,进一步拒绝学习3类LSA,产生一条3类缺省LSA
NSSA环路问题(NSSA区域缺省路由配置错误可能会导致路由环路的产生)
场景一
场景二
R4和R5无法下发OSPF缺省路由的原因是本地路由表中的静态缺省路由被R3发送的七类缺省路由所替代。当删除R3的下发命令后,R4和R5均会下发七类缺省路由,并学习对方的七类缺省路由,但是并不会将 从对方学习到的七类缺省路由加入到路由表中。
总结:
1. NSSA区域的七类LSA实际上是需要ASBR或者ABR自己下发的
2. 而如果多台设备均下发成功七类LSA缺省路由,则虽然都会收到LSA信息,但并不会将其余设备的 LSA缺省信息加入到本地路由表中。因为始终相信自己的缺省路由是最好的
3. 而对于第一台发布七类缺省路由的设备而言,会认为我身上已经有了一条去往外部区域的路由,并 且本地作为通告者,那么当他接收到其他设备发送来的七类缺省路由,也不会进行学习(华为 运用该逻辑解决Totally NSSA中的环路问题)
(1)华为为了解决环路问题,保留了NSSA区域由ABR产生的七类LSA缺省路由,这样做的好处就 是使得设备相信自己产生的这条LSA,而对于其他设备传递来的七类LSA,只接收到不使用
(2)这样一来,ABR设备就不会具备指向NSSA区域内部的缺省路由,更不会将这个缺省路由传递 给骨干区域,从而避免环路问题
OSPF规定:在NSSA区域中,可能同时存在多个ABR或ASBR,为了防止路由环路产生,边界路由器 之间不计算对方发布的缺省路由
NSSA负载分担解决次优路径问题
OSPF对进行7转5操作的规范:
1. P比特位用于告知路由器该Type-7 LSA是否需要转换
2. 缺省情况下,转换路由器是NSSA区域中RID值最大的ABR
3.只有P比特位和FA字段不为0的Type-7LSA才能被转换为五类
NSSA区域如果没有FA字段,将会有很大的可能因为7转5操作出现次优路径
FA字段解决NSSA环路
若本地存在两条LSA除了通告者不同外,只有FA字段的值不同,那么对于这两条五类或七类LSA而言,FA字段不为0.0.0.0的LSA优先级更高