网络掩码
在R2上修改网络掩码后,
R2会将与R3的状态立即修改为Down状态。而R3会在40S死亡时间之后进行状态切换。
原因在于,R2在修改IP地址的掩码后,会认为之前的连接中断,需要重新建立连接,所以重置状态机。
而R3则认为是无法沟通。故会等待死亡时间超时后才切换状态。
并且,该情况,在R3等待40S周期内,还是可以向R2转发数据,R2可以接收到该数据包,但无法回复。
Hello时间
[r1-GigabitEthernet0/0/0]ospf timer hello 20
Dead时间
[r1-GigabitEthernet0/0/0]ospf timer dead 120
注意:修改hello时间,则死亡时间随之改变,而仅修改死亡时间,hello间隔时间不变。
OSPF特殊区域标记
跟修改掩码效果相同。
认证字段
两者均需要等待死亡时间超时,才会从full状态切换到down状态。
DBD包
1.使用未携带数据的DBD报文进行主从关系选举
2.使用携带数据的DBD报文进行目录信息共享
3.使用未携带数据的DBD报文进行确认
接口最大传输单元(接口的MTU)
华为将该值设置为0
华为默认不对MTU值进行检测
[r1-GigabitEthernet0/0/0]ospf mtu-enable (开启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位主机路由。hello 10S;dead 40S |
P2MP |
P2MP,可以建立多个邻居关系,不需要进行DR和BDR的选举;hello 30S,Dead 120S。会学习邻居接口IP地址所对应的主机路由 |
NBMA |
NBMA,可以建立多个邻居关系,需要进行DR和BDR的选举,Hello 30S,Dead 120S。无法自动建立邻居关系 |
VLINK |
Vlink;以单播的形式发送hello包,hello 10S;dead 40S;不需要进行DR和BDR 的选举。 |
广播型多路访问类型(BMA)
[r2]display ospf interface GigabitEthernet 0/0/0
OSPF在BMA网络类型的接口上通常以组播的方式发送hello报文、LSU报文和LSACK报文。以单播的形式发送DD报文和LSR报文。
点到点类型(P2P) OSPF在网络类型为P2P的接口上以组播的方式(224.0.0.5)发送所有的协议报文。并且OSPF在P2P类型的网络中不会选举DR和BDR。
该接口类型信息中,缺少了在BMA网络中看到的DR优先级、DR和BDR的描述信息。
[r2]display current-configuration configuration ospf //查看所有当前配置中的关于OSPF的
环回接口(虚拟接口)
Type----P2P-----在思科中有专门定义的Loopback类型作为环回接口的类型,而华为中没有定义,使用P2P来填充(没有意义)。
所有通过OSPF学习到的环回接口的路由掩码信息都是32位,这是因为环回接口是一个模拟的接口, 它实际上并没有连接用户,所以没有其余的IP地址存在于环回接口之下,只有一个可用的IP地址,故而使用32位掩码来直接标识环回接口。保证路由信息的精确性。----避免产生环路或者路由黑洞。
[r1-LoopBack0]ospf network-type broadcast //修改网络类型为BMA
State:Waiting
原因在于环回接口此时并没有邻居,也就无法进行正常的DR和BDR选举,当时间超时后,环回接口会 认为自己就是DR,并将相应信息填充到该接口信息中。
P2MP接口类型
OSPF在P2MP类型的接口上通常以组播的方式发送hello报文,以单播的方式发送其它报文。
P2MP类型无法由设备自动生成,必须由管理员手工更改。
P2MP类型网络不需要选举DR和BDR。
非广播型多路访问类型(NBMA)
在NBMA场景中,为了让OSPF路由器之间能够正确建立邻居关系,需要使用单播邻居的方式来发送
OSPF报文。
双向配置。
[r4-ospf-1]peer ?
IP_ADDR
OSPF的不规则区域
远离骨干的非骨干区域
使用tunnel隧道
在R2和R3之间构建一条隧道,之后,将这个隧道宣告到Area0,相当于将R3这个非法的ABR设备合法
化。
使用隧道解决不规则区域的问题
1. 可能产生选路不佳
2. 可能造成重复更新
3. 因为虚拟链路的存在,R2和R3之间也需要建立邻居。导致他们之间维护的周期性数据将穿越
Area1,导致中间区域的资源消耗过大。
虚链路---Vlink
专门为了解决OSPF不规则区域所诞生的技术。是一种虚拟的、逻辑的链路。
[r2-ospf-1-area-0.0.0.1]vlink-peer 3.3.3.3
[r3-ospf-1-area-0.0.0.1]vlink-peer 2.2.2.2
虚链路的配置条件:只能穿越一个区域。
Vlink链路实际上全部使用单播报文来描述信息。
Vlink被视为骨干区域的一段延伸----vlink永远属于Area0。
使用vlink解决不规则区域的问题
1. 因为虚拟链路的存在,R2和R3之间也需要建立邻居。导致他们之间维护的周期性数据将穿越Area1,导致中间区域的资源消耗过大。
2. 只能穿越一个区域。实际上,vlink不仅仅应用在我们上述两种不规则区域,还可以用来修复一些次优路径或者骨干区域不健壮问题。
Vlink解决没有骨干区域的场景。
Vlink环路问题
解决方法:OSPF规定,vlink所在区域不允许传递聚合路由。
使用多进程双向重发布
重发布
把一种路由信息以另一种路由协议的方式发布出去。
[r3-ospf-1]import-route ospf 2 ---将OSPF进程2的路由导入到OSPF进程1
[r3-ospf-2]import-route ospf 1
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
序列号空间
线性序列号空间 --- 从最小值开始一直到最大值,依次加1,新旧关系容易判断,但是数量有限。若超出上限,则将无序号可用,导致新旧关系无法判断。
循环序列号空间 ---序号可以循环使用,不会出现序号使用完的情况,但是若两个序号差值比较大的时候,可能会导致新旧关系无法判断,
棒棒糖序列号空间 --- OSPF使用的就是这种序列空间,但是,其进入循环部分后,依旧会面临循环型序列空间的问题,所以,OSPF要求其不能进行循环,相当于是一个直线型序列空间,其取值0X80000001—0X7FFFFFFE。
OSPF刷新序列号空间的方法:当一条LSA信息的序列号达到0x7FFFFFFE是,发出的路由器会将他的老化时间改为3600s,其他设备收到这条LSA信息局, 会根据序号判断这是一条最新的LSA信息、将改信息刷新到本地LSDB中。之后, 因为这条LSA信息的老化时间达到到3600s, 则将这条LSA信息删除掉。始发的路由器会再发送一条相同的LSA信息,其序列号使用0x80000001,其他设备收到后将会把最新的LSA信息刷新到LSDB中, 则刷新了序列号空间。
校验和
会参与到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设备 |
单区域,ABR相邻的单区域 |
域间路由信息 |
Type-5 LSA (ase) |
域外路由的的目标网络号 |
ASBR |
整个OSPF网络 |
域外路由信息 |
Type-4 LSA (asbr) |
ASBR的RID |
与ASBR同区域的ABR设备,再通过下一个ABR设备时将会被修改为新的ABR设备RID |
除去ASBR所在的区域的单区域 |
ASBR的位置信息 |
Type-7 LSA (nssa) |
域外路由的目标网络号 |
ASBR,离开NSSA区域后转成五类 |
NSSA区域 |
域外路由信息 |
Type-1 LSA----Router
对于一类LSA,网络中所有设备都会发送,并且只发送一条
同属一个区域的接口共同使用一个一类LSA信息进行描述。
若存在多个区域,路由器会为每个区域单独产生一个一类LSA,并且每个LSA只描述接入该区域的接口。
Type-2 LSA----Network
在一个网络中,只需要一台设备发送
该LSA仅存在于MA网络中,由DR设备产生
链路状态ID为DR的接口IP地址
Type-3 LSA---Sum-Net
通告者均为ABR设备
每一条路由项都使用单独的一条LSA信息进行描述
该LSA中的开销值,指的是通告者到达目的网段的开销值
设备在接收到3类LSA之后,需要根据一类LSA和二类LSA计算的拓扑信息来寻找三类LSA的通告者。
如果,通告者是所在区域的ABR设备,那么自然而言,设备可以通过一类和二类LSA找到通告者;若不是本区域的ABR设备通告的,则需要转换通告者。
Type-5 LSA----External
通告者---ASBR
LS ID----域外路由信息的目标网络号
传播范围----整个OSPF域
五类LSA中携带的是域外路由信息,通过重发布导入OSPF网络,因为不同协议对开销值的算法标准不同,所以,在路由导入之后,将直接舍弃原本的开销值,之后给路由赋予一个规定值-----种子度量值
OSPF的种子度量值为1
[r4-ospf-1]import-route rip 1 cost 5
E位:
表示外部路由使用的度量值类型,OSPF定义了两种外部路由度量值类型,分别为Metric
Type-1(E=0)、Metric-Type-2(E=1)
Type-1:所有设备到达域外目的网段的开销值为本地到达ASBR的开销值+种子度量值
Type-2:域内所有设备到达域外目的网段的开销值等于种子度量值;OSPF默认使用类型2.
[r4-ospf-1]import-route rip 1 cost 5 type 1
外部路由标记
一个只有外部路由才能携带的标记,经常被用于部署路由策略或策略路由。
在华为路由器上,缺省时,该字段值被设置为1。
转发地址---FA
FA字段默认为0.0.0.0;则到达该外部网段的流量会被转发引入到发送这条LSA的ASBR设备。
而若FA字段不为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的位置,里面只携带一个开销值。
Type-7 LSA----NSSA
E位----表示允许洪泛五类LSA信息,如果做成特殊区域,则E位为0
N位---属于opention字段,允许处理七类LSA
P位---不属于opention字段,代表支持7转5操作。
在7类LSA中,在不存在选路不佳的情况下,一般会使用通告者(ASBR)设备的环回接口地址作为转发地址。
如果存在多个环回接口,则使用最先宣告的环回接口地址作为转发地址。
如果没有环回接口,则使用武力接口的地址作为转发地址。
华为逻辑-----cisco---选择最后一个宣告的IP。
路由撤销
一类LSA撤销
一类LSA实质是是在通过:序列号+1;校验和不变;老化时间=0的新LSA来覆盖掉老的一类LSA。
二类LSA撤销
与一类LSA玩法相同
三类LSA撤销
三类LSA的撤销方式:seq不变,校验和不变,老化时间设置为3600S若采用seq+1,校验和不变,老化时间不变的方式撤销,当需要撤销的三类LSA数量较大时,会导
致路由器会消耗大量计算资源。
五类与七类LSA撤销
三类LSA的撤销方式:seq不变,校验和不变,老化时间设置为3600S
若采用seq+1,校验和不变,老化时间不变的方式撤销,当需要撤销的三类LSA数量较大时,会导
致路由器会消耗大量计算资源。
OSPF优化
主要目的----减少LSA的更新量以及数量。
1. 路由汇总(减少骨干区域的LSA更新量)
2. OSPF特殊区域(减少非骨干区域的LSA更新量)
OSPF路由汇总(路由聚合)
OSPF路由汇总是由手工部署的
OSPF的汇总称为----区域汇总,因为OSPF在区域之间才传递路由信息,并且是对路由进行汇总而非 LSA信息。
1.域间路由汇总
2.域外路由汇总
域间路由汇总
[GS-R2-ospf-1-area-0.0.0.1] abr-summary 192.168.0.0 255.255.224.0
[GS-R3-ospf-1-area-0.0.0.2]abr-summary 192.168.32.0 255.255.224.0
只要站点内这条汇总路由所涵盖的所有明细路由中有一条是有效的,则ABR就会通告该汇总路由,而当所有的明细路由全部失效时,ABR设备才不会继续通告该汇总路由。
汇总并不会影响ABR设备自身的明细路由。
汇总会抑制明细路由的发送。
域间路由汇总只能汇总ABR设备自身通过一类LSA和二类LSA信息学习到的路由条目。
域外路由汇总
[r1-ospf-1]asbr-summary 10.1.0.0 255.255.0.0
5类LSA汇总之后的开销值计算方法:
Type-2------汇总网段的开销值等于所有明细路由开销值中的最大值+1
Type-1------汇总网段的开销值等于所有明细路由开销值中的最大值
OSPF的特殊区域
第一大类-----1、不能是骨干区域;2、不能存在虚链路;3、不能存在ASBR设备
末梢区域(Stub Area)
如果将一个区域配置成末梢区域,则这个区域将不再学习4类和5类LSA。-----ABR设备将不会在给该区域转发4类和5类LSA信息。
该区域将拒绝学习域外路由信息,但是,其依然具有访问域外路由的需求,所以,由该区域ABR设备,会自动生成一条指向骨干区域的3类LSA缺省路由。
[r5-ospf-1-area-0.0.0.2]stub
[r1-ospf-1-area-0.0.0.2]stub
注意:一旦做特殊区域,则所有区域内的设备都必须做特殊区域。
完全末梢区域(Totally Stub Area)
在末梢区域的基础上,进一步拒绝学习3类LSA,仅保留3类缺省即可。
[r1-ospf-1-area-0.0.0.2]stub no-summary 该命令仅需要在ABR设备上配置即可
第二大类特殊区域----1、不能是骨干区域;2、不能存在虚链路;3、存在ASBR设备。
非完全末梢区域(NSSA)
如果将一个区域配置成非末梢区域,则这个区域将不再学习4类和5类LSA。-----ABR设备将不会在给该区域转发4类和5类LSA信息。
该区域依然需要将域外路由信息导入,但因为该区域拒绝5类LSA,所以,只能以7类LSA的形式来继续传递域外路由信息。
之后,在7类LSA信息离开NSSA区域后,需要再转换成5类LSA进行传输。
该区域将拒绝学习域外路由信息,但是,其依然具有访问域外路由的需求,所以,由该区域ABR设备,会自动生成一条指向骨干区域的7类LSA缺省路由。
[r5-ospf-1-area-0.0.0.2]nssa
[r1-ospf-1-area-0.0.0.2]nssa
O_NSSA ------7类域外路由信息的标记,默认优先级也是150。
完全的非完全末梢区域(Totally NSSA)
在NSSA的基础上,进一步拒绝学习3类LSA,产生一条3类缺省LSA。
[r1-ospf-1-area-0.0.0.2]nssa no-summary
NSSA环路问题
NSSA区域缺省路由配置错误可能会导致路由环路的产生。
[r3-ospf-1-area-0.0.0.1]nssa default-route-advertise
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才能被转换为五类。
[r4-ospf-1-area-0.0.0.1]nssa suppress-forwarding-address //在进行7转5时,删除转发地址
[r1-ospf-1-area-0.0.0.1]nssa translator-always //强制开启7转5操作,在ABR设备上配置
若本地存在两条LSA除了通告者不同外,只有FA字段的值不同,那么对于这两条五类或七类LSA而
言,FA字段不为0.0.0.0的LSA优先级更高。
NSSA区域如果没有FA字段,将会有很大的可能因为7转5操作出现次优