OSPF

OSPF开放式最短路径优先(Open Shortest Path First)
是一组通过统一的路由政策或路由协议互相交换路由信息的网络

OSPF的路由计算过程
每台路由器会先根据自己周围的网络拓扑生成LSA,并通过更新报文将LSA传给网络中的其他路由器,
通过其他路由器的LSA构建出自己的LSDB,根据LSDB使用SPF算法(迪科斯彻 Dijkstra),算出到达每个LSDB中各个路由器的路由

OSPF的Router-ID
是32位无符号整数
作用:
1、唯一标识一台路由器
2、用于DR和BDR的选举(在优先级相同时)

Router-ID的配置:
1、手工配置
2、如果未手工配置,选择IP地址最大的Loopback接口
3、如果没有配置Loopback接口,选举IP地址最大的物理接口

在更改Router-ID后,在用户视图reset ospf 100 process

OSPF的特点:
1.快速收敛:在第一次收敛使用SPF算法,在之后的拓扑变动使用ISPF算法,在拓扑发生变动时立即发送更新报文。
2.适应范围广:支持4种网络类型,最多支持几百台路由器。
3.区域划分:允许自治区的网络被划分成区域来管理,减少了LSDB的内存消耗和CPU的负担。
4.无环路:区域内有SPF算法防环,区域间所有非骨干区域必须和骨干区域相连,数据由骨干区域进行传递,ABR只会将三类LSA转发到骨干区域,区域间水平分割,防止自己发出的三类LSA再回到自己的区域。
5.等价路由:支持到达同一目的的地址的多条等价路由。
6.路由分级:分为区域内路由、区域间路由、第一类外部路由、第二类外部路由。
7.支持验证:基于区域和接口认证,当一端是区域认证,一端是接口认证,认证方式和密码一样,可以交互LSA,原因是在OSPF报文中只有认证类型(0不认证、1明文认证、2md5认证)和认证所需的信息。
8.组播发送:在组播网络中发送协议报文(DR\BDR向DROTER发送目的网段为224.0.0.5 DROTHER向DR\BDR发送目的地址为224.0.0.6)。

OSPF的建立邻居
组播网络:向组播地址224.0.0.5发送hello报文
单播网络:需要手动peer对端的Router-ID

OSPF的链路状态信息
OSPF同步的是链路状态信息
1、链路的类型(网络类型:P2P、Broadcast、NBMA、P2MP)
2、接口的IP地址和掩码
3、链路上所连接的邻居路由器
4、链路的带宽(开销)

OSPF支持的网络类型
1.P2P
Hello Interval 10s Dead Interval 40s
链路层协议协议为PPP、HDLC
不选举DR\BDR
组播发送所有报文

2.广播Broadcast
Hello Interval 10s Dead Interval 40s
链路层协议协议为 Ethernet
选举DR\BDR
单播发送DD、LSR报文,组播发送Hello、LSU、LSACK

3.NBMA(需要手动发现邻居,不支持广播和组播)
Hello Interval 30s Dead Interval 120s
链路层协议是帧中继,X.25
选举DR\BDR
单播发送所有报文

4.P2MP
Hello Interval 30s Dead Interval 120s
不会是默认的网络类型,是由非全互连的 NBMA 改为点到多点的网络
不选举DR\BDR
组播发送Hello报文,单播发送其他报文


P2P和MA可以建立邻居,但是学不到路由。
P2P和P2MP可以建立邻居,但是学不到路由,修改链路两端设备hello报文和dead报文间隔一致后可以学到路由。(p2p可以转换成p2mp)。
MA和P2MP不可以建立邻居,这是因为hello报文间隔和dead报文间隔不一致,链路两端设备hello报文和dead报文间隔一致后,可以建立邻居,但是学不到路由。
NBMA只能和NBMA建立邻居,必须手工配置指定ospf邻居。

更改网络类型 ospf network-type{ broadcast | nbma | p2mp | p2p [ peer-ip-ignore ] }

OSPF基于接口带宽计算开销
接口开销 = 带宽参考值 / 带宽
带宽参考值缺省100Mbit/s

修改开销的方法:
1、直接在接口下修改开销,范围仅限本接口
2、修改带宽参考值,需要修改所有的路由器,保证选路的一致性

OSPF协议头部
还包含了IP报文头部,协议号89

OSPF的报文头部有什么字段
Version : 版本号有v2 和v3
Type : OSPF报文类型(Hello、DD、LSR、LSU、LSACK)
Packet length : 报文长度
Router ID:生成此报文的路由器的Router ID
Area ID:要被通告到的区域
Checksum : 校验和
Auth Type : 是否认证 0 不认证 1 明文认证 2 MD5认证
Auth Data :认证所需的信息

OSPF的报文类型
Hello 周期性发送,发现和维持邻居关系(Keepalive机制),进行DR和BDR的选举
DD(Database Description) 描述本地LSDB中每一条LSA的摘要信息,用于两台交换机同步数据库,选举主从使用Router ID大的
LSR(Link State Request) 向对方请求所需的LSA
LSU(Link State Update) 向对方发送其所需要的LSA
LSACK(Link State Ack) 向对方发送确认收到 LSA

OSPF的Hello报文有什么字段
Network Mask : Hello报文的接口的网络掩码
HelloInterval : Hello报文的时间间隔
Options : 标识OSPF的可选功能
Router Priority(Rtr Pri) :DR优先级 选举DR和BDR 默认为1 最大255 0不参与选举
RouterDeadInterval : 邻居失效时间,通常是四倍的Hello报文
Designated Router : DR的IP地址,如果为0.0.0.0 则没选举出DR
Backup Designated Router : BDR的IP地址,如果设置为0.0.0.0,表示未选举BDR
Neighbor : 邻居的Router ID列表,表示本路由器已经从这些邻居收到了合法的Hello报文

