华为HCIP OSPF高级技术
RIP是基于距离矢量算法的路由协议,应用在大型网络中存在收敛速度慢、度量值不科学、可扩展性差等问题。
IETF提出了基于SPF算法的链路状态路由协议OSPF (OpenShortest Path First)。通过在大型网络中部署OSPF协议,弥补了RIP协议的诸多不足。那么OSPF协议是如何实现的呢?面对网络扩展的需求,又该如何应对呢?
OSPF:开放式最短路径优先(Open Shortest PathFirst )协议是IETF定义的一种基于链路状态的内部网关路由协议。
OSPF基础
OSPF两层结构(层次化结构):骨干区域、常规区域
OSPF路由优先级:10
OSPF反掩码
正掩码:/24 255.255.255.0
反掩码:255.255.252.0->0.0.3.255;在反掩码里,0bit表示精确匹配,1bit表示任意匹配。
route id:运行ospf路由器的身份id
route id选举:优先选择最大的逻辑接口地址,再选择最大物理接口地址
注意1:route id是在ospf进程刚启动时开始选举,后面如果有必要更改route id,则需要重启ospf进程
注意2:由于接口的ip地址变动可能引发ospf route id的变动进而对网络产生影响,因此建议给ospf手动指定固定的route id
注意3:在一个ospf网络里,每台路由器的route id都必须是独一无二的。
注意4:route id 并不一定是路由器接口的ip地址。
相关命令
//查看邻居表
[]dis ospf peer brief
//重置ospf进程
<>reset ospf process
OSPF原理分析
OSPF常见的五种报文:
-
hello:发送自身route-id,自报家门
10s 发送一次,该报文仅用作邻居的建立和维持。并不携带任何路由信息。报文小巧。 -
DBD:database description数据库描述摘要(目录)
-
LSR:link-state request链路状态请求,请求某链路的详细路由信息
-
LSU:link-state update链路状态更新,对请求的回应
-
LSack:链路状态确认
注意:ospf在邻居刚建立的时候会发送路由信息(路由信息使用DBD、LSR、LSU、LSack四种报文来发送),路由同步以后,后面仅发送hello包来维持邻居关系即可。
链路状态路由协议OSPF
注意1 :
所谓Link State(链路状态)指的就是路由器的接口状态。
在OSPF中路由器的某一接口的链路状态包含了如下信息︰该接口的IP地址及掩码,该接口的带宽,该接口所连接的邻居,该接口的链路类型等等。
一句话,链路状态就是ospf中用于计算路由的sPF算法的原材料,可以简单理解为原始路由信息的综合体。
注意2∶
在度量方式上,OSPF将链路带宽作为选路时的参考依据。“累计带宽”是一种要比“累积跳数”更科学的计算方式。
定时更新与触发更新
hello报文10s发送一次,类似心跳报文
OSPF报文类型
Type | 报文名称 | 报文功能 |
---|---|---|
1 | hello | 发现和维护邻居关系 |
2 | Database Description | 交互链路状态数据库摘要 |
3 | Link State Request | 请求特定的链路状态信息 |
4 | Link State Update | 发送详细的链路状态信息 |
5 | Link State Ack | 发送确认报文 |
OSPF的工作过程
相互发送hello报文-----》邻居-------》泛洪LSA(互相传递链路信息)-----》LSDB------》运行SPF算法------》生成最优路由--------》路由表
发现并建立邻居—Hello报文
Hello报文的作用:
- 邻居发现:自动发现邻居路由器。
- 邻居建立:完成Hello报文中的参数协商,建立邻居关系。
- 邻居保持:通过Keepalive机制,检测邻居运行状态。
邻接状态:链路状态数据同步完成Full
邻居状态:进展到2-way
建立邻居关系
Initi:初始化状态准备建立邻居
2-way:互相得知对方的router id 等信息(互相方识,选举DR BDR)
ExStart:准备开始交互链路信息(ospf隐式确认机制,确认主从关系)
ExChange :正式交互链路信息
Loading:确认链路信息交互
Full:完全同步
邻居建立条件 :
- 直连通信
- network 宣告网段
- 认证通过
- area id一致
- hello dead时间一致
- Option Ebit位 Nbit位 一致( stub nssa区域)
- 掩码一致(针对多路访问网络—广播型网络即普通以太网)
- 静默端口
- MTU(思科检查,华为不检查)
- 版本号一致
- route id不能冲突
OSPF的特殊区域有STUB区域和和NSSA区域,分别对应如下的情况 :
STUB区域:Ebit=0,Nbit=0
NSSA区域:Ebit=0,Nbit=1
注意:MTU包含在DD报文里面的。
hello报文格式:
建立邻接关系
建立邻接关系过程如下:
- 本端设备通过接口向外发送Hello报文与对端设备建立邻居关系。
- 两端设备进行主/从关系协商和DD报文交换。
- 两端设备通过更新LSA完成链路数据库LSDB的同步。
此时,邻接关系建立成功。
在上述邻居状态机的变化中,有两处决定是否建立邻接关系:
- 当与邻居的双向通讯初次建立时。
- 当网段中的DR和BDR发生变化时。
OSPF在不同网络类型中,OSPF邻接关系建立的过程不同,分为广播网络,NBMA网络,点到点/点到多点网络。
在广播网络中建立OSPF邻接关系
广播链路邻接关系建立过程如下图所示。
在广播网络中,DR、BDR和网段内的每一台路由器都形成邻接关系,但DR other之间只形成邻居关系。
①建立邻居关系
- RouterA的一个连接到广播类型网络的接口上激活了OSPF协议,并发送了一个Hello报文(使用组播地址224.0.0.5)。此时,RouterA认为自己是DR路由器(DR=1.1.1.1),但不确定邻居是哪台路由器(Neighbors Seen=0)。
- RouterB收到RouterA发送的Hello报文后,发送一个Hello报文回应给RouterA,并且在报文中的Neighbors Seen字段中填入RouterA的Router ID(Neighbors Seen=1.1.1.1),表示已收到RouterA的Hello报文,并且宣告DR路由器是RouterB(DR=2.2.2.2),然后RouterB的邻居状态机置为Init。
- RouterA收到RouterB回应的Hello报文后,将邻居状态机置为2-way状态,下一步双方开始发送各自的链路状态数据库。
在广播网络中,两个接口状态是DR Other的路由器之间将停留在此步骤。
②主/从关系协商、DD报文交换
-
RouterA首先发送一个DD报文,宣称自己是Master(MS=1),并规定序列号Seq=X。I=1表示这是第一个DD报文,报文中并不包含LSA的摘要,只是为了协商主从关系。M=1说明这不是最后一个报文。
为了提高发送的效率,RouterA和RouterB首先了解对端数据库中哪些LSA是需要更新的,如果某一条LSA在LSDB中已经存在,就不再需要请求更新了。为了达到这个目的,RouterA和RouterB先发送DD报文,DD报文中包含了对LSDB中LSA的摘要描述(每一条摘要可以唯一标识一条LSA)。为了保证在传输的过程中报文传输的可靠性,在DD报文的发送过程中需要确定双方的主从关系,作为Master的一方定义一个序列号Seq,每发送一个新的DD报文将Seq加一,作为Slave的一方,每次发送DD报文时使用接收到的上一个Master的DD报文中的Seq。 -
RouterB在收到RouterA的DD报文后,将RouterA的邻居状态机改为Exstart,并且回应了一个DD报文(该报文中同样不包含LSA的摘要信息)。由于RouterB的Router ID较大,所以在报文中RouterB认为自己是Master,并且重新规定了序列号Seq=Y。
-
RouterA收到报文后,同意了RouterB为Master,并将RouterB的邻居状态机改为Exchange。RouterA使用RouterB的序列号Seq=Y来发送新的DD报文,该报文开始正式地传送LSA的摘要。在报文中RouterA将MS=0,说明自己是Slave。
-
RouterB收到报文后,将RouterA的邻居状态机改为Exchange,并发送新的DD报文来描述自己的LSA摘要,此时RouterB将报文的序列号改为Seq=Y+1。
上述过程持续进行,RouterA通过重复RouterB的序列号来确认已收到RouterB的报文。RouterB通过将序列号Seq加1来确认已收到RouterA的报文。当RouterB发送最后一个DD报文时,在报文中写上M=0。
③LSDB同步(LSA请求、LSA传输、LSA应答)
- RouterA收到最后一个DD报文后,发现RouterB的数据库中有许多LSA是自己没有的,将邻居状态机改为Loading状态。此时RouterB也收到了RouterA的最后一个DD报文,但RouterA的LSA,RouterB都已经有了,不需要再请求,所以直接将RouterA的邻居状态机改为Full状态。
- RouterA发送LSR报文向RouterB请求更新LSA。RouterB用LSU报文来回应RouterA的请求。RouterA收到后,发送LSAck报文确认。
上述过程持续到RouterA中的LSA与RouterB的LSA完全同步为止,此时RouterA将RouterB的邻居状态机改为Full状态。当路由器交换完DD报文并更新所有的LSA后,此时邻接关系建立完成。
在NBMA网络中建立OSPF邻接关系
NBMA网络和广播网络的邻接关系建立过程只在交换DD报文前不一致,如下图中的蓝色标记。
在NBMA网络中,所有路由器只与DR和BDR之间形成邻接关系。
在NBMA网络中建立OSPF邻接关系的过程如下:
①建立邻居关系
- RouterB向RouterA的一个状态为Down的接口发送Hello报文后,RouterB的邻居状态机置为Attempt。此时,RouterB认为自己是DR路由器(DR=2.2.2.2),但不确定邻居是哪台路由器(Neighbors Seen=0)。
- RouterA收到Hello报文后将邻居状态机置为Init,然后再回复一个Hello报文。此时,RouterA同意RouterB是DR路由器(DR=2.2.2.2),并且在Neighbors Seen字段中填入邻居路由器的Router ID(Neighbors Seen=2.2.2.2)。
在NBMA网络中,两个接口状态是DR Other的路由器之间将停留在此步骤。
②主/从关系协商、DD报文交换过程同广播网络的邻接关系建立过程。
③LSDB同步(LSA请求、LSA传输、LSA应答)过程同广播网络的邻接关系建立过程。
在点到点/点到多点网络中建立OSPF邻接关系
在点到点/点到多点网络中,邻接关系的建立过程和广播网络一样,唯一不同的是不需要选举DR和BDR,点对点网络中的DD报文是组播发送的。
路由计算
OSPF采用SPF(Shortest Path First)算法计算路由,可以达到路由快速收敛的目的。
OSPF协议使用链路状态通告LSA描述网络拓扑,即有向图。Router LSA描述路由器之间的链接和链路的属性。路由器将LSDB转换成一张带权的有向图,这张图便是对整个网络拓扑结构的真实反映。各个路由器得到的有向图是完全相同的。如下图所示。
每台路由器根据有向图,使用SPF算法计算出一棵以自己为根的最短路径树,这棵树给出了到自治系统中各节点的路由。如下图所示。
当OSPF的链路状态数据库LSDB发生改变时,需要重新计算最短路径,如果每次改变都立即计算最短路径,将占用大量资源,并会影响路由器的效率,通过调节SPF的计算间隔时间,可以抑制由于网络频繁变化带来的占用过多资源。缺省情况下,SPF时间间隔为5秒钟。
具体的计算过程如下:
- 计算区域内路由。
Router LSA和Network LSA可以精确的描述出整个区域内部的网络拓扑,根据SPF算法,可以计算出到各个路由器的最短路径。根据Router LSA描述的与路由器的网段情况,得到了到达各个网段的具体路径。
在计算过程中,如果有多条等价路由,SPF算法会将所有等价路径都保留在LSDB中。
- 计算区域外路由。
从一个区域内部看,相邻区域的路由对应的网段好像是直接连接在ABR上,而到ABR的最短路径已经在上一过程中计算完毕,所以直接检查Network Summary LSA,就可以很容易得到这些网段的最短路径。另外,ASBR也可以看成是连接在ABR上,所以ASBR的最短路径也可以在这个阶段计算出来。
如果进行SPF计算的路由器是ABR,那么只需要检查骨干区域的Network Summary LSA。
- 计算自治系统外路由。
由于自治系统外部的路由可以看成是直接连接在ASBR上,而到ASBR的最短路径在上一过程中已经计算完毕,所以逐条检查AS External LSA就可以得到到达各个外部网络的最短路径。
OSPF的LSDB同步
状态含义 :
Down:这是邻居的初始状态,表示没有从邻居收到任何信息。
Init:在此状态下,路由器已经从邻居收到了Hello报文,但是自己的Router ID不在所收到的Hello报文的邻居列表中,表示尚未与邻居建立双向通信关系。
2-Way:在此状态下,路由器发现自己的Router ID存在于收到的Hello报文的邻居列表中,已确认可以双向通信。
ExStart:邻居状态变成此状态以后.,路由器开始向邻居发送DD报文。
Master/Slave关系是在此状态下形成的,初始DD序列号也是在此状态下确定的。在此状态下发送的DD报文不包含链路状态描述。
Exchange:在此状态下,路由器与邻居之间相互发送包含链路状态信息摘要的DD报文。
Loading :在此状态下,路由器与邻居之间相互发送LSR报文、LSU报文、LSAck报文。
Full : LSDB同步过程完成,路由器与邻居之间形成了完全的邻接关系。
OSPF - 多区域
OSPF开销(cost)计算
注意:ospf开销计算既看“距离”,也看带宽,综合评定!
cost=沿途累加(100M/链路带宽),比如100M/1000M=0.1,不足1按照1算。
100M属于默认参考带宽
串行链路的带宽∶2.048Mbps 开销=48
也可以更改默认参考带宽:
[R1]ospf 1
[R1-ospf-1]bandwidth-reference ?
INTEGER<1-2147483648> The reference bandwidth (Mbits/s)
如果修改默认参考带宽了,建议所有路由器都修改。
另外接口下也可以手动修改COST值
int gi 0/0/x //接口必须是路由进入的方向
ospf cost 55 //手动修改链路的开销影响选路
OSPF虚链路:骨干区域的延伸
ABR : area boundary router,区域边界路由器
ASBR: autonomous system boundary router,自制系统边界路由器
router id :代表运行ospf 路由器的身份ID“路由器的身份证号”。仅在ospf进程刚启动的时候选举出来,选出后则不再改变,除非重启ospf进程。
注意∶虚链路属于骨干区域的延伸。属于骨干区域的一部分。
注意:虚链路配置只要在2个边界路由器上配置就可以了
OSPF DR和BDR
DR : designated router 指定路由器(班长)
BDR : backup DR备份指定路由器(副班长)
目的︰减少重复LSA报文的发送,减少邻接关系的建立,提升ospf协议报文的传输效率,降低网络资源的消耗。
注意:DR和BDR的选举仅在多路访问环境(广播域内)才会选举。在点到点的环境不选举DR和BDR。
网络类型 | 常见链路层协议 |
---|---|
Point-to-point | PPP链路;LAPB链路;HDLC链路 |
Broadcast(广播,多路访问) | 以太网链路 |
NBMA(非广播,多路访问) | 帧中继链路;ATM链路 |
MA网络中的问题
- nx(n-1)/2个邻接关系,管理复杂
- 重复的LSA泛洪,造成资源浪费。
邻居间LSA的泛洪扩散混乱,相同的LSA会被复制多份,如RTA向其邻居RTB、RTC、RTD分别发送一份自己的LSA,RTB与RTC、RTC与RTD、RTB与RTD之间也会形成邻居关系,也会发送RTA的LSA。
这样的工作效率显然是很低的,消耗资源的。
DR与BDR作用
- 减少邻接关系
- 降低OSPF协议流量
DR (Designated Router )即指定路由器,其负责在MA网络建立和维护邻接关系并负责LSA的同步。
DR与其他所有路由器形成邻接关系并交换链路状态信息,其他路由器之间不直接交换链路状态信息。这样就大大减少了MA网络中的邻接关系数量及交换链路状态信息消耗的资源。
DR一旦出现故障,其与其他路由器之间的邻接关系将全部失效,链路状态数据库也无法同步。此时就需要重新选举DR,再与非DR路由器建立邻接关系,完成LSA的同步。为了规避单点故障风险,通过选举备份指定路由器BDR,在DR失效时快速接管DR的工作。
DR与BDR选举
选举规则:DR/BDR的选举是基于接口的。
①接口优先级+ rouer-id,越大越优先。默认ospf接口优先级都是1
②优先级为0表示不参与DR和BDR的选举
③遵循不抢占原则
-
修改接口优先级
int gi 0/0/x ospf dr-priority 10
邻居与邻接关系
网络类型 | 是否和邻居建立邻接关系 |
---|---|
P2P | 是 |
Broadcast、NBMA | DR与BDR、DRother建立邻接关系,BDR与DR、DRother建立邻接关系,DRother之间只建立邻居关系 |
P2MP | 是 |
邻居(Neighbor )关系与邻接(Adjacency )关系是两个不同的概念。OSPF路由器之间建立邻居关系后,进行LSDB同步,最终形成邻接关系。
在广播型网络及NBMA网络上,DRother之间只能建立邻居关系,不能建立邻接关系,DRother 与DR/BDR路由器之间会建立邻接关系,DR与BDR之间也会建立邻接关系。
在Broadcast型网络里默认所有路由器发送hello报文的目标地址都是:224.0.0.5
DR other 发送(LSU,LsAck)目标地址是224.0.0.6
DR和BDR发送(LSU,LsAck)目标地址是224.0.0.5
OSPF路由引入
rip与ospf互相引入路由(在ASBR上)
ospf1
import-route rip 1 //将rip1的路由引入ospf区域
rip 1
import-route ospf 1 //将ospf区域的路由全部引入rip区域
OSPF路由种类
-
ospf : ospf 普通的路由
-
O_ASE: autonomous system external,ospf自治系统外部路由
type2(默认种类),cost值始终1不累加
type1,cost沿途累加
-
O_NSSA : ospf特殊区域的路由
使用OSPF引入缺省路由
ospf 1
default-route-advertise always //动态下发缺省路由
LSA类型
LSA : link state advertise 链路状态宣告,封装在LSU里面
LSA类型 | LSA作用 |
---|---|
Router-LSA(Type1) | 每个设备都会产生,描述了设备的链路状态和开销,在所属的区域内传播。 |
Network-LSA(Type2) | 由DR(Designated Router)产生,描述本网段的链路状态,在所属的区域内传播。 |
Network-summary-LSA(Type3) | 由ABR产生,描述区域内某个网段的路由,并通告给发布或接收此LSA的非Totally STUB或NSSA区域。例如:ABR同时属于Area0和Area1,Area0内存在网段10.1.1.0,Area1内存在网段11.1.1.0,ABR为Area0生成到网段11.1.1.0的Type3 LSA;ABR为Area1生成到网段10.1.1.0的Type3 LSA,并通告给发布或接收此LSA的非Totally Stub或NSSA区域。 |
ASBR-summary-LSA(Type4) | 由ABR产生,描述到ASBR的路由,通告给除ASBR所在区域的其他相关区域。 |
AS-external-LSA(Type5) | 由ASBR产生,描述到AS外部的路由,通告到所有的区域(除了STUB区域和NSSA区域)。 |
NSSA LSA(Type7) | 由ASBR产生,描述到AS外部的路由,仅在NSSA区域内传播。 |
Opaque LSA(Type9/Type10/Type11) | Opaque LSA提供用于OSPF的扩展的通用机制。其中:①Type9 LSA仅在接口所在网段范围内传播。用于支持GR的Grace LSA就是Type9 LSA的一种。②Type10 LSA在区域内传播。用于支持TE的LSA就是Type10 LSA的一种。③Type11 LSA在自治域内传播,目前还没有实际应用的例子。 |
OSPF三张表
-
邻居表:
dis ospf peer brief
-
拓扑表(链路状态数据库):
dis ospf lsdb
-
路由表:
dis ip routing-table
LSA内容:
LSA ( Link State Advertisement)是路由器之间链路状态信息的载体。LSA是LSDB的最小组成单位,也就是说LSDB由一条条LSA构成的。
所有的LSA都拥有相同的头部,封装在LS Update Packet
中,关键字段的含义如下∶
- LS age :此字段表示LSA已经生存的时间,单位是秒。
- LS Type :此字段标识了LSA的格式和功能。常用的LSA类型有五种。
- Link State ID:此字段是该LSA所描述的那部分链路的标识,例如Router ID等。
- Advertising Router :此字段是产生此LSA的路由器的Router ID。
- LS sequence number :此字段用于检测日的和重复的LSA。
- LS Type, Link State ID和Advertising Router的组合共同标识条LSA。
其中LS Type字段里的Type类型,即链路类型有4种:(LSA中,用于描述Link的LINKID、Link Date)的取值根据OSPF link类型不同而不同)
Link Type | Link ID | Link Data |
---|---|---|
P2P | 邻居的RID | 自己的IP |
Stub | 网络号 | 掩码 |
Transit | DR的接口地址 | 自己的IP |
Vritual link | 邻居的RID | 自己的IP |
Type:链接类型(并非OSPF定义的四种网络类型),Router LSA描述的链接类型主要有:
- Point-to-Point:描述一个从本路由器到邻居路由器之间的点到点链接,属于拓扑信息。
- TransNet:描述一个从本路由器到一个Transit网段(例如MA网段或者NBMA网段)的链接,属于拓扑信息。
- StubNet:描述一个从本路由器到一个Stub网段(例如Loopback接口)的链接,属于路由信息。
注意∶只有在1型LSA里面才有链路类型!!1型LSA最复杂。其他类型LSA没有链路类型.
LSA在各区域中传播的支持情况
区域类型 | 1 | 2 | 3 | 4 | 5 | 7 |
---|---|---|---|---|---|---|
普通区域(包括标准区域和骨干区域) | 是 | 是 | 是 | 是 | 是 | 否 |
Stub区域 | 是 | 是 | 是 | 否 | 否 | 否 |
Totally Stub区域 | 是 | 是 | 否 | 否 | 否 | 否 |
NSSA区域 | 是 | 是 | 是 | 否 | 否 | 是 |
Totally NSSA区域 | 是 | 是 | 否 | 否 | 否 | 是 |
LSA总结
LSA类型 | 通告路由器 | LSA内容 | 传播范围 |
---|---|---|---|
Router LSA(Type-1) | OSPF Router | 拓扑信息+路由信息 | 本区域内 |
Network LSA(Type-2) | DR | 拓扑信息+路由信息 | 本区域内 |
Network-summary-LSA(Type-3) | ABR | 域间路由信息 | 非(Totally)STUB区域 |
ASBR-summary-LSA(Type-4) | ABR | ASBR's Router ID | 非(Totally)STUB区域 |
AS-external-LSA(Type-5) | ASBR | 路由进程域外部路由 | (非STUB区域)OSPF进程域 |
NSSA LSA(Type-7) | ASBR | NSSA域外部路由信息 | (Totally)NSSA区域 |
Type-3 LSA: network-summary LSA
只能由ABR发送,可以穿越整个ospf自治系统(中间需要各个ABR中转),将不同区域的ospf路由信息互相传递。
dis ospf lsdb
dis ospf lsdb summary
注意1:Type-3型LSA linkstate ID代表网段路由信息。
注意2:一条三型LSA只能描述一条路由信息。
注意3:三型LSA只传递路由信息,并未传递原始的拓扑信息。
Type-5 LSA: External LSA
ASBR发出,发送范围整个OSPF自治系统,引入其他自治系统的路由信息
dis ospf lsdb
dis ospf lsdb ase
Type-4 LSA: asbr LSA
只能由ABR发送,发送范围整个ospf自治系统,通告ASBR的身份和位置信息。
dis ospf lsdb
dis ospf lsdb asbr
注意:Type-4型LSA linkstate ID代表ASBR的route id。
Type-7 LSA: nssa LSA
由位于nssa区域的ASBR产生,发送范围仅仅是nssa区域(传至ABR时会转换成5型继续传递),作用是将nssa区域后后的自治系统外部路由路由引入ospf自治系统。
ospf路由种类:
ospf:type1,type2,type3型LSA产生该路由
O_ASE:type5,type4型LSA产生该路由
O_NSSA:type7型LSA
避免区域间的环路
- 骨干区域与非骨干区域
- 三类LSA的传递规则
为防止区域间的环路OSPF定义了骨干区域和非骨干区域和三类LSA的传递规则。
- OSPF划分了骨干区域和非骨干区域,所有非骨干区域均直接和骨干区域相连且骨干区域只有一个,非骨干区域之间的通信都要通过骨干区域中转,骨干区域ID固定为0。
- OSPF规定从骨干区域传来的三类LSA不再传回骨干区域。
对于前文提到的ABR,OSPF要求ABR设备至少有一个接口属于骨干区域。
新建网络按照区域间的防环规则进行部署,可以避免区域间环路问题。但是部分网络可能因早期规划问题,区域间的连接关系违背了骨干区域和非骨干区域的规则。
思考题:
-
一条Network-Summary-LSA可以描述多条路由信息吗?
答:一条Network Summary LSA只能描述一条路由信息。
-
OSPF如何避免区域间的路由环路?
答:①OSPF划分了骨干区域和非骨干区域,所有非骨干区域均直接和骨干区域相连,且骨干区域只有一个;②非骨干区域之间的通信都要通过骨干区域中转;③并规定从骨干区域传来的三类LSA不再传回骨干区域。
区域内的防环机制是:SPF算法
SPF算法
Phase 1:构建SPF树。
根据Router-LSA和Network-LSA中的拓扑信息,构建SPF树干。
Phase 2:计算最优路由。
基于SPF树干和Router-LSA、Network-LSA中的路由信息,计算最优路由。
在一类LSA和二类LSA中,包括了拓扑信息和路由信息。
OSPF将依据SPF算法和各类LSA进行最短路径树的计算:
- Phase 1:依据一类LSA中的Point to Point,TransNet以及二类LSA,构建SPF树。
- Phase 2:依据一类LSA中的Stub以及二类LSA,计算最优路由。
思考题
-
Router-LSA中主要包含哪几种链路类型?
答案:P2P、TransNet、StubNet、vlink。 -
经过SPF算法计算后,被认为是最优的OSPF路由是否一定会被放入路由器的路由表中?
答案:不一定,路由器可能通过多种路由协议获得同一路由前缀的路由信息,还需要通过路由优先级比较确定通过哪个路由协议获得的路由会放入路由表。
路由汇总
在大规模部署OSPF网络时,可能会出现由于OSPF路由表规模过大而降低路由查找速度的现象,为了解决这个问题,可以配置路由汇总,减小路由表的规模。
路由汇总是指将多条连续的IP前缀汇总成一条路由前缀。如果被汇总的IP地址范围内的某条链路频繁Up和Down,该变化并不会通告给被汇总的IP地址范围外的设备。因此,可以避免网络中的路由振荡,在一定程度上提高了网络的稳定性。
路由汇总只能汇总路由信息,所以ABR是可以执行路由汇总的位置之一:
- ABR向其它区域发送路由信息时,以网段为单位生成三类LSA。如果该区域中存在一些连续的网段,则可以通过命令将这些连续的网段汇总成一个网段。这样ABR只发送一条汇总后的三类LSA,所有属于命令指定的汇总网段范围的LSA将不会再被单独发送出去。
路由汇总优点:
①减小路由表的大小,提高路由的查找速度,降低路由器资源的开销。
②避免明细路由频繁down up 影响范围过大,进而避免路由震荡。提升网络的稳定性。
注意:ospf的路由汇总只能汇总路由信息,无法汇总链路拓扑信息。
区域间的汇总只能在ABR上面进行配置:
ospf 1
area 0.0.0.0
network 12.1.1.0 0.0.0.255
area 0.0.0.1
asbr-summary 6.6.0.0 255.255.240.0 //把6.6.6.0/24、6.6.7.0/24、6.6.8.0/24汇总为一条路由
network 10.1.16.0 0.0.0.255
自治系统间的汇总只能在ASBR上面配置:
ospf 1
asbr-summary 9.9.0.0 255.255.240.0 //把9.9.7.0/24、9.9.8.0/24、9.9.9.0/24汇总为一条路由
import-route static
import-route rip 1 type 1
area 0.0.0.0
network 8.8.8.0 0.0.0.255
network 10.1.12.0 0.0.0.255
路由器类型
路由器类型 | 含义 |
---|---|
区域内路由器(Internal Router) | 该类设备的所有接口都属于同一个OSPF区域。 |
区域边界路由器ABR(Area Border Router) | 该类设备可以同时属于两个以上的区域,但其中一个必须是骨干区域。ABR用来连接骨干区域和非骨干区域,它与骨干区域之间既可以是物理连接,也可以是逻辑上的连接。 |
骨干路由器(Backbone Router) | 该类设备至少有一个接口属于骨干区域。所有的ABR和位于Area0的内部设备都是骨干路由器。 |
自治系统边界路由器ASBR(AS Boundary Router) | 与其他AS交换路由信息的设备称为ASBR。ASBR并不一定位于AS的边界,它可能是区域内设备,也可能是ABR。只要一台OSPF设备引入了外部路由的信息,它就称为ASBR。 |
路由类型
AS区域内和区域间路由描述的是AS内部的网络结构,AS外部路由则描述了应该如何选择到AS以外目的地址的路由。OSPF将引入的AS外部路由分为Type1和Type2两类。
下表中按优先级从高到低顺序列出了路由类型。
路由类型 | 含义 |
---|---|
Intra Area | 区域内路由。 |
Inter Area | 区域间路由。 |
第一类外部路由(Type1 External) | 这类路由的可信程度高一些,所以计算出的外部路由的开销与自治系统内部的路由开销是相当的,并且和OSPF自身路由的开销具有可比性。到第一类外部路由的开销=本设备到相应的ASBR的开销+ASBR到该路由目的地址的开销。 |
第二类外部路由(Type2 External) | 这类路由的可信度比较低,所以OSPF协议认为从ASBR到自治系统之外的开销远远大于在自治系统之内到达ASBR的开销。所以,OSPF计算路由开销时只考虑ASBR到自治系统之外的开销,即到第二类外部路由的开销=ASBR到该路由目的地址的开销。 |
区域类型
区域类型 | 作用 |
---|---|
普通区域 | 缺省情况下,OSPF区域被定义为普通区域。普通区域包括标准区域和骨干区域。标准区域是最通用的区域,它传输区域内路由,区域间路由和外部路由。骨干区域是连接所有其他OSPF区域的中央区域。骨干区域通常用Area 0表示。 |
STUB区域 | 不允许发布自治系统外部路由,只允许发布区域内路由和区域间的路由。在STUB区域中,路由器的路由表规模和路由信息传递的数量都会大大减少。为了保证到自治系统外的路由可达,由该区域的ABR发布Type3缺省路由传播到区域内,所有到自治系统外部的路由都必须通过ABR才能发布。 |
Totally STUB区域 | 不允许发布自治系统外部路由和区域间的路由,只允许发布区域内路由。在Totally STUB区域中,路由器的路由表规模和路由信息传递的数量都会大大减少。为了保证到自治系统外和其他区域的路由可达,由该区域的ABR发布Type3缺省路由传播到区域内,所有到自治系统外部和其他区域的路由都必须通过ABR才能发布。 |
NSSA区域 | NSSA区域允许引入自治系统外部路由,由ASBR发布Type7 LSA通告给本区域,这些Type7 LSA在ABR上转换成Type5 LSA,并且泛洪到整个OSPF域中。NSSA区域同时保留自治系统内的STUB区域的特征。该区域的ABR发布Type7缺省路由传播到区域内,所有域间路由都必须通过ABR才能发布。 |
Totally NSSA区域 | Totally NSSA区域允许引入自治系统外部路由,由ASBR发布Type7 LSA通告给本区域,这些Type7 LSA在ABR上转换成Type5 LSA,并且泛洪到整个OSPF域中。Totally NSSA区域同时保留自治系统内的Totally STUB Area区域的特征。该区域的ABR发布Type3和Type7缺省路由传播到区域内,所有域间路由都必须通过ABR才能发布。 |
OSPF支持的网络类型
OSPF根据链路层协议类型,将网络分为如下表所列四种类型。
网络类型 | 含义 |
---|---|
广播类型(Broadcast) | 当链路层协议是Ethernet、FDDI时,缺省情况下,OSPF认为网络类型是Broadcast。在该类型的网络中:①通常以组播形式发送Hello报文、LSU报文和LSAck报文。其中,224.0.0.5的组播地址为OSPF设备的预留IP组播地址;224.0.0.6的组播地址为OSPF DR/BDR( Backup Designated Router)的预留IP组播地址。②以单播形式发送DD报文和LSR报文。 |
NBMA类型(Non-Broadcast Multi-Access) | 当链路层协议是帧中继、X.25时,缺省情况下,OSPF认为网络类型是NBMA。在该类型的网络中,以单播形式发送协议报文(Hello报文、DD报文、LSR报文、LSU报文、LSAck报文)。 |
点到多点P2MP类型(Point-to-Multipoint) | 没有一种链路层协议会被缺省的认为是Point-to-Multipoint类型。点到多点必须是由其他的网络类型强制更改的。常用做法是将非全连通的NBMA改为点到多点的网络。在该类型的网络中:①以组播形式(224.0.0.5)发送Hello报文。②以单播形式发送其他协议报文(DD报文、LSR报文、LSU报文、LSAck报文)。 |
点到点P2P类型(point-to-point) | 当链路层协议是PPP、HDLC和LAPB时,缺省情况下,OSPF认为网络类型是P2P。在该类型的网络中,以组播形式(224.0.0.5)发送协议报文(Hello报文、DD报文、LSR报文、LSU报文、LSAck报文)。 |
OSPF特殊区域(优化技术)
作用:
①减小末节区域LSDB规模以及路由表大小,降低边缘路由器资源开销(内存cpu等)
②减少其他自制系统或区域网络变化对末节区域的影响,减少路由震荡提升网络的稳定性。
STUB区域
STUB区域(末节区域、末端区域、边缘区域 :不接收type-4、type-5型lsa)是一些特定的区域,STUB区域的ABR不传播它们接收到的自治系统外部路由,在这些区域中路由器的路由表规模以及路由信息传递的数量都会大大减少。
STUB区域是一种可选的配置属性,但并不是每个区域都符合配置的条件。通常来说,STUB区域位于自治系统的边界,是那些只有一个ABR的非骨干区域。
为保证到自治系统外的路由依旧可达,该区域的ABR将生成一条缺省路由,并发布给STUB区域中的其他非ABR路由器。
配置STUB区域时需要注意下列几点:
- 骨干区域不能配置成STUB区域。
- 如果要将一个区域配置成STUB区域,则该区域中的所有路由器都要配置STUB区域属性。
- STUB区域内不能存在ASBR,即自治系统外部的路由不能在本区域内传播。
- 虚连接不能穿过STUB区域。
ospf 1
area 0.0.0.1
stub
network 10.1.16.0 0.0.0.255
工作原理:不接收4型、5型LSA,同时自动形成指向中间路由器ABR的缺省路由。
totally-stub区域
完全末节区域:命令stub no-summary
,不接收三、四、五型的LSA。
NSSA区域
- Stub区域、Totally Stub区域存在的问题
- NSSA区域与Totally NSSA区域
NSSA(Not-So-Stubby Area,不完全末端区域)区域是在原始OSPF协议标准中新增的一类特殊区域类型。NSSA区域与STUB区域有许多相似的地方,两者都不传播来自OSPF网络其它区域的外部路由。差别在于STUB区域是不能引入外部路由,NSSA区域能够将自治域外部路由引入并传播到整个OSPF自治域中。
当区域配置为NSSA区域后,为保证到自治系统外的路由可达,NSSA区域的ABR将生成一条缺省路由,并发布给NSSA区域中的其他路由器。
配置NSSA区域时需要注意下列几点:
- 骨干区域不能配置成NSSA区域。
- 如果要将一个区域配置成NSSA区域,则该区域中的所有路由器都要配置NSSA区域属性。
- 虚连接不能穿过NSSA区域。
NSSA LSA (七类LSA) :
- 七类LSA是为了支持NSSA区域而新增的一种LSA类型,用于描述NSSA区域引入的外部路由信息。
- 七类LSA由NSSA区域的ASBR产生,其扩散范围仅限于ASBR所在的NSSA区域。
- 缺省路由也可以通过七类LSA来产生,用于指导流量流向其它自治域。
七类LSA转换为五类LSA:
- NSSA区域的ABR收到七类LSA时,会有选择地将其转换为五类LSA,以便将外部路由信息通告到OSPF网络的其它区域。
- NSSA区域有多个ABR时,进行7类LSA与5类LSA转换的是Router ID最大的ABR。
配置了NSSA区域的ABR产生一条七类LSA缺省路由。
配置了Totally NSSA区域的ABR会自动产生一条三类LSA缺省路由。
思考题:
-
OSPF定义了哪几种特殊区域?
答案:OSPF定义了四种特殊区域,分别是Stub Area,Totally Stub Area,Not-So-Stubby Area (NSSA),Totally NSSA。
-
Stub区域与Totally Stub区域的主要差别是什么?
答案:Stub区域不允许Type-4和Type-5 LSA进入,但允许Type-3 LSA进入。TotallyStub区域不仅不允许Type-4和Type-5 LSA进入,同时也不允许Type-3LSA进入,只允许表示缺省路由的Type-3 LSA进入。
邻居状态机
- 邻居关系:OSPF设备启动后,会通过OSPF接口向外发送Hello报文,收到Hello报文的OSPF设备会检查报文中所定义的参数,如果双方一致就会形成邻居关系,两端设备互为邻居。
- 邻接关系:形成邻居关系后,如果两端设备成功交换DD报文和LSA,才建立邻接关系。
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静默接口
ospf 1
silent-interface GigabitEthernet0/0/0 //将gi0/0/0配置为静默接口
注意:路由器不会从静默接口向外发送任何ospf相关报文。
OSPF报文认证
安全隐患
OSPF支持报文验证功能,只有通过验证的OSPF报文才能接收,否则将不能正常建立邻居。
路由器支持两种验证方式:
- 区域验证方式
- 接口验证方式
当两种验证方式都存在时,优先使用接口验证方式。
-
空认证
不进行认证。
-
明文认证
这是一种简单的加密方式,将配置的密码直接加入报文中,这种加密方式安全性不高。
-
MD5认证
通过将配置的密码进行MD5等加密算法之后再加入报文中,这样提高了密码的安全性。目前支持MD5/HMAC-MD5。
-
Keychain认证
Keychain由多个认证密钥组成,每个密钥包含一个ID和密码。密钥存在生命期,通过密钥的生命期可以在Keychain中滚动选择不同的认证密钥。Keychain可以滚动选择认证密钥来增强防攻击性。
Keychain为OSPF提供了认证保护,Keychain通过动态的更改认证算法和密钥,提高了OSPF的安全性。应用Keychain认证,除了可以对OSPF协议报文进行认证之外,还可以对TCP建立连接的过程进行认证。
-
HMAC-SHA256认证
通过将配置的密码进行HMAC-SHA256算法加密之后再加入报文中,提高密码的安全性。
支持的认证模式分为null(不认证)、simple(明文)、MD5以及HMAC-MD5。
当两种认证方式都存在时,优先使用接口认证方式。
//接口验证方式
int gi0/0/x
ospf authentication-mode md5 1 cipher abc123
//区域验证方式
area 0.0.0.0
authentication-mode md5 1 cipher abc123
OSPF路由聚合
路由聚合是指ABR可以将具有相同前缀的路由信息聚合到一起,只发布一条路由到其它区域。
区域间通过路由聚合,可以减少路由信息,从而减小路由表的规模,提高设备的性能。
OSPF有两种路由聚合方式:
-
ABR聚合
ABR向其它区域发送路由信息时,以网段为单位生成Type3 LSA。如果该区域中存在一些连续的网段,则可以通过命令将这些连续的网段聚合成一个网段。这样ABR只发送一条聚合后的LSA,所有属于命令指定的聚合网段范围的LSA将不会再被单独发送出去。
-
ASBR聚合
配置路由聚合后,如果本地设备是自治系统边界路由器ASBR,将对引入的聚合地址范围内的Type5 LSA进行聚合。当配置了NSSA区域时,还要对引入的聚合地址范围内的Type7 LSA进行聚合。
如果本地设备既是ASBR又是ABR,则对由Type7 LSA转化成的Type5 LSA进行聚合处理。
abr-summary
命令用来在区域边界路由器(ABR)上配置路由聚合。
undo abr-summary
命令用来取消在区域边界路由器上进行路由聚合的功能。
缺省情况下,区域边界路由器不对路由聚合。
命令格式
abr-summary ip-address mask [ [ cost { cost | inherit-minimum } | [ advertise [ generate-null0-route ] | not-advertise | generate-null0-route [ advertise ] ] ] * ]
undo abr-summary ip-address mask
参数说明
参数 | 参数说明 | 取值 |
---|---|---|
ip-address | 指定聚合路由的IP地址。 | 点分十进制形式。 |
mask | 指定聚合路由的IP地址的掩码。 | 点分十进制形式。 |
advertise、not-advertise | 是否发布这条聚合路由。缺省时发布聚合路由。 | - |
generate-null0-route | 指定生成黑洞路由,用来防止路由环路。 | - |
cost cost | 设置聚合路由的开销。当此参数缺省时,则取所有被聚合的路由中最大的那个开销值作为聚合路由的开销。 | 整数形式,取值范围是0~16777214。 |
inherit-minimum | 设置聚合前所有路由开销值中的最小值为聚合后路由的开销值。 | - |
not-advertise | 设置不发布聚合路由。缺省情况下,发布聚合路由。 | - |
使用指南
应用场景
当大规模部署OSPF网络时,可能会出现由于OSPF路由表规模过大而降低路由查找速度的现象,为了解决这个问题,可以配置路由聚合,减小路由表的规模,降低管理的复杂度。
路由聚合是指将多条具有相同IP前缀的路由聚合成一条路由。如果被聚合的IP地址范围内的某条链路频繁Up和Down,该变化并不会通告到被聚合的IP地址范围外的设备。因此,可以避免网络中的路由振荡,在一定程度上提高了网络的稳定性。
abr-summary命令用来设置ABR对区域内路由进行路由聚合。ABR向其它区域发送路由信息时,以网段为单位生成Type-3 LSA。当区域中存在连续的网段(具有相同前缀的路由信息)时,可以通过abr-summary命令将这些网段聚合成一个网段,ABR只发送一条聚合后的LSA,所有指定的聚合网段范围的LSA将不会再被单独发送。从而减小路由表的规模,提高无线接入控制器的性能。
注意事项
- 本命令只适用于ABR,对区域内的路由进行路由聚合。asbr-summary命令用来设置自治系统边界路由器(ASBR)对OSPF引入的路由进行路由聚合。
- 在相同进程的不同区域下,ABR不能配置路由聚合。
使用实例
将OSPF 100的区域1中两个网段10.42.10.0、10.42.110.0的路由聚合成一条聚合路由10.42.0.0向其它区域发布。
<HUAWEI> system-view
[HUAWEI] ospf 100
[HUAWEI-ospf-100] area 1
[HUAWEI-ospf-100-area-0.0.0.1] network 10.42.10.0 0.0.0.255
[HUAWEI-ospf-100-area-0.0.0.1] network 10.42.110.0 0.0.0.255
[HUAWEI-ospf-100-area-0.0.0.1] abr-summary 10.42.0.0 255.255.0.0
OSPF缺省路由
缺省路由是指目的地址和掩码都是0的路由。当设备无精确匹配的路由时,就可以通过缺省路由进行报文转发。由于OSPF路由的分级管理,Type3缺省路由的优先级高于Type5或Type7路由。
OSPF缺省路由通常应用于下面两种情况:
-
由区域边界路由器(ABR)发布Type3缺省Summary LSA,用来指导区域内设备进行区域之间报文的转发。
-
由自治系统边界路由器(ASBR)发布Type5外部缺省ASE LSA,或者Type7外部缺省NSSA LSA,用来指导自治系统(AS)内设备进行自治系统外报文的转发。
-
OSPF路由器只有具有对区域外的出口时,才能够发布缺省路由LSA。
-
如果OSPF路由器已经发布了缺省路由LSA,那么不再学习其它路由器发布的相同类型缺省路由。即路由计算时不再计算其它路由器发布的相同类型的缺省路由LSA,但数据库中存有对应LSA。
-
外部缺省路由的发布如果要依赖于其它路由,那么被依赖的路由不能是本OSPF路由域内的路由,即不是本进程OSPF学习到的路由。因为外部缺省路由的作用是用于指导报文的域外转发,而本OSPF路由域的路由的下一跳都指向了域内,不能满足指导报文域外转发的要求。
不同区域缺省路由发布原则如下图所示。
区域类型 | 作用 |
---|---|
普通区域 | 缺省情况下,普通OSPF区域内的OSPF路由器是不会产生缺省路由的,即使它有缺省路由。当网络中缺省路由通过其他路由进程产生时,路由器必须将缺省路由通告到整个OSPF自治域中。实现方法是在ASBR上手动通过命令进行配置,产生缺省路由。配置完成后,路由器会产生一个缺省ASE LSA(Type5 LSA),并且通告到整个OSPF自治域中。 |
STUB区域 | STUB区域不允许自治系统外部的路由(Type5 LSA)在区域内传播。区域内的路由器必须通过ABR学到自治系统外部的路由。实现方法是ABR会自动产生一条缺省的Summary LSA(Type3 LSA)通告到整个STUB区域内。这样,到达自治系统的外部路由就可以通过ABR到达。 |
Totally STUB区域 | Totally STUB区域既不允许自治系统外部的路由(Type5 LSA)在区域内传播,也不允许区域间路由(Type3 LSA)在区域内传播。区域内的路由器必须通过ABR学到自治系统外部和其他区域的路由。实现方法是配置Totally STUB区域后,ABR会自动产生一条缺省的Summary LSA(Type3 LSA)通告到整个STUB区域内。这样,到达自治系统外部的路由和其他区域间的路由都可以通过ABR到达。 |
NSSA区域 | NSSA区域允许引入通过本区域的ASBR到达的少量外部路由,但不允许其他区域的外部路由ASE LSA(Type5 LSA)在区域内传播。即到达自治系统外部的路由只能通过本区域的ASBR到达。只配置了NSSA区域是不会自动产生缺省路由的。此时,有两种选择:如果希望到达自治系统外部的路由通过该区域的ASBR到达,而其它外部路由通过其它区域出去。此时,ABR会产生一条Type7 LSA的缺省路由,通告到整个NSSA区域内。这样,除了某少部分路由通过NSSA的ASBR到达,其它路由都可以通过NSSA的ABR到达其它区域的ASBR出去。如果希望所有的外部路由只通过本区域NSSA的ASBR到达。则必须在ASBR上手动通过命令进行配置,使ASBR产生一条缺省的NSSA LSA(Type7 LSA),通告到整个NSSA区域内。这样,所有的外部路由就只能通过本区域NSSA的ASBR到达。上面两种情况的区别是:在ABR上无论路由表中是否存在缺省路由0.0.0.0,都会产生Type7 LSA的缺省路由。在ASBR上只有当路由表中存在缺省路由0.0.0.0时,才会产生Type7 LSA的缺省路由。因为缺省路由只是在本NSSA区域内泛洪,并没有泛洪到整个OSPF域中,所以本NSSA区域内的路由器在找不到路由之后可以从该NSSA的ASBR出去,但不能实现其他OSPF域的路由从这个出口出去。Type7 LSA缺省路由不会在ABR上转换成Type5 LSA缺省路由泛洪到整个OSPF域。 |
Totally NSSA区域 | Totally NSSA区域既不允许其他区域的外部路由ASE LSA(Type5 LSA)在区域内传播,也不允许区域间路由(Type3 LSA)在区域内传播。区域内的路由器必须通过ABR学到其他区域的路由。实现方法是配置Totally NSSA区域后,ABR会自动产生一条缺省的Type3 LSA通告到整个NSSA区域内。这样,其他区域的外部路由和区域间路由都可以通过ABR在区域内传播。 |
OSPF路由过滤
OSPF支持使用路由策略对路由信息进行过滤。缺省情况下,OSPF不进行路由过滤。
OSPF可以使用的路由策略包括route-policy,访问控制列表(access-list),地址前缀列表(prefix-list)。
OSPF路由过滤可以应用于以下几个方面:
-
路由引入
OSPF可以引入其它路由协议学习到的路由。在引入时可以通过配置路由策略来过滤路由,只引入满足条件的路由。
-
引入路由发布
OSPF引入了路由后会向其它邻居发布引入的路由信息。
可以通过配置过滤规则来过滤向邻居发布的路由信息。该过滤规则只在ASBR上配置才有效。
-
路由学习
通过配置过滤规则,可以设置OSPF对接收到的区域内、区域间和自治系统外部的路由进行过滤。
该过滤只作用于路由表项的添加与否,即只有通过过滤的路由才被添加到本地路由表中,但所有的路由仍可以在OSPF路由表中被发布出去。
-
区域间LSA学习
通过命令可以在ABR上配置对进入本区域的Summary LSA进行过滤。该配置只在ABR上有效(只有ABR才能发布Summary LSA)。
区域间LSA学习 路由学习 直接对进入区域的LSA进行过滤。 路由学习中的过滤不对LSA进行过滤,只针对LSA计算出来的路由是否添加本地路由表进行过滤。学习到的LSA是完整的。 -
区域间LSA发布
通过命令可以在ABR上配置对本区域出方向的Summary LSA进行过滤。该配置只在ABR上配置有效。
ac1_number 2000
rule 5 deny source 2.2.2.2 0
rule 10 permit
ospf 1
filter-policy 2000 import
注意∶由于ospf传递的是链路信息,因此filter-policy import指令只能阻止链路信息进入路由表,LSA会继续传递给邻居。
ospf 1
import-route rip 1 type 1 route-policy aa
[R8]route-policy aa permit node 10 //node10是执行序号,越小越先执行
[R8-route-policy]if-match acl 2005
[R8-ac1-basic-2005]dis this
acl_ number 2005
rule 5 deny source 9.9.8.0 0.0.0.255
rule 10 permit
前缀列表prefix-list
acl既能用于ip报文的过滤(包过滤),也能用于路由信息的匹配,但用于匹配路由时仅能匹配路由前缀无法匹配掩码。
lP-Prefix List能够同时匹配IP地址前缀及掩码长度。
IP-Prefix List不能用于IP报文的过滤,只能用于路由信息的过滤。
ip prefix-list LIST permit 1.2.3.0 24 le 32
上面的例子表示前缀1.2.3.0前面的24位必须匹配。此外,子网掩码必须小于或等于32位
ip prefix-list LlST permit 10.0.0.0 8 ge 21 le 29
上面的例子说明网段10.0.0.0的前8位必须匹配,此外子网掩码必须在21位和29位之间。
//aa路由策略按照顺序匹配,直到匹配成功,node10与node20是或关系
route-policy aa permit node 10
if-match ip-prefix cc
route-policy aa permit node 20
if-match ip-prefix ee
//tag和acl是并且关系,两个条件必须同时满足才能匹配
route-policy aa permit node 10
if-match tag 22
if-match ac1 2009
OSPF多进程
- 进程号本台路由器有效
- 两台路由器,进程号不同可以建立邻居并传递路由
- 同一台路由器,不同的ospf进程默认不能互串路由,多个进程独立运行,互不干扰
- 默认的ospf 进程是1
OSPF支持多进程,在同一台路由器上可以运行多个不同的OSPF进程,它们之间互不影响,彼此独立。不同OSPF进程之间的路由交互相当于不同路由协议之间的路由交互。
路由器的一个接口只能属于某一个OSPF进程。
OSPF多进程的一个典型应用就是在VPN场景中PE和CE之间运行OSPF协议,同时VPN骨干网上的IGP也采用OSPF。在PE上,这两个OSPF进程互不影响。
OSPF RFC1583兼容
RFC1583是OSPFv2协议比较早的版本。
OSPF在计算外部路由时,由于RFC2328和RFC1583的路由计算规则不一致,可能会导致路由环路。为了避免路由环路的发生,RFC2328中提出了RFC1583兼容特性。
-
使能RFC1583兼容后,OSPF采用RFC1583的路由计算规则。
-
不使能RFC1583兼容时,OSPF采用RFC2328的路由计算规则。
-
选择到达产生该LSA的ASBR或该LSA所描述的转发地址(Forwarding Address)的路径;
-
选择到达相同目的地的外部路径。
缺省情况下,OSPF兼容RFC1583。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。