导图社区 OSPF详解
OSPF(开放式最短路径优先)是一种链路状态路由协议,属于内部网关协议(IGP)的一种。该协议使用Dijkstra算法来计算一个自治系统内的最佳路径。
编辑于2024-04-01 20:54:12OSPF
介绍
1.是一种基于SPF算法开发出来的一种链路状态路由协议。
2.占据了90%的网络市场份额,可以只要是网络项目,IGP协议的首选就是OSPF协议。
OSPF的工作机制
1.建立邻居关系,所有一切的开始;
2.进行LSDB的同步,即链路信息的同步(一致);
3.进行SPF算法进行路由的计算。
接口网络类型的种类
1.P2P——点到点:如果接口链路层协议是PPP、HDLC;
2. Broadcast——广播型链路:如果接口链路层协议是Eth、FDDI(已淘汰);
3.NBMA——非广播多路访问:如果接口链路层协议是FR(帧中继已淘汰)、ATM(太贵太复杂,奄奄一息);
4.P2MP——点到多点:没有任何链路层协议属于P2MP,需要手动配置;
OSPF开销
1.链路开销
1.自动计算:参考带宽(默认100M)/链路带宽 = COST 结果小于1,大于0,则等于1;除不尽则取整数位。
参考带宽修改命令:[R1-ospf-1]bandwidth-reference 10000 ----修改为10Ggps参考带宽。如果修改参考带宽,AS内所有路由 器都要修改。
2.手动COST:管理员手动修改链路开销,优于自动计算。
手动修改COST命令:[R1-GigabitEthernet0/0/0]ospf cost 10 ----修改接口的ospf开销为10
2.路径开销
源IP到目的IP的链路开销之和。
OSPF端口邻居状态
1.down:可以发送hello报文,但不携带邻居的router id,未发现邻居的状态;
2.init:收到邻居的hello报文,但没携带自己的router id,单向发现对方的状态;
3.2-way:收到邻居的带有自己router id的hello报文,双向发现状态,邻居状态; 进入2-way状态后,开始LSDB的同步;
4.exstart:预启动状态,发送不携带LS摘要信息的DD报文,进行主从选举,router id大的成为Master,小的成为Slave,完成主从选举后,进入Exhcange状态;
5.exchange:进行LSDB判断,此时从路由器将自己的LSA的目录通过DD报文发送给主路器。exchange结束后,意味着邻居已经对LSDB做出了差异判断,进入到loading;
6.loading:向邻居发送LSR请求缺少的或者不是最新的LSA,邻居收到LSR,通过LSU携带明细的LSA信息进行LSDB同步,并通过LSACK进行确认,并最终进入full状态;
7.full:邻接状态。
OSPF报文
OSPF报文头部的主要参数
version
OSPF协议的版本
Message type
1 Hello
2 DD
3 LSR
4 LSU
5 LSACK
Source OSPF Router
源端口的OSPF的router id
Area ID
源端口所属的区域ID
Auth Type
0 不适用认证
1 明文认证
2 MD5认证
Auth Data
明文密码或密文的MD5值
Hello报文
OSPF的Hello报文怎么发的?
1. 凡是加入到OSPF协议的物理接口或隧道接口,就会主动发送Hello报文;
2. Hello报文原地址为接口的IP地址,目的地址问组播地址224.0.0.5。
○ 在P2P链路、Broadcast链路每隔10S周期发送,邻居失效时间默认为Hello间隔的4倍,即40S没有收到邻居的Hello报文,则认为邻居失效,断开邻居关系,并进行重新的路由计算。
○在NBMA、P2MP链路每隔30S周期发送,邻居失效时间默认为Hello间隔的4倍,即120S没有收到邻居的Hello报文,则认为邻居失效,断开邻居关系,并进行重新的路由计算。
Hello报文中所携带的options(E)参数
Network Mask
源端口的子网掩码
Hello interval
hello报文的发送周期
option
N bit ,E bit
N=0
不进行7类LSA的同步
N=1
需要对7类LSA进行同步
E=0
不进行5类LSA的同步
E=1
需要对5类LSA进行同步
E=1 N=0 普通区域 E=0 N=0 Stub区域 E= 0 N=1 NSSA区域 E=1 N =1 不存在这种组合
Router Priority
路由器端口优先级,默认是1,用于DR/BDR选举。
Dead interval
邻居失效时间
DR
bro或nbma链路上DR路由器接口的IP地址
BDR
bro或nbma链路上BDR路由器接口的IP地址
如果链路类型是P2P或P2MP,则DR/BDR取值为0.0.0.0, 即不进行DR、BDR的选举
OSPF报文头部和HELLO报文中影响邻居关系的因素
1. Router id不能冲突;
2. Area id 要相同;
3. Auth type 要一致;
4. Auth data 要匹配;
5. hello间隔要一致;
6. dead间隔要一致;
7. N bit 和E bit取值要一致。
以上7个条件是任何情况都要满足的建立邻居关系的必要条件。
DD报文
DD报文有两种:
1.携带LS摘要信息的DD报文。
2.不携带LS摘要信息的DD报文;
用于主从选举,router id 大的为主。
DR&BDR
MA多路访问:BRO/NMBA链路都属于MA类型。 默认情况下OSPF协议在BRO/NMBA型网络会自动进行选举DR/BDR。 P2P/P2MP的链路不会进行DR/BDR的选举,直接建立FULL邻接关系。
DR/BDR选举规则
1. 比较接口的优先级,默认等于1,取值范围0~255;
2.优先级越大,优先成为DR,优先级为0则不进行选举,不论什么身份只要把优先级改为0,都会立刻变成DRother;
3. 优先级相同,则比较router id,router id越大优先成为DR;
4.DR/BDR没有抢夺性;
5.如果DR失效,则BDR成为DR,然后重新选举BDR,如果没有BDR,则直接重新选举DR;
6.如果BDR失效,重新选举BDR;
7.每条BRO/NMBA链路都必须选举一个DR,还会选举一个BDR(默认选举,可不选),链路上的其他路由器成为DRother。
DR\BDR特性
1.DR、BDR、DRother之间保持full的邻接关系,需要进行LSDB的同步;
2.DRother之间保持2-way的邻居关系,不进行LSDB同步;
3.DR、BDR、DRother是路由器在链路上充当的角色,所以一台路由器可以有多个链路,理所当然也可以有多个角色。
DD报文中的DD(I、M、MS)比特位的作用
R:没有定义
I:Init
0 不是第一次发DD报文
1 第一次发DD报文
M: More
0 发送的是最后一个DD报文
1 还要继续发送DD报文
MS: Master
0 我是Slave从路由器
1 我是Master主路由器
DD报文中所有LSA头部的摘要信息字段
Type
lsa类型
Ls id
LSA的名字,ls id 取值由type决定
Adv rtr
产生这条LSA的路由器的router id
3个参数唯一标识的一条LSA
Len
lsa长度
Options
IE会讲
seq
LSA序列号
Chksum
校验和
ls age
老化时间
3个参数判断LSA新旧程度
LSR报文
作用:路由器根据邻居的DD报文,判断本地数据库是否完整,如不完整,路由器把这 些LSA记录进链路状态请求列表中,然后发送一个LSR给邻居路由器。
只携带所需要的LSA的标识。
LSU报文
作用:用于响应邻居路由器发来的LSR,根据LSR中的请求列表,发送对应LSA给邻居 路由器,真正实现LSA的泛洪与同步。 携带LSA的头部以及链路状态信息。
DR、BDR、DRother之间的LSU交互
1、 DRother产生的LSU通过224.0.0.6发送给DR、BDR,DR通过224.0.0.5发送给其 他的DRother和BDR,DRother通过224.0.0.6发送ACK确认,BDR通过224.0.0.5发送 ACK确认;
2、 BDR产生的LSU通过224.0.0.5发送给DRother和DR,DR通过224.0.0.5发送ACK 确认,DRother通过224.0.0.6发送ACK确认;
3、 DR产生的LSU通过224.0.0.5发送给DRother和BDR,BDR通过224.0.0.5发送ACK 确认,DRother通过224.0.0.6发送ACK确认;
4、 DR/BDR同时监听224.0.0.5和224.0.0.6这两个组播地址,而DRother只监听 224.0.0.5,224.0.0.5包括链路上所有的路由器,224.0.0.6仅包括DR和BDR。
LSA ack报文
作用:用来对收到的LSA进行确认,保证同步过程的可靠性。 只携带LSA头部。
DR/BDR/DROTHER之间的确认关系:
1、DR会对BDR发出的LSU做确认;
2、BDR会对DR发出的LSU做确认;
3、DRother会对DR或BDR发出的LSU做确认;
4、DR和BDR不会对DRother发出的LSU做确认。
LSA
一类router LSA
一类LSA的链路状态由4种link type来进行描述
1. Stubnet :路由信息
Link id
直连链路的网络号
Data
子网掩码
Metric
自身到直连网络的OSPF开销
Link type
描述路由器直连的路由信息
2.P-2-P:拓扑信息
Link id
邻居的router id
Data
与邻居相连的接口IP
Metric
到邻居的COST
Link type
P-2-P
描述P2P/P2MP链路上的的实节点邻居
3.transnet:拓扑信息
Link id
伪节点的router id(该链路上的DR接口地址充当)
Data
自己和伪节点相连的接口地址
Metric
自身到伪节点的开销
Link type
transnet
描述Bro或NBMA链路上的网络邻居(伪节点)
4.virtual:拓扑信息
Link id
vlink上的邻居的router id
Data
和vlink上的邻居相连的接口IP
Metric
到vlink上邻居的开销
Link type
virtual 描述vlink上的实节点邻居
Type:Router
Ls id
产生此LSA的OSPF设备的router id
Adv rtr
产生此LSA的router id
二类Network LSA
二类LSA用于描述transnet的路由信息 和transnet的伪节点连接着的实节点
Type:network
表示是二类 LSA,用于描述伪节点连接着哪些节点,由DR产生
LS id
此网段DR的接口地址/伪节点router id
Adv rtr
此网段DR的router id
Net mask
此网段的掩码
Attached router
此网段所连接路由器router id
通过一类、二类LSA算出的路由信息称为区域内路由, 通过SPF算法计算出的路由,100%可以避免路由环路, 因为不管实节点还是伪节点,都只能在树上出现一次
区域内路由
三类Summary LSA 路由信息
Type:Sum-Net
表示是三类LSA,用于描述区域间路由,由ABR产生
Ls id
网络号
Adv rtr
产生该3类LSA的ABR的router id
Netmask
子网掩码
Metric
ABR到该路由的开销
一类、二类LSA只能在产生的区域内泛洪。区域间的路由如何计算呢? 1、 由ABR将自身直连的区域内路由转化成其他直连区域的3类LSA, 完成区域间路由的计算; 2、 ABR将区域0中的3类转为其他非骨干区域的3类。
区域间路由
四类Asbr-summary LSA路由信息
Type:sum-asbr
表示是四类LSA,由和ASBR同一区域的ABR产生,描述自身到ASBR的开销
Ls id
ASBR的router id
Adv rtr
abr的router id
Tos 0 metric
abr到asbr的开销
五类ASE LSA 路由信息
Type:external
表示是五类LSA,由ASBR产生,在整个AS进行泛洪
Ls id
外部路由的网络号
Adv rtr
asbr的router id
Net mask
外部路由的子网掩码
Tos 0 metric
引入时外部路由的开销(ASBR到外部路由的开销),默认为1
E type
cost type开销类型,默认cost-type2
Cost type 1:路由表中始终显示引入时开销+AS内部路径开销之和
Cost type 2:路由表中只显示引入时的开销
5类、7类路由关于Etype的选路规则
cost type 1永远优于cost type 2
都是cost type 1:选择cost小的,如果cost相同则负载分担,路由意义上的选路方 式
都是 cost type 2:优先比较引入时的开销,引入时开销小的优先,不关心AS内部路径 开销,管理意义上的选路方式。如果引入时开销相同,则比较AS内部开销,即选择到 ASBR开销小的优先;如果引入时开销相同,AS内部开销也相同,则负载分担
Forwarding address
转发地址,用于外部路由路径优化
当OSPF路由器计算5类LSA路由时,如果携带转发地址并且自身有存在转发地址的直连 路由时,则将该外部路由的下一跳直接设置为转发地址
FA=0.0.0.0表示最佳的下一跳是ASBR,否则最佳的下一跳就是填充的具体地址
FA≠0.0.0.0
Tag
路由标记,默认为1,只能在引入时标记,方便对路由的管理
七类 NSSA LSA 路由信息
Type:NSSA
表示是7类LSA,由ASBR产生,只能在NSSA区域泛洪
Ls id
外部路由的网络号
Options:NP
表示可以做7转5
五类、七类LSA用来计算外部路由,四类LSA用来配合五类
外部路由
OSPF LSA更新原则
1、 定时更新:默认情况下,产生这条LSA的路由器每隔1800S会更新自身的LSA。
2、 触发更新:当产生这条LSA的路由器发现这条LSA状态发生了变化。
OSPF协议如何删除一条LSA?
SEQ不变,chksum不变的情况下,将LS age设置成3600S。
更新内容: SEQ+1,chksum重新计算,ls age置0; SEQ越大越新; Chksum越大越新; Ls age = 3600S 最新,ls age差值大于900S, Ls age小的最新,Ls age差值小于900S则一样
判断LSA的新旧
1.序列号越大越新
2.序列号相同,校验和越大越新
3.序列号相同,校验和相同,老化时间被设置为MaxAge3600秒,则该实例被认为最新
4.序列号相同,校验和相同,没有实例老化时间被设置成3600秒,则比较ls age,当两个实例的ls age差值超过15分钟,则ls age越小的越新
5.序列号相同,校验和相同,没有实例老化时间被设置成3600秒,则比较ls age,当两个实例的ls age差值不超过15分钟,则被认为是相同的实例
OSPF多区域
单区域的缺点
1. 树的规模较大,SPF算法会消耗更多CPU资源;
2. 任何链路状态发生改变而产生的1类2类更新,需要整个区域内泛洪;
3. 当某个节点网络不稳定,整个区域的所有路由器都要参与SPF的重新计算, 整个区域的稳定性就很难控制了。
通过多区域划分来解决以上问题
1. OSPF多区域将网络划分成2层的区域结构;
2. 一层为骨干区域,即AREA 0;
3. 二层为非骨干区域,即非AREA 0;
4. AREA 0必须要有,且唯一,并且要连续,不可分割;
5. 非骨干区域一定要和骨干区域直接相连。
OSPF路由器身份
IR——区域内部路由器
所有接口都属于同一个区域的路由器。
ABR——区域边界路由器
1. 连接多个区域,并且至少有一个活动的接口属于区域0的路由器;
2. 配置了vlink的路由器。
ASBR——自治系统边界路由器
1.执行import-route命令的路由器;
2. NSSA区域的做7类转换5类的ABR。
VLINK 虚拟链路
1、 只要创建VLINK的路由器都是ABR;
2、 VLINK永远属于区域0的链路;
3、 VLINK只能在非骨干区域创建,只能跨越一个非骨干区域;
4、 特殊区域不能创建VLINK;
5、 用于修复不连续的骨干区域;
6、 将非骨干区域和骨干区域直接相连;
7、 作为区域的备用路径;
8、 能不用就别用,增加网络复杂性,难维护,一般只用于临时救急。
OSPF的水平分割
OSPF的水平分割实质上是基于OSPF的区域划分和第三类LSA即区域间路由传递。
OSPF的水平分割主要有四点:
1.通过三类LSA,普通区域的内部路由可以传递到骨干区域,骨 干区域的路由也可以传递到非骨干区域;
2.普通区域的路由不可以直接传递到其他非骨干区域;
3.普通区域从骨干区域学习到的路由不可以传递到其他区域(包含骨干区域);
4.骨干区域从一个普通区域学习到的路由不可以直接传回到该普通区域。
路由计算规则:
区域间路由
Cost = 自身到ABR的开销+ABR到目标路由的开销
Next-hop = 自身到ABR的下一跳,根据到ABR的SPF树进行计算。
外部路由
和ASBR在同一个区域的路由
Cost= 自身到ASBR的开销+引入时的开销
Next-hop = 自身到ASBR的下一跳
子主题
Cost= 自身到ABR的开销(区域内路由基于SPF)+ABR到ASBR的开销(四类)+引入时的开销(5类)
Next-hop = 自身到ABR的下一跳
外部路由引入
将外部路由引入就是将其他协议的路由或OSPF其他进程的路由引入到OSPF协议进程中。
Import-route static 执行该命令,会把路由表中活动的静态路由引入到OSPF协议 中。缺省路由不会被引入。
OSPF特殊区域
OSPF特殊区域的优点:
1、 减少特殊区域的LSA数量;
2、 减少路由表的规模;
3、 仍然能保证网络畅通。
特殊区域的缺点和限制:
1、 会产生次优路径;
2、 不能建立虚链路;
3、 区域0不能是特殊区域。
末节区域 stub
1、 不允许5类LSA在该区域泛洪;
2、 该区域不产生4类LSA;
3、 该区域的ABR产生一条3类的缺省路由,用于访问外部网络;
4、 通过3类的LSA访问区域间路由;
5、 区域视图下使用default-cost可以修改缺省路由的开销;
6、 该区域的所有路由器以及该区域的ABR都要配置成stub。
完全末节区域 totally stub
1、 不允许5类LSA在该区域泛洪;
2、 该区域不产生3类、4类LSA;
3、 该区域的ABR产生一条3类的缺省路由,用于访问区域间和外部网络;
4、 区域视图下使用default-cost可以修改缺省路由的开销;
5、 该区域的IR配置为stub;
6、 该区域的ABR配置为totally stub。
次末节区域 NSSA
1、 允许本区域的ASBR以7类lsa引入外部路由;
2、 不允许其他的ASBR产生的5类LSA泛洪,不产生4类LSA;
3、NSSA区域的ABR产生一条7类缺省路由,用于访问其他区域引入的外部路由;
4、7类LSA只能在NSSA区域进行泛洪,不能泛洪到其他区域;
5、NSSA区域的ABR将7类的LSA转成5类LSA泛洪到其他区域,如果有多个ABR,则ROUTER ID大的ABR去做7转5。
完全次末节区域 totally NSSA
1. 允许本区域的ABSR引入外部路由,7类的LSA方式引入;
2. 不允许其他区域的ASBR产生的5类LSA泛洪,不产生4类LSA;
3.不产生3类LSA,由NSSA的ABR产生一条3类缺省LSA,用于访问区域间路由;
4.NSSA区域的ABR产生一条7类缺省路由,用于访问其他区域的外部路由;
5.7类LSA只能在NSSA区域进行泛洪,不能泛洪到其他区域;
6.NSSA区域的ABR将7类的LSA转成5类LSA泛洪到其他区域,如果有多个ABR,则 ROUTER ID大的ABR去做7转5;
7. 优先用3类缺省。
当一台路由器既是ABR又是ASBR,NSSA区域如何只通过 7类缺省访问外部路由,而不生成7类外部路由呢? 在ABR&ASBR上使用 no-import-route no-summary
特殊区域可以增强区域稳定性,因为其他区域的 动荡不会影响本区域的缺省路由。
OSPF路由汇总
1、 区域间路由汇总 abr-summary
1.只能在ABR上执行;
2.只能对直连区域的路由做汇总(即对区域内的路由);
3.汇总的默认开销继承明细路由中最大的;
4.明细全部失效,汇总路由也会失效,可以增强网络的稳定性;
5.如果区域有多个ABR,所有ABR都要执行汇总否则时区汇总效果。
2、 外部路由汇总 asbr-summary
1.只能在ASBR上执行;
2.汇总路由的开销类型继承明细路由的开销类型,如果明细路由开销类型不一致,则开销类型为TYPE 2;
3.NSSA区域的外部路由汇总可以在ASBR上执行,也可以在NSSA区域的ABR上执行。
路由汇总命令后 加 not-advertise参数,即 不通告这条汇总。可以起到路由过滤作用。
OSPF认证
首先了解下什么是数据安全: 1、 数据的机密性:只有通信双方才能看懂数据,其他任何人都无法了 解数据内容; 2、 数据的完整性:数据无法被伪造或者篡改; 3、 数据的不可抵赖性:不能否认你做过,或者你没做过。 培训机构:誉天
路由协议的认证,可以保护报文的安全性。 路由协议的认证,只实现协议报文数据完整性保护。
OSPF认证方式
1、 区域认证:在属于这个区域的所有接口上启用认证;
2、 接口认证:仅在该接口启用认证;
接口认证优先于区域认证。
认证模式
1、 null:不做认证,报文中auth type 为0;
2、 明文:只要密码一致,则认为认证通过,auth type 1;
3、 MD5:要求Key id要一致,key也要一致,认证才能成功,auth type 2。
认证规则
两端的认证模式一定要一致。
Ospf authentication-mode null命令可以将接口从区域认证中排出,不做认证。
如果做了area 0认证,并且存在vlink,那么vlink也要做认证。
MD5
数学上是一种hash函数。
特点
1.不可逆,无法通过hash值反推出原始数据;
2.雪崩效应:原始数据任何bit被修改,得到的hash和原始的hash存在巨大差异;
3. 随机输入,固定输出:无论原始数据大小如何,hash结果长度一致,MD5为128bit,SHA为160bit。