OSPF
OSPF知识点
OSPF基本配置,OSPF 5种报文,7种邻居状态,4种网络类型,4种特殊区域,7类LSA,4种link type,标识一条LSA的3个要素,OSPF邻居域邻接关系,单区域,多区域,OSPF认证(keychain),DR的选举,OSPF被动接口,OSPF域间聚合,外部聚合,不规则区域的解决方法(虚链路),OSPF开销值,协议优先级及计时器的修改,OSPF外部路由引入,下放默认路由,OSPF在FR中的应用,OSPF协议中Forwarding Address 的理解
这里先提一下RIP
RIP是基于距离矢量算法的路由协议,应用在大型网络中存在收敛速度慢、度量值不科学、可扩展性差等问题
RIP特性 | 带来的问题 | 优化或解决方案 |
---|---|---|
逐跳收敛 | 收敛慢,故障恢复时间长 | 收到更新-》计算路由-》发送更新 改为 收到更新-》发送更新-》计算路由 |
传闻路由更新机制 | 缺少对全局网络拓扑的了解 | 路由器基于拓扑信息,独立计算路由 |
最多有效跳数为15 | 环形组网中,使远端路由不可达 | 不限定跳数 |
以“跳数”为度量 | 存在选择次优路径的风险 | 将链路带宽作为选路参考值 |
OSPF的工作过程:邻居建立、同步链路状态数据库、计算最优路由
OSPF 邻接建立不起来的原因
①广播网络类型中子网掩码不匹配 dis ospf peer brief 查看
②router-id 相同
③网络类型不同,改了网络类型,缺省Hello时间也不同
④hello,dead 时间不同,改了hello,dead也会改。hello和dead是4倍关系
hello时间相同,网络类型不同。 邻接能建立,但路由无法传递。
⑤MTU 值不同 (两端必须开启mtu enable,强制mtu检测)
MTU作用:DD报文中,停留在ExStart(做一个主从选择,Master和Slave,比较Router ID 谁大谁做主)
⑥无 DR,(两端设置dr优先级为0,不参与选举),会停留在 2-way。 缺省dr优先级是1
⑦认证不同,一端做加密,另一端没加密。
⑧区域ID 不同,两台设备,一个区域0,一个区域1
⑨末节标志位不同 stub,totally stub,nssa,totally nssa
⑩接口设置为silent-interface
等等,主要是在这10个中进行检查
掩码:在MA/NBMA掩码要一致,P2P没限制
OSPF 8种状态机
OSPF共有8种状态机,分别是:Down、Attempt、Init、2-way、Exstart、Exchange、Loading、Full。
Down:邻居会话的初始阶段,表明没有在邻居失效时间间隔内收到来自邻居路由器的Hello数据包。
Attempt:该状态仅发生在NBMA网络中,表明对端在邻居失效时间间隔(dead interval)超时前仍然没有回复Hello报文。此时路由器依然每发送轮询Hello报文的时间间隔(poll interval)向对端发送Hello报文。
Init:收到Hello报文后状态为Init。
2-way:收到的Hello报文中包含有自己的Router ID,则状态为2-way;如果不需要形成邻接关系则邻居状态机就停留在此状态,否则进入Exstart状态。
Exstart:开始协商主从关系,并确定DD的序列号,此时状态为Exstart。
Exchange:主从关系协商完毕后开始交换DD报文,此时状态为Exchange。
Loading:DD报文交换完成即Exchange done,此时状态为Loading。
Full:LSR重传列表为空,此时状态为Full。
OSPF邻居建立过程
Down->Init->2-way
Down(没有运行OSPF,没有network)
init和2way描述:
从邻居收到一个Hello包,但在Hello包发现邻居是NULL的,没有我自己的Router ID ,所以状态设置为 init
从邻居收到一个Hello包,但在Hello包发现邻居的Router ID 和 自己的Router ID ,所以状态设置为 2 way
手动建立邻居(NBMA)
nbma,非广播的,也不支持组播
OSPF支持通过单播方式建立邻居关系。
四种网络类型:广播,点到点,点到多点,NBMA
type | hello | type | hello |
---|---|---|---|
p2p | 10 | 无 | 自动 |
broadcast | 10 | DR | 自动 |
nbma(不支持广播、组播) | 30 | DR | 手工 |
p2mp | 30 | 无 | 自动 |
缺省情况下 网络类型为Broadcast
P2P、Broadcast类型接口发送hello的时间间隔为10秒,死亡时间40秒;
P2MP、NBMA类型接口发送Hello报文的时间间隔为30秒,死亡时间120秒
OSPF的度量方式
某接口cost=参考带宽/实际带宽。取整,0.1取1 参考带宽 100M
更改cost的两种方式:
·直接在接口下配置
·修改参考带宽(所有路由器都需要修改,确保选路一致性)
OSPF 5种报文
Type | 报文名称 | 报文功能 |
---|---|---|
1 | Hello | 发现和维护邻居关系 |
2 | Database Description | 交互链路状态数据库摘要 |
3 | Link State Request | 请求特定的链路状态信息 |
4 | Link State Update | 发送详细的链路状态信息 |
5 | Link State Ack | 发送确认报文 |
发现、建立、维护邻居 - Hello 报文
Hello报文的作用:
· 邻居发现:自动发现邻居路由器
· 邻居建立:完成Hello报文中的参数协商,建立邻居关系
· 邻居保持:通过Keepalive机制,检测邻居运行状态 (dead interval 40s)
DD报文的I,M,MS 第一个DD报文是没有LSA信息的
所以第一个DD报文,都各自认为自己是主,所以MS都置1。 随后比较router id 确定了主从。 优先级大的为主
OSPF LSDB同步,互相发送DD报文
主从设备选举完后,设备的状态从Exstart状态变为Exchange状态,从设备会使用主设备的序列号,发送携带摘要信息的DD报文。
LSA是OSPF链路状态信息的载体
标识一条LSA的三要素:LS type、Link State ID、Advertising Router
DR和BDR
有DR和BDR的原因:重复的LSA泛洪,造成资源浪费。 为了减少资源浪费,降低OSPF协议流量
选举规则:DR/BDR的选举是基于接口的。(不抢占)
· 接口的DR优先级越大越优先。 DR priority 默认为1
· 接口的DR优先级相等时,Router ID越大越优先
接口优先级为0代表状态永远为 DRother
当选举出DR后,网络内的DR-Other和DR开始建立邻接关系,进入下一个状态Exstart
当链路两端的设备都进入2-way状态后,如果是MA或NBMA网络,会进行DR/BDR的选举。该选举是为了减少广播型网络和NBMA网络中建立邻接关系的数量。
如果存在DR的情况下,其他DR-Other只会和DR建立邻接关系,DR-Other之间建立邻居关系,但是不会建立邻接关系,状态一直处于2-way状态。
OSPF的邻居和邻接的关系
邻居关系:OSPF设备启动后,会通过OSPF接口向外发送Hello报文。当双方收到对方的hello报文的时候,报文里面的参数(hello time.dead interval , area id.authentication ,mask 等)一致的时候,并且邻居关系为2-way的时候,这个就可以成为是建立了邻居关系,但是还不是邻接关系。
邻接关系:在建立的邻居关系之后继续发送DD,LSR,LSU等报文,最终双方的LSDB达到同步之后,邻居状态为FULL时,才成为邻接关系。
邻居关系为双方只交互HELLO报文,不交互链路状态数据库,而邻接关系就要交互所有的信息
DRother之间是 2-way
OSPF更新机制
定时更新: LSA每30分钟更新一次,60分钟失效
触发更新: 当链路状态发生变化之后,立即发送链路状态更新
OSPF认证
简单认证:
接口认证
[R3]int g0/0/1
[ ]ospf authentication-mode simple huawei 明文认证
[ ]ospf authentication-mode md5 1 cipher huawei MD5
区域认证
ospf 1
area 0
authentication-mode md5 1 cipher abc
keychain认证
为了增强网络的安全性,需要不断地来更新密钥,但是其操作十分复杂,并且会出现BGP连接中断的危险。我们可以使用基于keychain的认证方式来实现密钥的周期性变换。使用keychain方式可以定义密钥的存活期,但需要注意的是要保证系统时间的一致,避免认证失败。
[R3]keychain key mode periodic daily
[R3-keychain]key-id 1
[R3-keychain-keyid-1]key-string huawei 密钥
[R3-keychain-keyid-1]algorithm sha-1 对密钥进行加密
[R3-keychain-keyid-1]receive-time daily 09:00 to 18:00 接收时间
[R3-keychain-keyid-1]send-time daily 09:00 to 18:00 发送时间
[ ]int g0/0/1
[ ]ospf authentication-mode keychain key
OSPF域内路由
Router LSA 和 Network LSA
熟悉Router-LSA内容及作用
熟悉Network-LSA内容及作用
1类LSA Router-LSA(只要是一台运行OSPF的路由器都会产生1类的LSA)
Router LSA 4种链路类型:p2p、stubnet(描述网段)、transnet(描述DR和BDR)、vlink
1类LSA的LS type、Link State ID、Advertising Router
Link State ID = Router ID
Advertising Router = Router ID
2类LSA Network LSA (有DR才会有2类)
MA和NBMA网络会产生2类LSA
2类LSA的LS type、Link State ID、Advertising Router
Link State ID = DR的IP
Advertising Router = DR的Router ID
SPF计算过程
第一步:构建SPF树
根据Router-LSA和Network-LSA中的拓扑信息,构建SPF树干
第二步:计算最优路由
基于SPF树干和Router-LSA、Network-LSA中的路由信息,计算最优路由
OSPF域间路由
熟悉区域间路由传递过程
理解区域防环机制
掌握虚连接配置过程
必须 骨干区域 + 非骨干区域
单区域过大,如果区域内某处发生故障,整个区域内的路由器都要重新就散路由,这将大大增加路由器的负担,降低网络运行的稳定性
区域间路由传递过程 —— 3类LSA Summary-network
一个路由器所有的接口都在同一个区域内 就叫内部路由器 IR
当一个路由器引入外部路由(import-route direct)后,就成为了ASBR
查看路由器是什么角色:dis ospf abr_asbr
LS id:路由
Adv rtr:ABR的Router ID
区域防环机制
· 骨干区域与非骨干区域(必须紧密相连,直接相连),不符合的不会传递路由
· 三类LSA的传递规则(从骨干区域发出去的三类LSA,不回传给骨干区域)
虚连接
· 解决不规范的OSPF区域设计,违背了OSPF 骨干区域与非骨干区域必须相连,物理上没相连,进行逻辑上的相连 —— 虚连接
虚连接一定属于区域0
虚链路上Hello时间为30秒,死亡时间120秒;
[RTB]
[RTB]ospf 1
[RTB-ospf-1]area 1
[RTB-ospf-1-area-0.0.0.1]vlink-peer 3.3.3.3
不规则的三种情况。前面两种能用虚链路解决
虚链路可以配置 备份和认证
可以通过虚连接(看成逻辑连接) 连在一起,可以防止192.168.12.0这个网段断了,起到备份作用
OSPF域外路由
o_ase ,外部类型有两类。 第五类属于外部的2类
理解AS-External-LSA及ASBR-Summary-LSA的作用
熟悉OSPF外部路由计算原理
理解次优外部路由的产生原因 (FA避免)
外部路由引入 import-route direct 完成之后 就会成为 ASBR,产生5类LSA
5类LSA AS-External-LSA 在ASBR路由器上产生的
ASBR所在的区域不产生4类LSA(不产生的原因在下面有提到)
4类LSA是为5类LSA服务的,4类作用是告诉其他路由器ASBR在哪。
4类LSA ASBR-Summary-LSA
因为area0,1类和2类LSA 把4类做的事情完成,所以在ASBR的区域里不需要产生4类LSA。
OSPF外部路由计算原理
外部路由类型
Type | Cost |
---|---|
第一类外部路由 | AS内部开销值+AS外部开销值(真实路径) |
第二类外部路由 | AS外部开销值(每经过一个路由默认是10) |
默认采取第二类外部路由。 但一类和二类都存在的话,优先选取一类
次优外部路由的产生原因 (FA避免)
OSPF不能避免次优外部路由问题,为了解决次优外部路由问题,设置了Forwading Address,有转发地址就代表不是次优,表示是最短路径。
dis ospf lsdb ase External的路由ID
Forwarding Address : 0.0.0.0 表示次优
要想非0,同时满足以下3个条件,则产生的Type 5 LSA,其FA地址非0,等于该引入的外部路由的下一跳地址
①引入的这条外部路由,其对应的出接口的OSPF网络类型为broadcast
②引入的这条外部路由,其对应的出接口要启动OSPF,network 网段
③引入的这条外部路由,其对应的出接口未设置为silent-interface
OSPF 特殊区域
OSPF通过划分区域可以减少网络中LSA的数量。而可能对于那些位于自治系统边界的非骨干区域的低端路由器来说仍然无法承受,所以可以通过OSPF的特殊区域特性进一步减少LSA数量和路由表规模。
特殊区域主要是为了减少4类和5类LSA条目,减少数据库的大小
Stub区域和Totally Stub 区域 —— 用于 中央和分支的拓扑结构
Stub区域
一条缺省的三类LSA:lsdb中的sum-net 0.0.0.0
Totally stub
从stub改为totally,要在RTB——ABR路由器
RTD缺省指向RTB。 当RTD想去RTD路由条目没有的地方,就找缺省路由,指向RTB。 通过RTB——ABR 到达目的地
NSSA区域和Totally NSSA区域
以最优的路径 和 保留引入外部路由的功能。 —— NSSA ,7类LSA
7类LSA只存在NSSA区域
ASBR引入七类LSA,ABR将 7类LSA 转 5类LSA
not-so-stub area
NSSA:1 2 3 7 Totally NSSA:1 2 7
配置了stub区域的路由器再引入外部路由,是不成功的,学习不到的。
因此要配置nssa [R4-ospf-1-area-0.0.0.1]nssa
totally nssa 只需要在 ABR上配置,和stub一样的。 nssa no summary
stub\totally stub\nssa\totally nssa
· stub和nssa的区别:是否存在ASBR
· 哪个lsdb数据库最小? totally stub
7种LSA类型
比较一条新旧LSA:看序列号,再看校验和、之后再看 LS age
如果是新的,就更新到本地。如果是旧的,就把自己的更新过去。
如果一模一样的,直接忽略,丢弃。
如果是没有的,就学习。
思考:特殊区域的局限性在哪里?减少LSA还有没有其他方法?
①特殊区域不仅有效减少了区域内LSA的数量以及路由计算的压力,而且一定程度上也缩小了网络故障的影响范围。但特殊区域的局限性在于其作用范围只在本区域内
②减少LSA还可以通过路由聚合。 路由聚合分为两种:区域间和外部路由
OSPF路由汇总
区域间路由汇总和外部路由汇总 —— 减小LSDB数据库条目
OSPF不支持自动路由聚合,仅支持手动路由聚合。
区域间路由汇总
abr上做聚合,有多个ABR则在Router ID大的做
外部路由汇总
asbr上做聚合
第一个,ospf区域2中做虚链路
第二个,totally nssa
第三个,RTE和RTF做 接口认证 或 区域认证
第四个,import-route direct type 1
OSPF默认路由
第一种方式:缺省路由 + 下放
第二种:没有缺省路由,强制下放
第一种方式:缺省路由 + 下放
R4 下放默认网关路由。 静态路由
[R4]ip route-static 0.0.0.0 0 202.103.68.5
[R5]ip route-static 0.0.0.0 0 202.103.68.4
如果R4 去ping一个全网不存在的接口。 会出现环路。 [R4]tracert 6.6.6.6
最后因为TTL值超时,丢弃结束。
但这里不做这个讨论,继续以缺省静态路由
R4下放一个默认路由
[R4]ospf
[R4-ospf-1]default-route-advertise
第二种:没有缺省路由,强制下放
·运营商规定不允许你用缺省路由指向他,因为容易产生其他问题。 要求 指定明细
[R4]ip route-static 202.68.1.0 24 202.103.68.5
[R4]ip route-static 202.68.2.0 24 202.103.68.5
不是缺省路由,但又想下发路由 —— ①R4上引入静态 ②强制下放
[R4]ospf
[R4-ospf-1]default-route-advertise always
当R5接口down掉了,R4路由表也不会消失
大总结
总结:
1.OSPF 5种报文:hello、DD、LSR、LSU、LSAck
2.OSPF 3张表:邻居表 dis ospf peer、数据库表 dis ospf lsdb、路由表 dis ospf roting
3.7种邻居状态:Down、init、2-way、Exstart、Exchange、Loading、Full
4.网络类型4种和hello时间:broadcast、NBMA、P2P(10s)、P2MP
5.OSPF 4种特殊区域: stub、totally stub、nssa、totally nssa
6.OSPF 4种链路状态:P2P、transnet、subnet、vlink
7.识别一条LSA的3个要素:type、link state id、adv router
8.域间汇总 abr-summary、外部汇总 asbr-summary
9.选路优先规则:域内>域间>外部type1>外部type2
10.引入路由默认:cost 1,tag 1,type 2,优先级150
·type 1,type 2:type 1 内部+外部cost(真实),type2只计算外部cost
11.认证范围:接口,区域,虚链路(骨干)
·区域类型:骨干(area 0),非骨干(常规),特殊
12.DR选举:先看优先级(默认为1,取值范围0-255,0就代表放弃的意思),再看router-id。 不抢占
router-id选举:1、手工指定 2、环回接口 3、物理接口 4、0.0.0.0
先后顺序,会影响router-id,先配物理口,再配环回口。 因此建议是手工指定
13.OSPF邻居建立不起来的原因:
①广播网络类型中 子网掩码不匹配 建立不起OSPF邻接 dis ospf peer brief
②router-id 相同
③网络类型不同,改了网络类型,缺省Hello时间也不同
④hello,dead 时间不同,改了hello,dead也会改。4倍关系
hello时间相同,网络类型不同。 邻接能建立,但路由无法传递。
⑤MTU 值不同 (两端必须开启mtu enable,强制检测),MTU是在DD报文中,停留在ExStart(做一个主从选择,Master和Slave,比较Router ID 谁大)
⑥无 DR,(两端设置dr优先级为0),会停留在 2-way。 缺省dr优先级是1
⑦认证不同,一端做加密,另一端没加密。
⑧区域ID 不同,两台设备,一个区域0,一个邻居路由器为区域1
⑨末节标志位不同 stub,totally stub,nssa,totally nssa
⑩接口设置为silent-interface
实验部分,单独创建,后续…