OSPF的DD报文有什么字段
Interface MTU : 不分片的情况下,此接口最大可发出的ip报文长度
Options : 标识OSPF的可选功能
I 位 : 当置位为1时,表明这是第一个DD报文,否则不置位
M 位 : 置位为1的时候表明DD报文中还有LSA头要传递,否则不置位
M/S 位 : 置位为1表示自己为master,否则不置位
DD Sequence Number : 序列号,主从双方利用序列号来保证报文传输的可靠性和完整性
LSA headers : 本LSDB的LSA头

OSPF的Option字段
DN :用来避免在MPLS V PN中出现环路,PE发送给CE的3、5、7类LSA的DN置位1,PE不计算DN置位1的LSA,防止从CE学到自己发的路由
O :该字段指出支持 Opaque (9、10、11类LSA)
DC :当始发路由器支持按需链路上的OSPF的能力时被置位(两端不一样会协商成都为0)
EA :当始发路由器具有接收和转发8类LSA的能力时被置位
N :只用在Hello报文中 N=1标识支持7类LSA N=0表面不接收和发送NSSA LSA
P :只用在NSSA LSA 告诉NSSA区域的ABR路由器将7类转换为5类LSA
MC :当始发路由器支持转发组播数据包的能力时被置位
E :当始发路由器具有接收5类LSA的能力时被置位
MT :当始发路由器支持多拓扑OSPF

OSPF的LSA中包含什么字段(通用)
LS type : LSA的类型(Hello、DD、LSR、LSU、LSACK)
Link State ID : 该LSA所描述的Router ID(1类——产生LSA的Router ID;2类——DR的IP地址;3类——目的IP地址;4类——ASBR的Router ID;5类——目的IP地址)
Advertising Router :(1类LSA—产生LSA的Router ID;2类LSA—DR的Router ID;3类LSA—ABR的Router ID;4类LSA—产生该LSA的ABR的Router ID;5类LSA—ASBR的Router ID)
以上3条参数唯一确定一条LSA
LS age : 生存时间
LS sequence number :用于检测旧的和重复的LSA,序列号,越大越新
Checksum :校验和
Length :报文长度

OSPF的状态机(建立邻居关系——LSDB同步)

邻居:
1、在刚开始运行OSPF协议的时候路由器的状态都为Down,会向附近的路由器发送Hello报文
2、当是NBMA网络的时候会变为Attempt状态
3、当收到Hello报文,但是自己不在所收到的Hello报文的邻居列表中,会变成Init状态
4、当收到带有自己的邻居列表报文后变为2-Way状态,邻居关系建立成功。
邻接:
1、当两个交换机状态都为2-Way状态,建立了邻居后,进入ExStart状态,两台设备会互相发送I-bit置位1(第一个DD报文)、M-bit置位1(后面还有DD报文要发送)、MS-bit置位1(认为自己是主路由器)
2、选举主从会比较谁的Router-ID大谁就是主设备,然后会产生Negotiation-down事件从Exstart变为ExChange
3、发送一个(I=0,M=0,MS=0)DD报文,包含LSDB摘要的信息,seq为主设备的序列号表示回复主设备并宣告自己是从设备
4、当主设备收到从设备发来的LSDB摘要的DD报文,就会产生Negotiation-down事件从Exstart变为Exchange,并且发送一个(MS=1)的携带LSDB摘要的DD报文给从设备
5、从设备会对主设备发送的每一个DD报文进行确认,如果发现DD报文中LSDB摘要是本地没有的,就会进入Loading状态,就会发送LSR请求报文
6、当收到对端的LSR,就会发送LSU报文给对端,收到LSU报文后,会从Loading状态变为Full状态,并且回复ACK

OSPF的DR和BDR选举
DR/DBR只在Broadcast、NBMA网络类型中选举

DR的作用:
1、减少邻接关系(非DR路由器只与DR建立邻居,同步LSDB)
2、减少OSPF协议流量(非DR路由器之间不会交互LSA)

DR/BDR的选举规则:基于接口
1、接口的DR优先级越大越优先
2、接口的DR优先级相同时Router ID越大越优先

只有优先级大于 0 的路由器才具有选举资格,优先级为0不参与选举
优先级的范围1~255 默认为1 优先级越大越优先
OSPF的DR不会被抢占(当出现更高优先级的路由器DR不会变)

