OSPF的状态:
down: | 邻居的初始状态,在邻居关系失效时间间隔内没有收到来自邻居的hello报文 |
|
attempt | 只在NBMA网络中,邻居网络在超时间隔时间后仍未收到回复的hello报文。 |
|
init | 收到hello报文时的状态 |
|
2-way: | 收到的邻居发来的hello报文中包含自己的router-id,此时为two way状态。 如果不能形成邻居关系则停留此状态,否则进入exstar状态。 | 广播网络中2-way状态选举DR 作用:减少网络中LSA流量的泛洪 特点:1.不会减少Hello报文,较少的DD,LSR,LSU,LSAck报文 2.DRother只和DR以及BDR泛洪DD,LSR,LSU 3.DRother之间只互相发送Hello报文 4.DRother之间保持2-Way关系 5.DR和BDR负责收集网络LSA 6.DR负责向网络中其他DRother通告拓扑信息 7.BDR监控DR运行状态,准备随时取代 8.只存在MA网络 选举规则: 1先选出BDR,BDR发现网络中没有DR后,把自己变为DR,再选出BDR。.先比较优先级,默认为1,大的为DR次大为BDR。 优先级0表示不参与选举,如果两台路由器优先级都为0,则邻居状态为2-Way。DR和BDR不会被抢占。 2.优先级相同,比较Router-ID,大的为DR次大为BDR。 |
exstar | 如果形成邻居关系,则从init状态转为此状态。开始协商主从关系和DD报文序列号。(发送空DD报文协商主从) | 为什么需要协商主从关系:选出master和slave路由器,OSPF是基于IP工作的,IP是一个无连接的协议。同时,OSPF又没有其它的确认机制来保证DD报文可靠的传输。 所以,选举主从是为了保证DD报文有序、可靠的交互。另外DD的序列号还能充当确认的作用。以Master的DD序列号为初始序列号。Router ID大选为主 |
exchange | 主从关系协商完成,开始交换DD报文(Database description)。 | 同时开始LSR,LSU以及LSACK报文,交互LSA的详细信息,进行数据库的同步 |
loading | DD报文交互完成。 |
|
full | LSR重传列表为空时,此时状态为full状态 |
|
OSPF的5种报文
(1)Hello报文:用于发现与维持邻居,后期还可用来进行广播以及NBMA网络中DR以及BDR的选取;根据网络结构的不同,Hello协议的工作方式也不同。
(2)DD(数据库描述)报文,描述本地LSDB(链路状态数据库)的情况;
(3)LSR(链路状态请求)报文,向对端请求本端没有或者对端更新的LSA;
(4)LSU(链路状态更新)报文,向对方更新LSA;
(5)LSAck(链路状态确认)报文,收到LSU后进行确认。
其中,Hello报文用于双向通信连接即发到对方路由器的Hello报文协议中的邻居路由器中必须具有源路由ID才能建立邻居状态,达到two-way状态,并且会在建立成功后每隔一段时间进行Hello报文的发送确认邻居路由器的变化情况。DD报文与LSR报文是形成邻接同步的过程,在这个阶段中邻接状态形成,根据路由器生成的LSA类型进行数据库汇总,向整个区域进行LSA的洪泛;而LSU和LSAck保证了报文交换的状态的确认刷新机制,对LSR报文发出的请求的LSA进行回复,假如未收到更新报文LSU,会在一定时间段内进行LSAck报文进行确认,确认到未收到更新报文或者更新失败,则要求重新发送。
OSPF 区域类型
普通区域 |
|
|
Stub区域 |
|
|
Totally Stub区域 | 继承Stub区域属性,同时 Totally Stub区域允许ABR发布Type3缺省路由,不允许发布(和不接收)自治系统外部路由和区域间的路由,只允许发布区域内路由。 | area 1 stub no-summary(ABR上配置后实现完全末梢区域) |
NSSA
Not-So-Stubby Area |
|
|
Totally NSSA | 继承NSSA区域属性,同时 Totally NSSA区域不允许发布自治系统外部路由和区域间的路由,只允许发布区域内路由。 | NSSA no-summary(ABR上配置后实现Totally区域) 缺省路由为:3类(而NSSA为7类) |
| 1类LSA 2类LSA | 其他区域3类LSA | 4类LSA | 能否引入外部路由 | 5类LSA | 7类LSA |
普通区域 | √ | √ | √ | √ | √ | × |
stub区域 | √ | √ | × | × | × | × |
Totally Stub | √ | × | × | × | × | × |
NSSA | √ | √ | × | √ | × | √ |
Totally NSSA | √ | × | × | √ | × | √ |
OSPF LSA类型
| 名称 | 产生者 | 作用 | Metric | 传递范围 | 防环 |
1类 LSA | router-LSA | 每个路由器 | OSPF网络里的每一台路由设备都会发布Type1 LSA。这种类型的LSA用于描述设备的链路状态和开销 | 本接口cost,默认为1 | 本区域 | SPF |
2类 LSA | network LSA | DR | 由DR(Designated Router)产生,描述本网段的链路状态,列出了所有与DR形成完全邻接关系的路由器的Router ID | 无metric字段 | 本区域 | SPF |
3类 LSA | Network-summary-LSA | ABR产生 | 用来描述区域间的路由信息。 | ABR到该路由的开销 | 区域内/区域间 | 三类LSA防环规则 |
4类 LSA | Sum-Asbr-LSA | ABR发布 | 描述ABR到ASBR的路由信息,并通告给除ASBR所在区域的其他相关区域。只出现在OSPF LSDB数据库中,不出现在路由表中 | ABR到ASBR的开销 | 区域内/区域间 | 与3类相同 |
5类 LSA | 外部LSA | ASBR产生 | 描述到AS外部的路由,通告到除Stub区域和NSSA区域以外所有的区域。 | Type1=本设备到ASBR开销+ASBR到该路由开销; Type 2=ASBR到该路由开销 | OSPF网络 | 与3类相同 |
7类 LSA | NSSA LSA | ASBR产生 | 描述到AS外部的路由,仅在NSSA区域内传播。NSSA区域的ABR收到NSSA LSA时,会有选择地将其转化为Type5 LSA,以便将外部路由信息通告到OSPF网络的其它区域。 因为7类LSA只允许在NSSA区域泛洪。为了将NSSA区域引入的外部路由发布到其它区域,需要将7类转5类的操作 | Type1=本设备到ASBR开销+ASBR到该路由开销; Type 2=ASBR到该路由开销 | nssa区域内 | P位 |
8类 LSA | Link-LSA | 每台路由器 | 描述到此Link上的link-local地址、IPv6前缀地址,并提供将会在Network-LSA中设置的链路选项 | 本接口cost,默认为1 | 本链路 | SPF |
9类 LSA | intra-area prefix LSA区域内前缀 | 每台路由器 | 设备产生的此类LSA,描述与Route-LSA相关联的IPv6前缀地址。 DR产生的此类LSA,描述与Network-LSA相关联的IPv6前缀地址。 | 本接口cost,默认为1 | 本区域内 | SPF |
Router-LSA详解
Router-LSA的信息字段有三个,用于将自己连接的所有链路的状况以及开销告诉该LSA泛洪区域的其他路由器。
其中,Link Type有四种类型,并且ID和Data的值会根据Link Type而有不同:
- 1-P2P(点对点):
此时ID表示邻居路由设备的Router ID,Data表示和网络相连的通告路由器接口的IP地址。
- 2-Transit(传送网络)
此时ID表示DR接口的IP地址,Data表示和网络相连的通告路由器接口的IP地址。
- 3-Stub(末梢网络)
此时ID表示IP网络或子网地址,Data表示网络的IP地址或子网掩码。
- 4-Virtual Link(虚链路)
此时ID表示邻居路由设备的Router ID,Data表示通告路由器接口的MIB-II ifIndex值。
OSPF的组播地址
DRother向DR/BDR发送DD;LSA request或者LSA UPdate时目标地址是All_DRouter(224.0.0.6)
DR/BDR向DRother发送DD;LSA Request或者LSA Update时目标地址是All_OSPFRouter(224.0.0.5)
- 所有的OSPF Router 监听加入组播地址224.0.0.5
- OSPF的DR和BDR监听加入224.0.0.6
5类LSA和7类LSA有什么不同?
(1)防泛洪范围,LSA5是在整个OSPF域泛洪(除了特殊区域),而LSA7只在NSSA区域内防洪;
(2)7类LSA的FA地址永不为0,而5类LSA的FA地址是可能为0的。
为什么需要在ABR上进行7类转5类的操作?
因为7类LSA只允许在NSSA区域泛洪。为了将NSSA区域引入的外部路由发布到其它区域,需要把Type-7 LSA转化为Type-5 LSA以便在整个OSPF网络中通告。
两端的网络类型不一致时,会不会建立邻居?能建立邻居,路由是否正常?
(1)NBMA只能与NBMA建立full 邻接关系,与其他网络类型都无法建立FULL的邻居关系;(单播发现邻居)
(2)broadcast与P2P,能建立full邻接关系,但不能正常计算路由;(构建的拓扑不一致)
(3)broadcas 与P2MP,通过修改hello/dead timer可以建立full邻接关系,但也不能计算路由;
(4)P2P与P2MP,通过修改hello/dead timer可以建立full邻接关系,路由计算也正常。
OSPF防环的方法:
(1)区域内。
根据1、2类LSA,结合SPF算法,百分百无环路。之所以能做到无环,是因为路由器能够通过LSA描绘出区域的完整拓扑(包括所有接口的Cost)及网段信息。
Type-1 LSA及Type-2 LSA,路由器能够描绘出区域内的拓扑及网段信息,从而运行SPF算法,计算出到达每个网段的最优路径,并将这些路径安装到路由表中,因此区域内的路由(Intra-Area Route)可以实现无环路。
(2)区域间。
OSPF要求所有的非0区域必须与骨干区域直接相连,区域间路由需经由骨干区域中转。
-
OSPF从非骨干区域收到的3类LSA只接收不计算
-
1类、2类LSA路由优于3类LSA的路由。
(3)区域外。
五类LSA没有防环机制,它并不需要防环机制,因为它可以依赖Type-1 LSA及Type-4 LSA来实现防环。
ABR通过优先使用区域0的4类LSA计算外部路由,区域0的4类优于非骨干区域4类。
通过多个区域的1类都能到达ASBR,并且cost相同则优先选择区域ID大的1类,如果cost不同则优先选择cost小的。
LSA如何比较新旧:
(1)比较Sequence Number,越大越新
(2)比较Checksum,越大越新
(3)比较Age,3600s最优
(4)Age Time之差小于900s,不比较,先收到先放入LSDB数据库(保留旧的LSA)
(5)Age Time之差大于900s,越小越优(保留新的LSA)
SPF算法
1:构建SPF树 |
|
2:计算最优路由。 |
|
路由过滤:
过滤方式 | 可以调用的方式 | 注意点 | 用途 |
进程下 filter-policy import | ip-prefix acl route-policy | 用来控制进入全局路由表的路由,该命令对本地计算出来的路由执行过滤。 | 命令对接收的路由设置过滤策略,只有通过过滤的路由才被添加到路由表中并被发布,没有通过过滤的路由既不会被添加进OSPF路由表中,也不会被添加到路由表RIB |
进程下 filter-policy export | ip-prefix acl route-policy | 此命令仅在ASBR上配置 | import-route引入外部路由后,为了避免路由环路的产生,通过filter-policy export命令对引入的路由在发布时进行过滤,只将满足条件的外部路由转换为Type-5 LSA(AS-external-LSA)并发布出去。 |
OSPF 区域下 filter export方向 filter import方向 | ip-prefix acl route-policy | 过滤区域中的3类LSA | 这两条命令是用来过滤3类LSA filter export命令用来对从本区域通告出去的Type 3LSA珞由进行过滤 filter import命令对进入本区域的Type3 LSA路由执行过滤 |
接口下 ospf filter-lsa-out | acl | 接口下配置 type3、type5、type7、all | type3、type5、type7、all(all可以连1、 2类LSA过滤) |
加快OSPF收敛的方法:
划分多区域 | 减小区域内的1、2类LSA,加快了区域内的路由计算,区域间路由通告3类LSA传递 |
配置特殊区域 | 减少5类LSA,减小LSDB大小,加快路由收敛 |
路由过滤/路由聚合 | 减少非必要LSA传递,减小LSDB大小,加快路由收敛 |
I-SPF算法 | 只对受影响的节点进行拓扑计算(i-SPF);只第一次计算全部节点拓扑(full SPF)。 |
RPC | 只对发生变化的路由进行重新计算;根据I-SPF 算出来的SPT 来更新路由 |
智能定时器 | 智能定时器可以根据用户的配置和触发事件的频率动态调整时间间隔对路由计算、LSA 的产生、LSA 的接收进行控制,使网络快速稳定,缺省情况下,OSPF 智能定时器已经打开并且配置了缺省值。 |
调整路由收敛的优先级 | 3个优先级对应不同ip-prefix,更高优先级路由最先计算收敛 |
hello 和dead间隔 | 更快的感知邻居故障 |
非广播以太网链路改为P2P网络类型 | 可以减少邻居建立时间,因为MA网络要等待40S来DR选举完成,在40秒内等待其他路由器的加入 |
与BFD联动 | 接口下配置ospf bfd enable |
配置 OSPF Smart-discover | 通常情况下,路由器会周期性地从运行OSPF协议的接口上发送Hello报文。通过一个Hello Timer定时器控制Hello报文的发送。这种按固定周期发送报文的方式减缓了OSPF邻居关系的建立。 使能了Smart-discover特性的接口(广播型或NBMA),上的DR、BDR发生变化时不需要等待Hello Timer到时,就立刻主动的向邻居发送Hello报文。 |
减小LSDB的大小
划分多区域 |
|
配置特殊区域 |
|
路由过滤 |
|
路由汇总 |
|