导图社区 OSPF
它是HCIP阶段最复杂的理论,HCIE理论面试考官最有可能问到的三大题之一,求职面试中HR考察筛选求职者的常见问题。你必须拿下它!
编辑于2021-03-15 08:16:08OSPF开放式最短路径优先协议
1. 基本概念
类别:链路状态路由协议,无类路由协议,支持VLSM、CIDR、OSPFv2针对IPv4,OSPFv3针对IPv6
支持的网络规模:适合在中到大型企业网络部署;支持的路由条目数量:2~3万条
使用的算法:iSPF增量型最短路径优先算法+PRC部分路由计算
iSPF:计算树枝、树干
树干:路由器之间互联的链路/骨干链路
树枝:路由器连接PC所在网络的链路/末节链路
PRC:计算树叶
树叶:三类LSA产生的区域间路由以及五类LSA产生的外部路由
Router ID(32位):标识OSPF路由器的ID,具有全网唯一性(同一OSPF域内两个直连路由器不能有相同Router ID,否则彼此无法建立邻居);手动配置最优,也可动态选举(有Loopback接口时,选择最高的Loopback IP地址;否则选举最高活跃(接口状态up)物理接口的地址);Router ID非抢占;被选举为Router ID的接口IP不要求可达,故不一定要宣告进OSPF
OSPF的度量值计算:控制层面路由流向的所有入接口/从目的地到本路由器沿途所有入接口的cost值总和,逐接口计算10的8次方即100M/接口带宽(bit/s)(计算结果取整;1.全部路由器都修改参考带宽,OSPF进程中修改bandwidth-reference;2.接口视图下直接修改cost,此为工作中采用);cost值越小路由越优;serial链路cost值为48,以太网链路cost值为1
2. 报文类型
Hello:组播(224.0.0.5)
作用:发现和维持直连链路上的OSPF邻居关系,周期性发送(10s或者30s)
包含内容:1.OSPF版本号;2.Router ID;3.Hello and dead intervals;4.Area ID;5.Neighbors(路由器收到邻居发送的Hello,如果Neighbors中不包含本路由器的RID,则处于Init即单向邻居;如果Neighbors中包含本路由器的RID,则处于Two-way);6.Router Priority;7.DR IP Address;8.BDR IP Address;9.Stub area flag末节区域标记;10.Network Mask;11.authentication及password
邻居关系建立所需条件
version必须一致
Router ID不能冲突
Area ID必须一致
认证类型、认证密钥必须一致
只有通过验证的OSPF报文才能接收,否则不能正常建立邻居
1.区域认证;2.接口认证;接口认证优于区域认证
直连接口的网络掩码必须一致
Hello&dead interval必须一致
非骨干区域默认为Regular、可以设置为特殊区域Stub或者NSSA,三种区域发送Hello时option字段值不同(Regular:E位置1,N为置0;Stub:E位置0,N位置0;NSSA:E位置0,N位置1);同一非骨干区域的option字段值必须一致
MTU必须一致(不一致导致主从关系无法选举,邻接关系状态机为Exstart;解决办法:ip ospf mtu-ignore(思科)可以到达Full状态)
直连接口网络类型匹配(邻接关系状态机不能达到Full)
DBD:单播
作用:描述本地LSDB摘要信息/携带LSDB中LSA头部数据,用于两台设备进行数据库同步
DBD(交互的第一个DBD即First DBD为空,没有任何LSA报头信息,用以选举主从关系Master/Slave,RID高则为主(First DBD包含MTU参数,思科设备要求链路两端接口的MTU必须一致,主从关系才可以正常选举);邻居之间互相发送DBD会相互确认,A发送DBD给B,Seq为x,B发送DBD给A,Seq也为x对A发送的DBD进行确认(隐式确认;而显式确认为A发送一个报文给B,B就发送一个ACK给A);DBD中有flag字段,其包含三个位:Initial、More、Master/Slave;第一个DBD(0X7):Initial、More、Master均为1(Initial位置1表示第一个DD报文;More位置1表示不是最后一个报文);选举Master、Slave之后,Slave再发送一个DBD(0X2):Initial、More、Master分别为0、1、0,并且序列号和DR发送的第一个DBD序列号相同,即Exstart阶段邻居共发送三个DBD(选举主从关系后,Slaver会再发送一个DBD报文:Initial、More、Master均为0?)
为什么选举主从关系?为了保证报文传输的可靠性,Master定义序列号Seq
LSR:单播
作用:向对方请求本端所需的LSA(只有在OSPF邻居双方成功交换DD报文后,才会向对方发出LSR报文)
包含内容:LSA三元组Link-State ID、ADV Router、LSA Type用以确定一个LSA
LSU:单播/组播(224.0.0.5/224.0.0.6)
作用:向对方发送其所需要的LSA
包含内容:完整的LSA,一个LSU可以包含若干LSA
LSAck:单播/组播(224.0.0.5/224.0.0.6)
作用:对收到的LSA进行确认
3. 报文封装格式:Layer 2|IPv4|OSPF|FCS
IP协议号:89
OSPF需要设置可靠传输机制:1.支持重传;2.确认机制:隐式确认、显示确认
OSPF报头:长度24字节,五种OSPF报文有相同的报头
版本:OSPFv2:2
类型:该OSPF报文的类型;1-Hello、2-DD、3-LSR、4-LSU、5-LSAck
报文长度:整个OSPF报文的长度
子主题
4. 发送方式:单播、组播(224.0.0.5、224.0.0.6)
DR、BDR监听224.0.0.6
所有OSPF路由器监听224.0.0.5
5. 通过ACL可抓取OSPF报文的哪些参数
IP协议号
组播地址
三层报头ToS字段优先级值
ToS字段共8字节,只是用前三字节则为IP Precedence,默认值:110,故ToS字段默认值:11000000
IP Precedence默认值为6原因:保证网络拥塞时,尽量减小对OSPF报文的正常传递的影响
6. LSA
LSA类别
研究LSA的三部曲:1.此LSA由谁产生;2.所能泛洪扩散的范围;3.此LSA包含的内容
一类LSA/Router LSA:1.描述自身路由器是什么类型(区域内路由器、ABR、ASBR)以及RID;2.包含该路由器宣告进所属区域内的所有接口的信息
描述的链路类型:骨干链路(Transnet链路、P2P链路、Virtual链路)、末节链路(Stub链路)(P2P、Virtual、Stub有掩码;Transnet需要基于二类LSA提供掩码)
每台运行OSPF的路由器都会产生一类LSA,如果该路由器不是ABR而只属于一个区域,则只产生一条一类LSA;如果该路由器是ABR,属于多个区域,则关于每个区域都会产生一条一类LSA
一类LSA只会在产生此一类LSA的路由器所属区域内(此一类LSA是路由器关于该区域产生的)发送(即一类LSA在哪个区域产生就在哪个区域发送)
包含的内容:1.路由器的身份信息:RID、路由器角色(ABR/ASBR/骨干/内部)、序列号等等;2.该路由器宣告进该区域的所有接口的状态信息:接口IP地址、接口掩码、接口度量值、接口类型、(接口对端的邻居OSPF的RID)
对于MA网络、帧中继网络,由于需要选举DR、BDR,所以路由器使用LSA只能画出自身和DR的拓扑;对于MA网络由于一类LSA要表示DR的IP地址,所以不能表示掩码,也就不能计算路由
二类LSA/Network LSA
二类LSA由MA网络中的DR产生
二类LSA发送/泛洪给该区域(area x)内所有路由器,告诉路由器此MA网络中所有路由器的RID,以此让路由器画出该MA网络的矢量图;二类LSA还包含MA网络的掩码,便于让路由器计算该MA网络的路由(同一OSPF区域内,只要所有路由器收敛,则每台路由器关于该区域的LSDB中的一类、二类LSA都和其他路由器完全一致)
三类LSA/Summary LSA/Network Summary LSA
一条区域间路由形成一条三类LSA;路由器收到三类LSA之后,会将这些区域间路由当作树叶,将其挂靠在ABR上;三类LSA每经过一个ABR,该ABR就会伪装成此三类LSA是由自己产生的形式/会将ADV Router改写为自身的RID,发送给此ABR所连接的其他区域;可以在始发该三类LSA的ABR上做区域间路由汇总(区域号即为需做路由汇总的明细路由所在区域;汇总路由度量值取所有明细路由中最小度量值;同时本地自动产生一条指向null 0的相同汇总路由防环)
OSPF域内的路由器收到三类LSA后,不运行SPF算法(原因:三类LSA只包含路由信息,而SPF是根据链路状态信息计算路由)
在整个OSPF域内泛洪,除了Totally Stub、Totally NSSA区域
四类LSA/Summary ASB LSA/ASBR Summary LSA
ASBR将其他协议学习到的路由重分发进OSPF域是以五类LSA传递的,五类LSA只有外部路由信息,一条外部路由对应一条五类LSA;五类LSA在跨越区域时ADV Router始终为ASBR的RID,所以只有与该ASBR同属一个区域的路由器可以将树叶挂靠在ASBR上,其他区域的路由器则不能(与该ASBR同属一个区域的ABR会产生一条关于此ASBR的四类LSA,用以告知其他区域的路由器:1.ASBR是哪台路由器;2.该路由器到本ABR的度量值;四类LSA每跨越一个区域,该ABR就会伪装成此四类LSA是由自己产生的形式)
整个OSPF域内部泛洪,除Stub、NSSA、Totally Stub、Totally NSSA区域
五类LSA/Autonomous system external LSA/AS External LSA
五类相较于三类LSA区别:1.路由标记Tag:方便使用route-map抓取路由;2.Forward Address/FA(默认为:0.0.0.0):1.防环;2.路径优化;
五类LSA携带FA地址的前提条件:1.ASBR需要针对重分发进OSPF域的外部路由,将自身连接这些外部路由的下一跳地址的本地接口宣告进OSPF;2.该接口的类型不能为P2P、P2MP,可以为MA,NBMA;3.该接口不能被置为passive-interface;4.当满足以上三者,五类LSA就可以携带FA地址,FA地址为该外部路由自身的下一跳地址,区域内路由器收到五类LSA之后,会判断FA地址通过OSPF是否可达(一类、二类、三类单向可达),如果不可达,则只会加入本地LSDB而不计算路由;如果可达则尝试将数据发送给FA地址而不是通过树形结构
五类LSA汇总是在始发该五类LSA的ASBR上做外部路由汇总
整个OSPF域内部泛洪,除Stub、NSSA、Totally Stub、Totally NSSA区域
六类LSA/Multicast OSPF LSA
MOSPF针对IPv4组播运作,运行MOSPF前提:先在单播环境中运行OSPF
七类LSA/NSSA LSA只能在NSSA/Totally NSSA区域内传递
八类LSA/External attributes LSA for Border Gateway Protocol(BGP):部署MPLS VPN时结合BGP传递外部BGP属性
九十十一类LSA(Opaque LSA用于MPLS TE)
扩散方式
泛洪扩散:路由器收到LSA之后,保存在本地LSDB并复制多份,发送给同一区域内的所有其他邻居
避免LSA泛洪所产生的环路的传输机制:路由器只有接收到更新的LSA才会泛洪扩散。通过序列号值判断,序列号值越大越新,最小值0x80000001,最大值0x7FFFFFFF。路由器首次收到一条LSA,泛洪扩散;如果曾经收到过,通过比较序列号值判断新旧,新收到的LSA更新,更新本地LSDB并泛洪扩散;两者新旧程度相同,直接丢弃;新收到的LSA更旧,反向更新对端LSDB达到同步
为保证LSA状态实时更新,建立OSPF邻居之后LSA依旧会以两种方式发送
触发更新:网络拓扑发生变化影响到路由条目时,发现变化的路由器会立即将这些信息整合成LSA通告给所有路由器,其他路由器及时更新本地LSDB达到同步
周期性更新(30min/次):路由器将LSA加入本地LSDB后,老化计时器(60min)会从零开始正计时,超过3600s后仍未收到此LSA更新,会继续保持该LSA一段时间,如果还没有收到更新,则删除此LSA
周期性更新原因:路由器既追踪邻接关系状态又追踪LSA状态
删除LSA的两种情况
超过四倍Hello时间没有收到邻居发送的Hello报文,即邻居关系down,会直接删除此邻居的LSA
超过两倍更新周期没有收到邻居始发的LSA,会删除此LSA
组步调
LSA的泛洪只在具有邻接关系的路由器之间进行
OPSF邻居只能直连建立
OSPF收敛条件
同一区域内的所有路由器的LSDB所包含的LSA(关于此区域的一类、二类LSA)都完全一致
7. OSPF路由器角色及路由类型
内部路由器:所有接口都属于非骨干区域的路由器
骨干路由器:有接口属于骨干区域的路由器
ABR:多个接口属于多个区域,且必须有接口属于骨干区域
真ABR:有接口宣告进area 0,并且建立了full的邻居关系
真ABR遵循区域间三类LSA防环机制:真ABR通过非骨干区域收到三类LSA,只会加入到本地LSDB而不会计算路由
路由器OSPF邻居关系正常但没有路由可能原因:
没有收到LSA
收到LSA,但依旧没有路由
伪ABR:有接口宣告进area 0,没有建立full的邻居关系
ABR可以做区域间路由汇总
只有ABR才能产生三类LSA,三类LSA传递的是区域间路由;路由器收到三类LSA会将路由加入本地路由表,并在原来度量值基础上添加本地去往发送此三类LSA邻居的度量值
ASBR:既有接口属于OSPF域,又有接口属于其他路由协议
将其他协议学习到的路由通过路由重分发引入到OSPF域,这些外部路由只有路由信息,并且是以五类LSA传递:O E1或者O E2;如果收到去往同一目的网络的E1、E2路由,优选E1路由
E1路由度量值逐跳累加
E2路由度量值恒不变
ASBR做路由引入时可以做外部路由汇总(若路由器既是ASBR又是ABR,则对由7类LSA转化的5类LSA做路由汇总)
思科:ASBR不能将静态路由通过路由重复分发下放到OSPF域
NSSA区域的ASBR产生七类LSA;除Stub、NSSA区域外的其他区域的ASBR产生五类LSA
华为:只要OSPF路由器引入外部路由信息,就是ASBR
路由类型:1.Intra area(区域内路由);2.Inter area(区域间路由);3.第一类外部路由;4.第二类外部路由
第一类外部路由开销值=AS内部开销值(路由器到ASBR的开销)+AS外部开销值
第二类外部路由开销值=AS外部开销值
一类优于二类,VRP中外部路由类型缺省为第二类外部路由
8. OSPF三张表
邻居表:存储双向通信的OSPF邻居路由器的信息
LSDB:存储LSA
路由表:根据1类、2类LSA,路由器使用SPF算法得到以自身为树根的关于本Area的无环的SPT,并根据SPT计算出自身去往本Area中各个目的地的路由;根据3类LSA,路由器使用DV算法计算自身去往其他Area中各个目的地的路由;根据4类、5类LSA,路由器使用DV算法计算自身去往外部网络的目的地的路由
9. OSPF区域
骨干区域/传输区域Area 0:任何非骨干区域之间交互路由都必须经过骨干区域
非骨干区域:默认为Regular,可以设置为Stub末节区域、NSSA此末节区域等
设置Stub、NSSA特殊区域目的:通过在ABR上部署静态默认路由,既可以让该区域内的老旧路由器有访问其他区域以及外网的能力,又能减少该区域内路由器接收三、四、五类LSA的数量,使其有更多的CPU资源用于数据转发
缺省路由优先级:Type 3>Type 5>Type 7
ABR发布3类默认路由,用于指导区域内设备进行区域间转发
ASBR发布5类/7类默认路由,用于指导AS内设备进行自治系统外转发
Stub区域
不能是骨干区域area 0
该非骨干区域内所有路由器都需要将此区域设置为Stub区域
不能有ASBR
不能部署Virtual-link
建议:ABR可以通过下放三类LSA默认路由让该区域内路由器不丧失访问其他区域以及外网的能力
Totally Stub区域:1.在ABR上部署Stub时:area area-id stub [no summary](有此命令即为Totally Stub区域);2.阻拦正常的三、四、五类LSA只放行三类默认LSA
NSSA区域
出现原因:当非骨干区域需要有ASBR将外部路由引入OSPF域,同时又需要利用Stub区域特性节约该区域内路由器内存资源,可以将此区域设置为NSSA区域
不能是骨干区域area 0
该区域内所有路由器都设置为NSSA区域
不能部署Virtual-link
建议只能有一台ABR(多台ABR可能出现次优路径甚至环路,可以通过FA地址解决)
可以有ASBR,但ASBR重分发进入NSSA的外部路由以七类LSA形式传递(即NSSA区域不支持五类LSA)
NSSA LSA:前缀、掩码、度量值及类型、标记、FA地址
NSSA区域的ASBR将外部路由重分发进NSSA区域时,七类LSA一定会携带FA地址,FA地址为:1.ASBR宣告进OSPF域的最大环回口地址;2.宣告进OSPF域的最大物理接口地址
默认为七类外部路由:O N2路由
O N2路由度量值在传递过程中不变
O N1路由度量值逐跳累加
多条相同的O N2路由比较优劣,先比较外部度量值再比较内部度量值;多条相同的O N1路由比较优劣,直接比较内外度量值之和
七类LSA只能在NSSA区域内传递,为了让其他区域收到七类LSA,需要在NSSA区域内定义转换者(真伪ABR皆可,转换者只能有一台);转换者接收到七类LSA后将其转换为五类LSA传递给其他区域,并将ADV Router改为自身RID,这样对于其他区域路由器而言,转换者即为ASBR
如果NSSA区域内有多台ABR,可以手动指定,否则自动选举RID最高的ABR成为转换者
CCIE TS排错:NSSA区域内放置具有最高RID的路由器并将其环回口宣告进area 0,此伪ABR就成为转换者,由于没有连接其他区域,所以不能将同区域ASBR重分发的外部路由传递给其他区域 解决办法:检查谁为转换者
NSSA区域与Stub区域区别
NSSA区域有ASBR,其将外部路由重分发进NSSA区域七类LSA一定携带FA地址
Stub区域过滤四、五类LSA,并下放三类默认路由;NSSA区域过滤四、五类LSA,不过滤三类,也不主动下放默认路由(可以手动下放七类O N2的默认路由)
不主动下放默认路由原因:NSSA区域ASBR、ABR都可以下放默认路由,所以有选路空间,可以自行决定由ASBR下放还是过滤四、五类LSA的ABR下放:由ABR下放七类默认路由直接配置相关命令即可;由ASBR下放七类默认路由,配置完相关命令后,还需要在本地路由表存在该默认路由才可下放
所有外部路由只通过本区域NSSA的ASBR到达,则由ASBR下放7类默认路由
去往自治系统外部的路由通过本区域NSSA的ASBR到达,其他外部路由通过NSSA的ABR到达其他区域的ASBR出去,则有ABR下放7类默认路由
正常情况下,七类SLA都能被转换者转换为五类LSA传递,但ASBR下放的七类默认路由不能被转换,需要在ABR上配置:default-information-originate进行下放,以五类LSA传递给其他OSPF区域
Totally NSSA区域:1.在ABR上部署NSSA时:area area-id nssa [no-summary](有此命令即为Totally NSSA区域);2.过滤三、四、五类LSA,ABR主动下放三类OIA型的默认路由;3.当不需要非骨干区域的ASBR下放七类默认路由时,可以设置为Totally NSSA区域;4.当某路由器既为ABR又为ASBR时,由于下放了三类默认路由,所以不需要七类LSA:area area-id nssa [no-redistribution]
为什么要划分OSPF多区域?
单区域存在的问题:1.区域内部链路翻动或接口up/down,会引起同一区域内所有路由器进行SPF计算;2.LSDB存储的LSA数量庞大,消耗设备资源,影响数据转发;3.路由器维护的路由表越来越大,单区域内无法进行路由汇总
10. 邻接关系状态机
Down:初始状态,路由器已经激活OSPF,愿意与其他路由器建立OSPF邻居但未收到Hello报文,故会不间断发送Hello报文
Attempt:只有NBMA、Point-to-Multipoint Non-broadcast才会存在;在NBMA网络环境中,路由器接口启用OSPF,不允许主动发送组播报文,只可以通过指定neighbor发送单播,给邻居发送第一个单播Hello后,对邻居的邻接关系就为Attempt,持续四倍Hello时间,超过40s没有收到邻居的单播Hello,邻接关系变为down
Init:收到邻居发送的Hello报文,但neighbor字段没有本路由器的Router-ID,即邻居还不知道本路由的的存在,单向邻居
Two-way:再次收到邻居发送的Hello报文,且neighbor字段包含本路由器的Router-ID,即建立邻居关系
Exstart:协商主从关系,并确定DD报文序列号
Exchange
Loading
Full Adjacency
11. 路由器接口启用OSPF后,接口的六种网络类型
Loopback:1.默认为主机,即视为末节接口;2.以32位掩码形式通告路由;3.只有环回口有此网络类型;4.将环回口网络类型改为点到点,可以以自然掩码通告路由;5.不发送Hello报文
Point-to-Point:1.对应Serial接口,FR的点到点子接口,运行HDLC、PPP协议;2.邻居关系只能建立一个,不选举DR、BDR;3.组播Hello(224.0.0.5)自动发送(10s),邻居自动建立
Point-to-Multipoint:1.主动发送组播Hello(30s);2.不选举DR、BDR;3.节点间不认为彼此是直连的;4.邻居关系建立后会将自身接口IP地址以32位主机路由形式通告给对方
Point-to-Multipoint Non-broadcast:1.不支持主动发送组播Hello;2.需要通过指定neighbor
Broadcast:1.对应Ethernet接口(MA);2.能够主动发送组播Hello(10s);3.建立邻居并选举DR/BDR;4.MA网络中所有节点都认为彼此是直连的(R1---R2(DR)---R3:R1将路由传递给R2,再由R2传递给R3后,R3收到的路由的下一跳为R1即下一跳恒为路由始发源的下一跳地址);5.星型拓扑
Non-Broadcast:1.Frame Relay不会主动发送组播Hello(30s);2.只支持单播;2.选举DR、BDR;4.NBMA网络中所有节点都认为彼此是直连的;5.对应FR主接口、FR多点子接口
Point-to-Multipoint、Point-to-Multipoint Non-broadcast这两种网络类型任何类型的接口都默认不对应
Point-to-Point、Broadcast发送Hello(10s);Non-Broadcast、Point-to-Multipoint、Point-to-Multipoint Non-broadcast发送Hello(30s)
链路层协议对应的默认网络类型:1.PPP链路、HDLC链路:P2P;2.以太网链路:Broadcast/MA;3.帧中继链路、ATM链路;NBMA;
同一区域直连的OSPF路由器接口分别为P2P、Broadcast,可以建立Full的邻居,可以传递LSA,但无法计算OSPF路由;会选举DR且DR为P2P类型的接口IP,Broadcast类型的接口为DROther
12. DR、BDR的选举
1.Two-way阶段之后,Exstart之前选举DR、BDR;(Two-way阶段之前通过交互Hello报文选举DR、BDR?)2.只有MA、NBMA网络类型需要选举DR、BDR
选举DR、BDR的目的:1.针对Broadcast、NBMA网络产生二类LSA;2.减少Broadcast、NBMA网络中邻接关系的数量
在Broadcast、NBMA网络中,基于运行OSPF的接口交互Hello报文:1.Router Priority值越高越优;2.优先级一致,则比较Route-ID值越大越优
DR、BDR针对每个MA网络进行单独选举;同一Broadcast、NBMA网络中,DB、BDR不能是同一路由器
DR、BDR不可抢占
DR失效,BDR会成为新的DR,并在MA网络中选举最优的DROther成为新的BDR
如果启用OSPF的接口优先级为0,则不参与DR、BDR选举
某些网络环境情况下,可以只有DR而没有BDR(Frame-Relay、DMVPN、Hub&Spoke)
在MA网络中选举DR、BDR要求路由器IP地址在同一个IP子网段内
选举时间40s即4倍Hello时间,由MA网络中最先达到Two-way的路由器发起