OSPF的LSA有哪些
① 一类LSA :Router LSA
产生者:每台运行OSPF的路由器
范围:向同区域的每台运行OSPF的路由器传播
作用:描述多条链路状态信息
多出flag字段:
1、V:置位表示该路由器连接了虚连接
2、B:置位表示该路由器是ABR
3、E:置位表示该路由器是ASBR
链路状态信息:
1、Link Type 链路状态类型 (PTP Stubnet Transit vlink)
2、Metric 去往邻居的开销
3、Link ID (PTP—邻居的Router ID;Stubnet—接口IP地址;TransNet—DR的Router ID;vlink—虚连接对端的Router ID)
4、Link Data (PTP—路由器接口IP地址;Stubnet—子网掩码;TransNet—路由器接口IP地址;vlink—路由器接口IP地址

② 二类LSA :Network LSA
产生者:由DR产生
范围:向同区域的每台运行OSPF的路由器传播
作用:描述本网段所有路由器的链路状态
多出Attached Router :邻居的Router ID,连接到该网段的路由器列表

③ 三类LSA :Network Summary LSA
产生者:ABR
范围:向邻居区域传递
作用:将本区域的一类LSA和二类LSA汇总生成三类LSA(将链路状态信息转化为路由信息)

④ 四类LSA :ASBR Summary LSA
产生者:ABR
范围:当收到ASBR发来的flag中E置位的1类LSA,会向自身链接的区域中泛洪
作用:描述ABR怎么到达ASBR

⑤ 五类LSA :AS External LSA
产生者:ASBR
范围:传递所有区域除了(NASS区域和Stub区域)
作用:描述ASBR怎么到达外部目的路由(只宣告一条)
多出External type :type-1 type-2 默认type-2
多出FA字段:转发地址,解决次优问题
多出tag字段:携带tag标签,默认为1,用于策略路由

⑦ 七类LSA NSSA External LSA
产生者 :由NSSA区域的ASBR产生
范围:在ASBR所在的NSSA区域内运行OSPF协议的路由器
作用:描述NSSA区域引入的外部路由信息

1、2类LSA>骨干区域3类LSA>非骨干区域3类LSA>ASE TYPE 1>ASE TYPE2>NSSA TYPE1>NSSA TYPE2
同LSA看开销
路由聚合,必须要同区域,同cost

OSPF的SPF算法
每台有LSDB的设备都会进行SPF算法,根节点为自己
根据1、2类LSA构建SPF树,计算最优路由
从根节点开始依次添加各节点LSA中的路由信息
添加顺序为各节点加入SPF树的顺序

OSPF的特殊区域
如果要将一个区域配置成特殊区域,则该区域中的所有路由器必须都要配置成该特殊区域路由器
减小了区域内LSA的数量以及路由计算的压力,还减小了网络故障影响的范围
特殊区域中不能配置虚连接
普通区域 :E 比特位=1 N 比特位=0

stub 1、2、3类LSA 3类缺省3类LSA
STUB 区域:E 比特位=0 N 比特位=0
不存在ASBR

totally stub 1、2类LSA 3类缺省LSA
在OSPF的Area中配置 stub no-summary

nssa 1、2、3、7 类LSA路由7类缺省LSA
NSSA 区域:E 比特位=0 N 比特位=1
会把7类路由转发成5类传给其他区域通告去往外部路由
外部学来的路由会变成7类路由
过滤4、5类LSA
注入一条去往外部的路由
在 NSSA 区域中,可能同时存在多个边界路由器。为了防止路由环路产生,边界路由器
之间不计算对方发布的缺省路由。
如果想发布缺省路由 只有 nssa default-route-advertise 一种方式 ,要求路由器必须有缺省外部路由,这条缺省路由还不会7转5

totally nssa 1、2、7 类LSA、缺省3类LSA、缺省7类LSA
(普通的5类传到totally nssa会7转5会产生缺省的7类LSA)

外部路由类型一和类型二的区别
type=1 计算内部cost + 外部cost
type=2 只计算外部cost
type1 的优先级大于 type2 默认值为type2
外部cost:ASBR生成5类LSA时携带的cost值,默认为1
内部cost:本台路由器到ASBR的cost值

通过修改cost值可以控制OSPF选路
1、先比较类型,E1优于E2
2、若类型都为E1。则比较总开销(内部cost+外部cost)
3、若类型都为E2。先比较外部cost值,小的优先。再比较内部cost值。
4、如果外部cost和内部cost值都一样。就负载均衡

OSPF的路由聚合
为了减少域间和域外的路由条目,如果被汇总的IP地址范围内的某条链路频繁Up/Down,该变化不会通告被汇总的IP地址范围外的设备

在ABR上将一类、二类路由汇总成三类LSA传递到其他区域,生成3类LSA后不能针对3类LSA做汇总
在区域中abr-summary ip地址 子网掩码

在ASBR上将外部路由汇总,通过LSA5将汇总后的路由传递到整个OSPF域,生成5类LSA后不能针对5类LSA做汇总。
1.是自治系统边界,路由器则对5类LSA聚合
2.是NSSA区域,路由器对7类LSA聚合
3.既是自治系统边界又是NSSA区域,路由器对7类转5类LSA聚合
在区域中asbr-summary ip地址 子网掩码

Type3 缺省路由的优先级高于 Type5/7 路由。

路由器发布缺省路由的时候,Area0中必须有full的邻居。

LSA的新旧比较&定时器
LSA每1800s触发一次更新,3600s失效从LSDB中删除
当链路状态发生变化,立即更新

1、首先比较序列号(32位)序列号越大越优先(每产生一条LSA序列号就+1)
2、序列号相同则比较校验和,校验和越高越新
3、校验和相同则比较存活时间,如果这些LSA中只有一条存活时间为3600s,则这条为最新的。
4、如果所有 LSA 的存活时间相差15分钟以内是两条lsa同样新,超过15分钟的,age小的那个lsa新。
5、如果上述条件都一样,则认为这两条LSA是相同的,将本地的LSA保留。

OSPF的认证
分为区域认证和接口认证(区域认证需要所有区域内所有路由器都收发认证相关字段,都配置区域认证,不够灵活)
当两种认证都配置了接口认证更优先
认证方式:
1、null(不认证)
2、simple(明文认证)
3、MD5(加密认证)

OSPF的FA字段(Forwarding Address)
7类LSA的FA字段不能为全0,为了避免其他区域路由器访问NSSA区域会走5类LSA通告的路由器而不是7类LSA通告的路由器。可能导致次优。

7类LSA的FA字段如果所引入外部路由的下一跳在OSPF路由域内,则Forwarding Address直接设置为所引入外部路由的下一跳;如果所引入外部路由的下一跳不在OSPF路由域内,则Forwarding Address设置为该ASBR上某个OSPF路由域内的Stub网段(例如Loopback0接口)的接口IP地址,有多个Stub网段时选IP地址最大者。

5类LSA的FA字段只有当完成以下条件才不为全0
1、网络类型为MA或NBMA
2、ASBR的接口宣告进OSPF进程
3、接口不是静默接口

OSPF的防环机制
区域内防环:
1、1类LSA和2类LSA使用SPF算法
区域间防环:
1、非骨干区域必须和骨干区域相连接,骨干区域只能有一个,保持骨干区域的连续
2、不论cost值大小,优先使用骨干区域的 LSA3 计算路由,优于非骨干区域的 LSA3
3、从非骨干区域学习到的的3类LSA不能传回到非骨干区域,从骨干区域学到的3类LSA不再传回骨干区域
4、3类LSA只能通过ABR进行泛洪,非ABR不会在区域间泛红3类LSA
5、非骨干区域之间互访需要经过骨干区域
外部区域防环:
1、4类LSA的产生和泛洪范围和3类LAS相同,防环规则和3类LSA一样
2、如果5、7类LAS的FA字段全0,则根据4类LSA防环,如果非全0,则根据1、2、3类LSA防环

7类LSA防环:只有Router-ID最大的ABR会进行7转5

OSPF的撤销路由
1、2类LSA通过使用更高序列号来刷新LSA
3、5、7类LSA通过使用3600s最大老化时间来设置为不可用,老化LSA

OSPF的LSA显式和隐式
当OSPF收到对端的LSA要进行确认时,显式会回复ACK,隐式会回复拷贝的LSA给始发

Virtual link(虚连接)
用处:
1、是OSPF协议为了让所有的骨干区域和非骨干区域相连接,在ABR之间建立的虚拟链路。
2、通过一个非骨干区域连接分割的骨干区域
3、为骨干区域提供冗余的备份链路
4、生成等价路由或者路由优先
5、解决区域1、2、3没有连接到区域0在3者4之间建立虚连接
会产生的问题:
1、可能会产生环路
2、路由器ID冲突或路由器ID修改会导致虚链路不稳定(解决办法在规划网段时先规划好router ID)
v-link 单播发送所有报文

在OSPF协议下area区域中配置 vlink-peer 2.2.2.2 md5 1 cipher huawei (设置成虚拟链路添加一个md5认证)
{Smart-discover 使得虚连接的邻居更快达到邻接关系 retransmit 值设置的太小,否则将会引起不必要的重传。网络速度相对较慢的时 候应把该值设的更大一些 trans-delay 值时必须考虑接口的发送延迟。 authentication-mode 命令来确定使用的验证类型 是 MD5 密文验证、简单验证或是无验证模式。 如果没有指定验证口令的类型为 plain 或 cipher,对于简单验证模式默认是 plain 类型; 对于 md5/hmac-md5 验证模式默认是 cipher 类型。}
1、Vlink 只能配置在非骨干区域中,并且不能配置在特殊区域;
2、Vlink 配置时 peer 对方的 router-id;
3、Vlink 不能跨区域建立,要在相同的区域建立,不能建立在区域0中;
4、区域 0 中配置了认证,则 Vlink 也要配置认证;
5、路由可达
6、尽量避免虚链路

虚连接在R2和R4之间建立,R4外部引入了一条10.0.0.0/24的路由
当R3访问10.0.0.0/24时会走R3-R1-R2-R3
环路产生的原因:R4会产生3类LSA分别传给R3和R2,R3学习到10.0.0.0/24的路由是从骨干区域中R1学到的和区域1的R4传给他的,但是area1的10.0.0.0/24路由,由于非骨干区域之间互访需要经过骨干区域,由于骨干区域的 LSA3 优于非骨干区域的 LSA3并不会加入到路由表中,所以产生了环路
R2路由表 去往7.7.7.7下一跳地址为R2-R3之间的R3接口
R3路由表 去往7.7.7.7下一跳地址为R3-R1之间的R1接口

解决办法在R3和R4之间也建立虚连接

OSPF的路由过滤
1、filter-policy ip-prefix {import | export} (在ospf进程中配置)
2、filter {import | export} (区域中配置)
3、asbr-summary not-advertise (在ospf进程中配置)
4、abr-summary not-advertise (区域中配置 对三类过滤)
5、ospf filter-lsa-out (接口上配置,可以过滤任何一类LSA)

OSPF的多进程
OSPF支持多进程,在同一台路由器上可以运行多个不同的OSPF进程,他们直接互不影响,不同OSPF进程之间的路由交互相当于不同路由协议之间的路由交互,路由器的一个接口只能属于一个OSPF进程。

OSPF的快速收敛
1、I-SPF :指当拓扑发生变化,只对受影响的节点进行路由计算,而不是对全部节点重新进行路由计算。
2、PRC :部分路由计算,是指当网络上路由发生变化的时候, 只对发生变化的路由进行重新计算,PRC 不 需要计算节点路径,而是根据 I-SPF 算出来的 SPT 来更新路由。
3、智能定时器: 智能定时器可以根据用户的配置和触发事件的频率动态调整时间间隔对路由计算、LSA 的产生、LSA 的接收进行控制,使网络快速稳定,缺省情况下,OSPF 智能定时器已经打开并且配置了缺省值。
4、修短接口的hello timer和 hellodeadtimer
5、与BFD联动
6、配置特殊区域,减少LSA的泛洪,降低计算LSA的开销

OSPF的1、2类LSA发生变化会触发I-SPF和RPC 3、4、5、7类LSA只会触发PRC

OSPF 的 Database Overflow
限制非缺省外部路由数量,避免数据库超限。
通过设置路由器上非缺省外部路由数量的上限,来避免数据库超限
OSPF网络中所有路由器都必须配置相同的上限值。这样,只要路由器上外部路由的数量达到该上限,路由器就进入Overflow状态,并同时启动超限状态定时器(默认超时时间为5秒),路由器在定时器超过5秒后自动退出超限状态。

OSPF Database Overflow过程:

  • 进入Overflow状态时,路由器删除所有自己产生的非缺省外部路由。
  • 处于Overflow状态中时,路由器不产生非缺省外部路由;丢弃新收到的非缺省外部路由且不回复确认报文;当超限状态定时器超时,检查外部路由数量是否仍然超过上限,如果超限则重启定时器,如果没有则退出超限状态。
  • 退出Overflow状态时,路由器删除超限状态定时器;产生非缺省外部路由;接收新收到的非缺省外部路由并回复确认报文;准备下一次进入超限状态。

PE-CE使用OSPF的好处(V PN)
1、通常在一个site内部使用OSPF学习路由,如果PE-CE之间也使用OSPF则可以减少CE设备所支持的协议种类,降低对CE设备的要求。
2、可以降低网络管理人员的工作复杂程度。
3、对于在骨干网使用OSPF但是没有使用VP N的网络,要转换成BGP/MPLS VP N的时候,由于PE-CE之间使用OSPF,降低了转换的难度。

  1. PE1 将 CE1 上的 OSPF 路由引入到 BGP 中,形成 BGP VP Nv4 路由。
  2. PE1 通过 MP-BGP 将这些 BGP VP Nv4 路由发布给 PE2。
  3. PE2 将 BGP VP Nv4 路由引入到 OSPF,再发布给 CE2。

PE-CE间OSPF配置需要注意的地方(V PN)
1、PE与CE之间的OSPF区域可以是非骨干区域,也可以是骨干区域(区域 0),并且PE永远是 ABR。
2、如果 VP N Site 中存在 OSPF Area0,则 CE 接入的 PE 必须通过 Area0 与这个 VP N Site 的骨干区域相连(可以通过 Virtual-link 实现逻辑连通)。

OSPF Domain ID 用来标识和区分不同的域,没有明确标识符时为NULL,有一个主和多个从标识符。
运营商OSPF能和客户OSPF互相发布区域间路由,则认为这些区域属于同一个OSPF域。
如果本地标识符与BGP路由信息中携带的远端域标识符相等或兼容则发布3类路由,否则发送5类路由,如果是NSSA区域,则发送NSSA路由。

OSPF的防环(VP N)
区域内防环使用SPF算法,区域间ABR不接收来自非骨干区域汇总的LSA,所有非骨干区域的路由必须经过骨干区域
由于OSPF的优先级高与BGP
DN-bit PE发送给CE的3、5、7类LSA的DN置位1,PE不计算DN置位1的LSA,防止从CE学到自己发的路由。
缺省路由 PE 不计算缺省路由。缺省路由用于转发源自 CE 和 CE 所在 Site 的流量到 VP N 骨干网。
VP N Route Tag 当 PE 发现 LSA 的 tag 和自己 的一样,就会忽略这条LSA, 因此避免了环路。

伪连接 Sham link 的作用(V PN)
是MPLS VP N 骨干网上两个 PE 路由器之间的点到点链路,这些链路使用借用(Unnumbered)的地址,使两端PE经过 MPLS VP N 骨干网的路由也成为 OSPF 区域内路由,并且被优选。

是为了防止两端CE存在一条区域内的OSPF链路(后门链路),优先级会比MPLS VP N骨干网的区域间路由要高,这样会导致流量总是从后门链路通过而不走骨干链路。

Multi-VP N-Instance CE(CE端的多实例路由器)的好处
1、MCE 不需要支持 BGP/OSPF 互操作功能。
2、MCE 通过为不同的业务建立各自的 OSPF 实例,相当于不同的业务使用不同的虚拟 CE 路由器,从而以较低的成本解决局域网的安全问题。
3、MCE 收到了带有 DN- bit 的 LSA 也会用于路由计算。

OSPF邻居关系建立不起来的原因
1、认证类型或认证信息不匹配
2、区域ID不同
3、Router ID相同
4、特殊区域类型不一致(如stub nssa)
5、hello interval 和 dead interval 不同
6、版本不同v2支持ipv4 v3支持ipv6
7、​MA、NBMA、P2MP网络中,接口子网掩码不匹配
8、Ospf接口设为静默接口
9、网络类型为 NBMA 的时候,没有手工指定 PEER

邻居起来邻接没起来:
1、DR选举不成,在广播和NBMA网络中,必须有一个DR不为0
2、链路上的MTU不一致开起了MTU检查(可通过“ip ospf mtu-ignore”命令忽略MTU,检测开起MTU ospf mtu-enable)

OSPF的MTU
MTU字段在DD报文中,在exstart状态进行MTU校验,如果MTU校验不通过,则会停留在exstart状态不会到达完全邻接状态。
华为设备默认不检查MTU设备,MTU值为0,收到MTU为0的报文会忽略MTU字段
(个人认为从先发,从小可以通过,主就会发后续的DD让从继续)

  • 情况1:两端MTU值不一样,一端开起MTU一端不开启,两端可以建立FULL的邻居关系,不开启的一端收到对端的DD报文会直接通过,本身发送MTU填0,对方收到向小兼容通过检查。
  • 情况2:两端都开起MTU检查,主路由器MTU小,从路由器MTU大,主路由器会卡在exstart,从路由器卡在exchange。
  • 情况3:两端都开起MTU检查,主路由器MTU大,从路由器MTU小,主从路由器都会卡在exstart。

OSPF的Router-ID相同

  • 在相同区域内network宣告
    三台路由器能正常建立邻居关系
    路由计算会有问题,当R1 network宣告一条10.0.0.0/24的路由会把这条路由通过Link State Update 携带1类LSA(adv=1.1.1.1,type=1,LS ID=1.1.1.1,seq=8001,type中的Data字段为自己的出接口)发送给R2,R2收到后会传给R3,R3收到后查看通告着是自己,LSDB中没有这个网段,就会给R2发送一个自己的Link State Update 携带1类LSA(adv=1.1.1.1,type=1,LS ID=1.1.1.1,seq=8002,type中的Data字段为自己的出接口),R2收到后会进行序列号的比较,选择大的那条,并通告给R1,R1收到后查看通告者是自己,LSDB中有10.0.0.0/24这个网段,就会重新发送序列号更高的1类LSA
    一旦router-id冲突会导致OSPF的LSA频繁的老化和产生,进而导致路由震荡,网络不稳定
  • 在相同区域import引入
    三台路由器能正常建立邻居关系,当R1 import引入一条10.0.0.0/24的外部路由会把这条路由通过Link State Update 携带5类LSA(adv=1.1.1.1,type=5,LS ID=1.1.1.1,age=1s,seq=8001)发送给R2,R2收到后会传给R3,R3收到后查看通告者是自己,LSDB中没有这个网段,于是会给R2发送一个(adv=1.1.1.1,type=5,LS ID=1.1.1.1,age=3600s,seq=8001)的Link State Update 携带5类LSA来刷新LSA,R2会选择age3600s的LSA,并传递给R1,R1收到后会发送seq=8002的5类LSA

  • 在不同区域network宣告
    不会出现问题,因为ospf在区域间使用LSA3,LSA3是由区域的ABR根据LSA1、LSA2产生的,adv是ABR的router-id,区域间路由只是被当成叶子挂在ABR上,本区域内的spt树上不会出现在有相同router-id的节点,也就不会出现问题。

  • 在不同区域import引入
    三台路由器能正常建立邻居关系,当R1 import引入一条10.0.0.0/24的外部路由会把这条路由通过Link State Update 携带5类LSA(adv=1.1.1.1,type=5,LS ID=1.1.1.1,age=1s,seq=8001)发送给R2,R2收到后会传给R3,R3收到后查看通告者是自己,LSDB中没有这个网段,于是会给R2发送一个(adv=1.1.1.1,type=5,LS ID=1.1.1.1,age=3600s,seq=8001)的Link State Update 携带5类LSA来刷新LSA,R2会选择age3600s的LSA,并传递给R1,R1收到后会发送seq=8002的5类LSA

  • Minimum Lsa Originate Interval (sec) :发送同一条LSA最小时间间隔的缺省值(5s)。
    当LS age到达1800s会重新生成新的LSA实例

  • 华为路由器会自动检测区域内RID冲突,并自动修改ospf router-id auto-recover disable
    如果OSPF区域内存在Router ID冲突,则系统可以重新选择Router ID,从而在一定程度上避免路由震荡、减少路由计算、避免CPU过高引起的其他协议断连等问题。
    使能Router ID冲突自动恢复功能后,如果OSPF区域内非直连路由存在Router ID冲突,会自动生成一个Router ID,即使用户手动配置的Router ID也会被修改。
    更改Router ID后,如果OSPF区域内依然存在Router ID冲突,默认最多重新选择3次。

OSPF的silence和RIP的silence的区别
因为 OSPF 不会通过静默接口收发 hello 报文,不会通过静默接口建立 OSPF 邻居关系。
RIP 接口配置成 silence 接口后可以从这个接口学到路由信息。因为RIP 不会通过静默接口发送 RIP 报文,但是可以通过静默接口接收 RIP 的报文。

OSPF的进程号
OSPF的进程号只在本地进行区分,在同一台路由器上不同进程号的OSPF不互相通信,在不同的路由器上不同进程号相同area也可以交互报文

如何加快OSPF的收敛

  • 配置接口发送hello的时间间隔
  • 配置相邻邻居失效的时间
  • 利用STUB或者NSSA等特殊区域可以减少LSA的条目,或者使用3类或者5类汇总命令,降低明细路由频繁变化带来的路由震荡。

OSPF的NSSA区域的所有ABR为什么不能都做7转5
1、ABR上会有NSSA区域的7类LSA和区域0的5类LSA,可能会导致7转5失败
2、在其他区域的OSPF路由器上会收到多个包含相同路由信息的5类LSA,因为转发IP地址相同,所以会消耗OSPF路由器资源
只有 RouerID 大的 ABR 路由器会进行 7 转 5 操作

OSPF的area0分割

当D(ABR)和area0还建立full邻接关系,则D无法访问area0,当D没有和area0建立邻接关系,则D可以访问area0
当C(ABR)和area0还建立full邻接关系,D会为area0的网络产生3类LSA通过area1传递给C,但是C不接收来自非骨干区域的3类LSA,所有C无法接收到area0的路由。

OSPF的Area0的认证
配置了虚连接的路由器也要配置骨干区域的认证,否则虚连接建立不起来
OSPF区域认证中携带了Key ID、认证数据长度、加密序列号
接口认证优先于区域认证

OSPF的wait time
在广播和nbma网络中在wait time时间内收集网络内的路由器信息,防止抢占。
当发出第一份hello报文后 40s不会认为自己是DR,如果40s后还没有收到携带DR或者BDR参数的hello报文,就认为自己是DR。

wait time时间太短可能会导致不能让最优的路由器当DR

OSPF的抢占
1、当链路中已经选举出DR,新接进来的路由器会等待40s,会收到填充DR、BDR字段的hello报文
2、当链路中没选举出DR(所有路由器的DR优先级都为0),那么新进来的路由器会经过40s变成DR

(1)当OSPF接口开启后,在HELLO报文中设置DR/BDR字段为0.0.0.0,此时DR/BDR未知。同时,Waittimer启动,时长为4倍的Hello间隔。
(2)如果收到的Hello报文中DR及BDR字段为非空,则Wait计时器停止,接收当前DR/BDR的选择。
(3)如果在Wait计时器超时后,仍未学习到DR/BDR,则开始DR/BDR的选举。
(4)如果DR集合为空,则从BDR集合选举DR。如果BDR集合为空,则从DRother集合选举BDR;
(5)根据上述算法,如果再没有DR/BDR的网络上,Wait计时器超时后,网络上的每台路由器都会先从DRother集合选择BDR,再把BDR提升为DR;再重新从DRother集合选择BDR。至此,选举结束,开始建立邻接。

OSPF和ISIS的区别
基本点比较:

  • 相同点:
    均为IGP协议,且应用广泛;
    均支持IP环境;
    均采用分层设计和分区域设计。

  • 不同点:
    1、OSPF只支持IP网络,ISIS支持IP和CLNP网络
    2、OSPF报文封装在IP,封装在89协议号中,ISIS直接封装在链路层数据帧中
    3、OSPF基于接口划分区域,ISIS基于路由器划分区域
    4、OSPF支持4种网络类型,ISIS只支持2种网络类型
    5、OSPF定义area0为骨干区域,ISIS没有指定的骨干区域,而是由多台level-2和level-1-2路由器组成骨干区域

邻接关系:

  • 相同点:
    1、均通过Hello建立和维护邻居关系;
    2、多点访问网络均选举DR/DIS。
  • 不同点:
    1、OSPF的邻接关系只有一种,ISIS的邻接关系可以是level-1也可以是level-2
    2、OSPF的DR和ISIS的DIS(DIS支持抢占,优先级0也参与,没有备份的BDR)
    3、OSPF的MA网络普通路由器只能和DR建立邻接关系,而ISIS所有的路由器都会建立邻接关系
    4、OSPF建立邻居需要检查hello中的掩码、认证、hello/dead时间间隔、区域类型等信息,ISIS建立邻居用三次握手和二次握手

链路状态同步过程:

  • 相同点:
    1、均需形成统一的LSDB。
  • 不同点:
    1、OSPF的LSA种类很多,ISIS的LSP只有level-1和level-2,但是扩展性强,通过LSP携带的TLV扩展
    2、OSPF的LSA生存周期从0开始递增(最大3600s),ISIS从最大开始递减(缺省1200s)
    3、数据库同步过程不同

其他特点:

  • 相同点:
    1、均使用SPF算法计算路由;
    2、无环路,收敛快,支持大规模网络部署。
  • 不同点:
    1、OSPF支持按需拨号链路,ISIS不支持
    2、ISIS采用TLV结构,扩展性更好
    3、OSPF 的接口开销根据接口带宽变化,ISIS 的接口开销值缺省相同

OSPF适合在运营商,ISIS适合在企业网
OSPF有很多类型的LSA,后台复杂,配置简单,适合中小规模环境复杂的企业网络
ISIS所产生的LSP更少,后台简单,配置复杂,适合专业人士

OSPFv2和v3的区别

基于链路的运行

  • OSPFv2是基于网络运行的,两个路由器要形成邻居关系必须在同一个网段。
  • OSPFv3的实现是基于链路, 一个链路可以划分为多个子网, 节点即使不在同一个子网内, 只要在同一链路上就可以直接通信,所以v3删除了network mask

使用链路本地地址

  • OSPFv3的路由器使用链路本地地址作为发送报文的源地址。
  • 在虚连接上, 必须使用全球单播地址或者站点本地地址作为OSPFv3协议报文的源地址。

链路支持多实例复用

  • OSPFv3支持在同一链路上运行多个实例,实现链路复用并节约成本 ,新加了instance ID ,只有当接收到的hello报文的instance ID和当前接口配置的instance ID相同才能建立邻居

认证的变化

  • OSPFv3报文头中不再包含AuType和Authentication,而一般依赖IPv6的扩展验证头
  • OSPFv3使用IPv6标准的CheckSum。

Stub 区域的支持

  • 由于OSPFv3支持对未知类型LSA的泛洪,为防止大量未知类型LSA泛洪进入Stub区域,对于向Stub区泛洪的未知类型LSA进行了明确规定, 只有当未知类型LSA的泛洪范围是区域或链路而且U比特没有置位时,未知类型LSA才可以向Stub区域泛洪。

报文的不同

  • 报文头部的变化
    1、Version:版本,对于OSPFv2,该值是2;对于OSPFv3则是3。
    2、Instance ID:链路实例ID,通过判断该字段就可以区分同一链路上运行的不同OSPF实例。实例ID只在本地链路范围内具有意义,如果路由器接收到的 Hello 报文的 Instance ID 与当前接口配置的 Instance ID 不同,将无法建立邻居关系。
    Reserved(保留): 保留字段,总是0。
    3、删除了认证类型和认证内容,新加了实例ID和保留字段
  • hello报文的变化
    1、OSPFv3 Hello 报文去掉了网络掩码字段,增加了 Interface ID 字, 用来标识发送该 Hello 报文的接口ID。

Option 字段的不同

  • 在OSPFv2中 Option字段出现在每一个Hello报文、 DD报文以及每一个LSA中
    在OSPFv3中Option字段只在 Hello报文、 DD报文、1、2、8、9类LAS中。
  • R 比特:用来标识设备是否是具备转发能力的路由器。如果 R 比特置 0,宣告该节点的路由信息将不会参加路由计算,如果当前设备是一个不想转发非本地地址的报文,可以将 R 比特置 0。
    V6 比特:如果 V6 比特置 0,该路由器或链路也不会参加IPv6路由计算。

LSA 的类型和内容不同

  • LSA的LS Type中增加了U-bit(置位0,把未知类型的LSA在链路范围内泛洪,置位1,把未知类型的LSA按照S2/S1字段描述的范围进行泛洪)
  • S2/S1 位:共同标识 LSA 的泛洪范围,取值 00 表示 LSA 只在产生该 LSA 的本地链路上泛洪;取值 01 表示 LSA 的泛洪范围为产生该 LSA 的路由器所在区域;取值 10 表示 LSA 将在整个自治系统内进行泛洪;取值 11 保留。
  • LSA Function Code: LSA 类型编码,描述 LSA 的类型。

组播地址不同

  • OSPFv2的组播地址是224.0.0.5 224.0.0.6,OSPFv3的组播地址是 FF02::5 FF02:6

新增LSA

  • Router LSA 和 Network LSA 中不再包含路由信息,仅用来描述拓扑结构
  • 8类LSA Link LSA,会为每个链路产生一个Link-LSA描述此Link上的link-local地址、IPv6前缀地址、在广播网络和NBMA网络上为DR提供Option取值,只在此链路内传播
  • 9类LSA Intra Area prefix LSA,每个DR都会产生一个或多个此类LSA,在所属的区域传播依附于路由器、stub网络、Transit网络的Prefix

前缀表示方法变化

  • OSPFv2使用IP网段+掩码表示前缀信息,SPFv3使用三元组(Prefix-Length, PrefixOptions, Prefix)
    Prefix-Length:1字节。前缀的bit位长度,对于缺省路由该字段取值为0
    PrefixOptions,1字节。前缀信息的选项,用来描述前缀的某些特殊属性字段,格式如下
    Prefix:长度不定,为4字节的倍数。用于表示前缀的IPv6网络地址信息
    NU位:非单播位。如果设置为1,则这个前缀不会纳入IPv6单播路由计算中
    LA位:本地地址位。如果设置为1,则这个前缀是路由器的一个接口地址
    MC位:组播位。如果设置为1,则这个前缀应该纳入组播计算中,否则不纳入组播计算
    P位:传播位。如果一个NSSA区域的前缀需要被ABR传播出去,就需要设置这一位

标识邻居方式不同

  • OSPFv2的通过IP地址标识邻居,OSPFv3通过router-id标识邻居,router-id 必须手动配置 32位无符号整数

OSPFv3和OSPFv2互不兼容

HCIE 面试资料-OSPF相关推荐

  1. HCIE 面试资料-IPv6

    IPv6 IPv6与IPv4比较 1.v4是32bit,v6是128bit 2.版本号从4改为6 3.v4对于QOS使用TOS字段,v6对于QOS使用Traffic Class字段 4.v4使用TTL ...

  2. HCIE 面试资料-BFD/NSF/NSR/NTP

    BFD检测 BFD简介 双向转发检测BFD(Bidirectional Forwarding Detection) 为了减小设备故障对业务的影响,提高网络的可靠性,网络设备需要能够尽快检测到与相邻设备 ...

  3. HCIE 面试资料-项目题

    100台路由器 如何选择IGP 可选的IGP有OSPF .ISIS.RIP 首先不建议选择RIP,RIP的缺点: 1.基于跳数做开销计算,没有根据带宽计算,容易产生次优路径 2.最大跳数才16条,这个 ...

  4. HCIE 面试资料-STP/RSTP/MSTP

    STP STP介绍 STP(Spanning Tree Protocol)生成树协议 有三个版本,协议版本标识符,STP为0,RSTP为2,MSTP为3. STP的作用是进行逻辑阻断,通过堵塞端口来消 ...

  5. HCIE 面试资料-QOS

    QoS简介 服务质量QoS(Quality of Service)用于评估服务方满足客户服务需求的能力.通过配置QoS,对企业的网络流量进行调控,避免并管理网络拥塞,减少报文的丢失率,同时也可以为企业 ...

  6. HCIE 面试资料-BGP/MPLS V`PN

    MPLS V·PN 为了实现两个站点之间跨越公网通信有了[Virtual Private Network]虚拟私有网络技术 专线的特点 1.线路专有,安全性高,不同用户之间物理隔离 2.价格昂贵 3. ...

  7. HCIE 面试资料-MLD

    MLD MLD简介 MLD (Multicast Listener Discovery) 组播侦听发现协议,是IPv6路由器所使用的一种协议,用以发现在其直连网络上的组播侦听者(即希望接收组播数据的节 ...

  8. HCIE 面试资料-DHCP

    DHCP 动态主机配置协议(Dynamic Host Configuration Protocol)是一种用于集中对用户IP地址进行动态管理和配置的技术. 终端设备需要配置IP地址才能接入网络,当设备 ...

  9. HCIE面试最新实况!一波三折的数通HCIE之旅

    大家好,我是誉天的郭同学~ 9月底通过了数通HCIE的认证,给大家分享一下我"一波三折"的HCIE认证之旅~ 我2017年毕业,非通信行业.毕业后在一家通信类的小公司就职打杂,因为 ...

最新文章

  1. 使用ubuntu(18.04) 作为软路由器连接互联网
  2. OpenCart商品分类教程
  3. JS event使用方法详解
  4. java k线绘制,用Java绘制K线图[Java编程]
  5. Oracle查询锁表以及杀会话或系统进程来解除锁表操作
  6. Kafka基础知识入门
  7. [**奇文共赏**补充问题] 据说看五遍能懂的人智商 200
  8. java非公平锁_Java多线程 -- 公平锁和非公平锁的一些思考
  9. [精华][推荐]SSO CAS单点登录框架学习 搭建详细步骤及源码
  10. SQLSERVER字符串截取------STUFF
  11. 把 mysql 整个加载进内存磁盘中_MySQL 缓冲池 是什么?
  12. C语言实现随机发纸牌
  13. LeetCode 145 二叉树的后序遍历(非递归)
  14. Android - 获取字符串长度的宽度
  15. C盘\用户目录下\管理员文件夹 如何重命名?
  16. 苹果cms用php几,苹果CMS用的B站播放器
  17. android使用h5框架,轻量级Android  H5 Native Hybrid 框架
  18. 当我们在讨论智能家居时,我们到底在讨论什么?
  19. iOS Game Center 登陆验证实现
  20. mac pe 制作教程

热门文章

  1. 我为何在 CSDN 乐在其中
  2. 易语言字符代码表(键盘)
  3. Linux上构筑iPhone OS3.1.2开发环境之解压firmware
  4. Keil MDK又来了一个小升级
  5. 微信小程序 怎么插入图片
  6. pc端网页实现微信扫码登录
  7. 马化腾:非常看重小程序,小游戏将会是微信互联网的焦点?
  8. WhatsApp电脑版和WhatsApp网页版区别?
  9. 《谁说菜鸟不会数据分析 入门篇》学习笔记
  10. 关于RFID电感耦合方式的射频前端工作原理,你了解吗?