OSPF
路由优先级缺省:
OSPF内部:10
静态:60
OSPF外部(O_ASE):150
BGP:255
OSPF基本概念与特点
Open Shortest Path First,基于SPF算法的链路状态的内部网关协议
适应范围广:支持各种规模的网络,最多可支持几百台路由器。
快速收敛:在网络的拓扑结构发生变化后立即发送更新报文,使这一变化在自治系统中同步。
无自环:由于OSPF根据收集到的链路状态用最短路径树算法计算路由,从算法本身保证了不会生成自环路由。
区域划分:允许自治系统的网络被划分成区域来管理。路由器链路状态数据库的减小降低了内存的消耗和CPU的负担;区域间传送路由信息的减少降低了网络带宽的占用。
等价路由:支持到同一目的地址的多条等价路由。
路由分级:使用4类不同的路由,按优先顺序来说分别是:区域内路由、区域间路由、第一类外部路由、第二类外部路由。
支持验证:支持基于区域和接口的报文验证,以保证报文交互和路由计算的安全性。
组播发送:在某些类型的链路上以组播地址发送协议报文,减少对其他设备的干扰。
OSPF报文类型(IP协议,89)
OSPF报文头部信息,所有的OSPF报文使用相同的OSPF报文头部。
Version :OSPF协议号,应当被设置成2。
Type:OSPF报文类型,OSPF共有五种报文。
Packet length:OSPF报文总长度,包括报文头部。单位是字节。
Router ID:生成此报文的路由器的Router ID。
Area ID:此报文需要被通告到的区域。
Checksum:是指一个对整个数据包(包括包头)的标准IP校验和。
AuType:验证此报文所应当使用的验证方法。
Authentication:验证此报文时所需要的密码等信息。
1. Hello报文
周期性发送,用来发现和维持OSPF邻居关系,以及进行DR(Designated Router,指定路由器)/BDR(Backup Designated Router,备份指定路由器)的选举。
² Network Mask:发送Hello报文的接口的网络掩码。
² HelloInterval:发送Hello报文的时间间隔。单位为秒(缺省P2P、Broadcast类型接口发送Hello报文的时间间隔为10秒,P2MP、NBMA类型接口发送Hello报文的时间间隔为30秒)。
² Options:标识发送此报文的OSPF路由器所支持的可选功能。主要为E位,是否洪泛AS-external-LSA,N/P位,处理7类LSA(详见RFC 2382附录A.2)
² Rtr Pri:发送Hello报文的接口的Router Priority,用于选举DR和BDR。
² RouterDeadInterval:宣告邻居路由器不继续在该网段上运行OSPF的时间间隔,单位为秒,通常为四倍HelloInterval。
² Designated Router:发送Hello报文的路由器所选举出的DR的IP地址。如果设置为0.0.0.0,表示未选举DR
² Backup Designated Router:发送Hello报文的路由器所选举出的BDR的IP地址。如果设置为0.0.0.0,表示未选举BDR路由器。
² Neighbor:邻居路由器的Router ID列表。表示本路由器已经从该邻居收到合法的Hello报文。
NBMA或广播网络才有DR/BDR字段,其余类型该字段值为0
2. DD(Database Description,数据库描述)报文
描述了本地LSDB(Link State DataBase,链路状态数据库)中每一条LSA(Link State Advertisement,链路状态通告)的摘要信息,用于两台路由器进行数据库同步。
² 接口MTU:是指在数据包不分段的情况下,始发路由器接口可以发送的最大IP数据包大小。当在虚连接时,该在段为0x0000。
² Option:同hello报文。
² I位:当发送的是一系列DD报文中的第一个数据包时,该为置位为1。后续的DD报文将该位置位0。
² M位:当发送的数据包还不是一个系列DD报文中的最后一个数据包时,该为置为1。如果是最后一个DD报文,则将该为置为0。
² MS位:在数据库同步中,主要用来确认协商过程中的序列号。
² DD Sequence Number:DD的序列号报文。
² LSA头部信息。
DD初始交互时(exstart)没有携带LSA头部信息
3. LSR(Link State Request,链路状态请求)报文
向对方请求所需的LSA。两台路由器互相交换DD报文之后,得知对端的路由器有哪些LSA是本地的LSDB所缺少的,这时需要发送LSR报文向对方请求所需的LSA。
² Link State Type:用来指明LSA标识是一个路由器LSA、一个网络LSA还是其他类型的LSA。
² Link State ID:不同类型LSA该字段意义不同。
² Advertising Router:始发LSA通告的路由器的路由器ID。
请求的LSA由LSA类型、链路状态标识和通告路由器组成。
LSR的目的IP:P2P类型为224.0.0.5,广播网络/NBMA类型是单播IP。
此时,OSPF刚建立,只请求DD阶段交互的LSA,OSPF FULL后还会update路由信息,但不会有新的LSR。
4. LSU(Link State Update,链路状态更新)报文
向对方发送其所需要的LSA。LSU必须被LSAck确认,可以一个ack包确认多个或者隐式确认(发送相同的LSU,如广播链路DRother发送LSU给DR,DR需要把这个洪泛给其他DRother,该DRother收到LSU后即算确认)
² Number of LSA:指出这个数据包中包含的LSA的数量。
² LSA:明细LSA信息
5. LSAck(Link State Acknowledgment,链路状态确认)报文
用来对收到的LSA进行确认。
² Header of LSA:LSA头部信息。
LSAck包可能发送到多播地址AllSPFRouters或AllDRouters或者使用单播
LSA类型
LSA头部信息,除Hello报文外,其它的OSPF报文都携带LSA信息。(DD 初始报文(exstart主从协商)也没有携带)
l LS age:此字段表示LSA已经生存的时间,单位是秒。
l Option:该字段指出了部分OSPF域中LSA能够支持的可选性能
l LS type:此字段标识了LSA的格式和功能。常用的LSA类型有五种。
l Link State ID:根据LSA的不同而不同。
l Advertising Router:始发LSA的路由器的ID。
l Sequence Number:当LSA每次新的实例产生时,这个序列号就会增加。这个更新可以帮助其他路由器识别最新的LSA实例。
l Checksum:关于LSA的全部信息的校验和。因为Age字段,所以校验和会随着老化时间的增大而每次都需要重新进行计算。
l Length:是一个包含LSA头部在内的LSA的长度。
DD报文只有LSA头部(除初始报文外(exstart主从协商),初始报文没有LSA信息)
1. Router-LSA(Type1)
路由器产生,描述了路由器的链路状态和开销,本区域内传播,Router-LSA必须描述始发路由器所有接口或链路。
l Link State ID:是指始发路由器的路由器ID。
l V:设置为1时,说明始发路由器是一条或者多条具有完全邻接关系的虚链路的一个端点。
l E:当始发路由器是一个ASBR路由器时,该为置为1。
l B:当始发路由器是一个ABR路由器时,该为置为1。
l Number of links:表明一个LSA所描述的路由器链路数量。
l Link Type:置为1表示点到点连接一台设备;置为2表示连接一个transit网络,可以理解为广播网络;置为3表示连接subnet网络,一般该地址为环回口地址;置为4表示虚链路。
l Link ID:Link Type置为1表示邻居路由器的路由器ID;Link Type置为2表示DR路由器的接口的IP地址;Link Type置为3表示IP网络或子网地址;Link Type置为4邻居路由器的路由器ID。
l Link Data:Link Type置为1表示和网络相连的始发路由器接口的IP地址;Link Type置为2表示和网络相连的始发路由器接口的IP地址;Link Type置为3网络的IP地址或子网掩码。
l ToS,暂不支持。
l Metric:是指一条链路或接口的代价。
2. Network-LSA(Type2)
DR产生,描述本网段的链路状态,本区域内传播
l Link State ID:是指DR路由器接口上的地址。(LSA头部)
l Network Mask:指定这个网络上使用的地址或者子网的掩码。
l Attached router:列出该多路访问网络上与DR形成完全邻接关系且包括DR本身的所有路由器的路由器ID。
3. Network-summary-LSA(Type3)
ABR产生,描述区域内某个网段的路由,区域间传播(除特殊区域)
l Link State ID:对于3类LSA来说,表示所通告的网络或子网的IP地址。对于4类LSA来说表示所通告的ASBR路由器的路由器ID。(LSA头部)
l Network Mask:对于3类LSA来说,表示所通告的网络的子网掩码或者地址。对于4类LSA来说,该字段没有实际意义,一般置为0.0.0.0。
l Metric:直到目的地址的路由的代价。
4. ASBR-summary-LSA(Type4)
ABR产生,描述到ASBR的路由,OSPF域内传播(除特殊区域)
l Link State ID:对于3类LSA来说,表示所通告的网络或子网的IP地址。对于4类LSA来说表示所通告的ASBR路由器的路由器ID。
l Network Mask:对于3类LSA来说,表示所通告的网络的子网掩码或者地址。对于4类LSA来说,该字段没有实际意义,一般置为0.0.0.0。
l Metric:直到目的地址的路由的代价。
5. AS-external-LSA(Type5)
ASBR产生,描述到AS外部的路由,OSPF域内传播(除特殊区域)
l Link State ID:目的地的IP地址。
l Network Mask:指所通告的目的地的子网掩码或地址。
l E:用来指定这条路由使用的外部度量的类型。如果该E bit设置为1,那么度量类型就是E2;如果该E bit设置为0,那么度量类型就是E1。
l Metric:指路由的代价。由ASBR设定。
l Forwarding Address:是指到达所通告的目的地的数据包应该被转发到的地址。如果转发地址是0.0.0.0,那么数据包将被转发到始发ASBR上。
l External Route Tag:标记外部路由。
根据RFC2382,需要在区域内或区域间有下一跳的路由!
6. NSSA LSA(Type7)
由ASBR产生,描述到AS外部的路由,仅在NSSA区域内传播。
Forwarding Address:如果网络一台NSSA ASBR路由器和邻接的自治系统之间是作为一条内部路由通告的,那么这个FA就是这个网络的下一跳地址。如果网络不是作为一个条内部路由通告的,那么这个FA地址将是NSSA ASBR路由器的路由器ID。
l 7类LSA是为了支持NSSA区域而新增的一种LSA类型,用于描述引入的外部路由信息。
l 7类LSA由NSSA区域的自治域边界路由器(ASBR)产生,其扩散范围仅限于边界路由器所在的NSSA区域。
l NSSA区域的区域边界路由器(ABR)收到7类LSA时,会有选择地将其转化为5类LSA,以便将外部路由信息通告到OSPF网络的其它区域。
l 缺省路由也可以通过7类LSA来表示,用于指导流量流向其它自治域。
7. Opaque LSA( Type9/Type10/Type11)
Opaque LSA提供用于OSPF的扩展的通用机制。其中:
l Type9 LSA 仅在接口所在网段范围内传播。用于支持 GR 的Grace LSA 就是 Type9 LSA 的一种。
l Type10 LSA 在区域内传播。用于支持 TE 的 LSA 就是 Type10LSA 的一种。
l Type11 LSA 在自治域内传播,目前还没有实际应用的例子
区域类型
所有其他区域必须与区域0相连
拓扑所体现的IS-IS与OSPF不同点:
l 在OSPF中,每个链路只属于一个区域;而在IS-IS中,每个链路可以属于不同的区域;
l 在IS-IS中,单个区域没有骨干与非骨干区域的概念;而在OSPF中,Area0被定义为骨干区域;
l 在IS-IS中,Level-1和Level-2级别的路由都采用SPF算法,分别生成最短路径树SPT而在OSPF中,只有在同一个区域内才使用SPF算法,区域之间的路由需要通过骨干区域来转发。
1. 普通区域
缺省情况下, OSPF区域被定义为普通区域。普通区域包括标准区域和骨干区域。
l 标准区域是最通用的区域,它传输区域内路由,区域间路由和外部路由。
l 骨干区域是连接所有其他 OSPF 区域的中央区域。骨干区域通常用Area 0 表示。
2. STUB区域
不允许发布自治系统外部路由,只允许发布区域内路由和区域间的路由。在STUB区域中,路由器的路由表规模和路由信息传递的数量都会大大减少。为了保证到自治系统外的路由可达,由该区域的ABR发布Type3缺省路由传播到区域内,所有到自治系统外部的路由都必须通过ABR才能发布。
l 骨干区域不能配置成Stub区域。
l 如果要将一个区域配置成Stub区域,则该区域中的所有路由器都要配置Stub区域属性。
l Stub区域内不能存在ASBR,即自治系统外部的路由不能在本区域内传播。
l 虚连接不能穿过Stub区域。
l Stub区域不允许自治系统外部的路由(Type5 LSA)在区域内传播。
l 区域内的路由器必须通过ABR学到自治系统外部的路由。实现方法是ABR会自动产生一条缺省的Summary LSA(Type3 LSA)通告到整个Stub区域内。这样,到达自治系统的外部路由就可以通过ABR到达。
3. Totally STUB区域
不允许发布自治系统外部路由和区域间的路由,只允许发布区域内路由。在Totally STUB区域中,路由器的路由表规模和路由信息传递的数量都会大大减少。为了保证到自治系统外的路由可达,由该区域的ABR发布Type3缺省路由传播到区域内,所有到自治系统外部的路由都必须通过ABR才能发布。
l Totally Stub区域既不允许自治系统外部的路由(Type5 LSA)在区域内传播,也不允许区域间路由(Type3 LSA)在区域内传播。
l 区域内的路由器必须通过ABR学到自治系统外部和其他区域的路由。
l ABR会自动产生一条缺省的Summary LSA(Type3 LSA)通告到整个Stub区域内。
4. NSSA区域
NSSA区域允许引入自治系统外部路由,由ASBR发布Type7 LSA通告给本区域,这些Type7 LSA在ABR上转换成Type5 LSA,并且泛洪到整个OSPF域中NSSA区域同时保留自治系统内的STUB区域的特征。该区域的ABR发布Type3缺省路由传播到区域内,所有域间路由都必须通过ABR才能发布。
为了将NSSA区域引入的外部路由发布到其它区域,需要把Type-7 LSA转化为Type-5 LSA以便在整个OSPF网络中通告。
l option字段P用于告知转化路由器该条7类LSA是否需要转化。
l 进行转化的是NSSA区域中Router ID最大的区域边界路由器(ABR)。
l 只有P置位并且Forwarding Address不为0的Type-7 LSA才能转化为Type-5 LSA。Forwarding Address用来表示发送的某个目的地址的报文将被转发到Forwarding Address所指定的地址。
l 满足以上条件的缺省7类LSA也可以被转化。
l 区域边界路由器产生的7类LSA不会置位P-bit。
注意事项
Ø 在NSSA区域中,可能同时存在多个边界路由器。为了防止路由环路产生,边界路由器之间不计算对方发布的缺省路由。
5. Totally NSSA区域
Totally NSSA区域允许引入自治系统外部路由,由ASBR发布Type7 LSA通告给本区域,这些Type7 LSA在ABR上转换成Type5 LSA,并且泛洪到整个OSPF域中。Totally NSSA区域同时保留自治系统内的Totally STUB Area区域的特征。该区域的ABR发布Type3缺省路由传播到区域内,所有域间路由都必须通过ABR才能发布。
NSSA和Totally NSSA
l NSSA区域允许引入少量通过本区域的ASBR到达的外部路由,但不允许其他区域的外部路由ASE LSA(Type5 LSA)在区域内传播。即到达自治系统外部的路由只能通过本区域的ASBR到达。
l Totally NSSA区域既不允许其他区域的外部路由ASE LSA(Type5 LSA)在区域内传播,也不允许区域间路由(Type3 LSA)在区域内传播。
6. OSPF NSSA缺省路由
NSSA区域内存在两种缺省路由,由ASBR产生的第七类缺省路由和ABR产生的第三类缺省路由(完全NSSA区域)。
路由器类型
1. 区域内路由器(Internal Router):该类设备的所有接口都属于同一个OSPF区域。
2. 区域边界路由器ABR(Area Border Router):该类路由器可以同时属于两个以上的区域,但其中一个接口必须在骨干区域。ABR用来连接骨干区域和非骨干区域,它与骨干区域之间既可以是物理连接,也可以是逻辑上的连接。
3. 骨干路由器(Backbone Router):该类路由器至少有一个接口属于骨干区域。所有的ABR和位于Area0的内部路由器都是骨干路由器。
4. 自治系统边界路由器ASBR(AS Boundary Router):与其他AS交换路由信息的路由器称为ASBR。ASBR并不一定位于AS的边界,它可能是区域内路由器,也可能是ABR。只要一台OSPF路由器引入了外部路由的信息,它就成为ASBR(外部路由只能由ASBR汇总)
网络类型
1. 广播类型( Broadcast)
当链路层协议是Ethernet、 FDDI时,缺省情况下, OSPF认为网络类型是Broadcast。
在该类型的网络中:
l 通常以组播形式发送 Hello 报文、LSU 报文和 LSAck 报文。其中,224.0.0.5 的组播地址为 OSPF 设备的预留 IP 组播地址; 224.0.0.6的组播地址为 OSPF DR/BDR 的预留 IP 组播地址。
l 以单播形式发送 DD 报文和 LSR 报文。
2. NBMA类型( Non-Broadcast Multi-Acess)
当链路层协议是帧中继、 X.25时,缺省情况下, OSPF认为网络类型是NBMA。在该类型的网络中,以单播形式发送协议报文( Hello报文、 DD报文、LSR报文、 LSU报文、 LSAck报文)。
3. 点到多点P2MP类型( Point-to-Multipoint)
没有一种链路层协议会被缺省的认为是Point-to-Multipoint类型。点到多点必须是由其他的网络类型强制更改的。常用做法是将非全连通的NBMA改为点到多点的网络。
在该类型的网络中:
l 以组播形式( 224.0.0.5)发送 Hello 报文。
l 以单播形式发送其他协议报文( DD 报文、 LSR 报文、 LSU 报文、LSAck 报文)。
4. 点到点P2P类型( point-to-point)
当链路层协议是PPP、 HDLC和LAPB时,缺省情况下, OSPF认为网络类型是P2P。
在该类型的网络中,以组播形式( 224.0.0.5)发送协议报文( Hello报文、 DD报文、 LSR报文、 LSU报文、 LSAck报文)。
5. DR/BDR(NBMA或广播网络)
l 减少邻居关系的数量,从而减少链路状态信息和路由信息的次数。Drother只与DR/BDR建立完全邻接关系。DR与BDR之间建立完全邻接关系。
l DR产生网络LSA来描述NBMA网段或者广播网段信息。
DR/BDR选举规则
DR/BDR由OSPF的Hello协议选举,选举是根据端口的路由器优先级(Router Priority)进行的。
1. 如果Router Priority被设置为0,那么该路由器将不允许被选举成DR或者BDR。
2. Router Priority越大越优先。如果相同,Router ID大者优先。
3. DR/BDR不能抢占。
4. 如果当前DR故障,当前BDR自动成为新的DR,网络中重新选举BDR;如果当前BDR故障,则DR不变,重新选举BDR。
路由类型
1. Intra Area
区域内路由
2. Inter Area
区域间路由
3. 第一类外部路由( Type1 External)
这类路由的可信程度高一些,所以计算出的外部路由的开销与自治系统内部的路由开销是相当的,并且和OSPF自身路由的开销具有可比性。
到第一类外部路由的开销=本设备到相应的ASBR的开销+ASBR到该路由目的地址的开销。
4. 第二类外部路由( Type2 External)
这类路由的可信度比较低,所以OSPF协议认为从ASBR到自治系统之外的开销远远大于在自治系统之内到达ASBR的开销。所以, OSPF计算路由开销时只考虑ASBR到自治系统之外的开销,即到第二类外部路由的开销=ASBR到该路由目的地址的开销。
Option字段
l Option可选字段出现在每一个Hello数据包、DD和每个LSA中的。
l Option字段允许路由器和其他路由器进行一些可选性能的通信。
Option字段包含信息
Option字段解释:
l DN:用来避免在MPLS ×××中出现环路。当3类、5类和7类LSA中设置了DN位之后,接收路由器就不能够在它的OSPF路由计算中使用该LSA。
l O:该字段指出始发路由器支持Opaque LSA(类型9、类型10和类型11)。
l DC位:当始发路由器支持按需链路上的OSPF的能力时,该位将被设置。
l EA:当始发路由器具有接收和转发外部属性LSA的能力时,该位被置位。
l N位:只在Hello数据包中。N=1表明路由器支持7类LSA。N=0表明该路由器将不接收和发送NSSA LSA。
l P位:只用在NSSA LSA。该位将告诉一个非纯末节区域中的ABR路由器将7类LSA转换为5类LSA。
l MC位:支持MOSPF。
l E位:当始发路由器具有接收OSPF域外部LSA的能力时,该位置位。在所有5类LSA和始发于骨干区域以及非末节区域的LSA中,该位置为1。而始发与末节区域的LSA中,该位置为0。如果Hello报文中该位表明一个接口具有接收和发送5类LSA的能力。
l MT位:表示始发路由器支持多拓扑OSPF。
缺省路由
普通区域可以通过default-route-advertise [always]主动生成缺省路由(5类)
R2路由与LSA:
Destination/Mask Proto Pre Cost NextHop Interface
0.0.0.0/0 O_ASE2 150 1 23.1.1.3 GE0/1
AS External Database
Type LinkState ID AdvRouter Age Len Sequence Metric
External 0.0.0.0 6.6.6.6 106 36 80000001 1
Stub区域与完全stub区域,该区域的ABR生成一条缺省路由0.0.0.0 传播到区域内(3类).
R4路由与LSA:
Destination/Mask Proto Pre Cost NextHop Interface
0.0.0.0/0 O_INTER 10 3 34.1.1.3 GE0/0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 4.4.4.4 4.4.4.4 474 60 80000002 0
Sum-Net 0.0.0.0 2.2.2.2 502 28 80000001 1
NSSA区域,ABR不会生成缺省路由0.0.0.0,可以手动在ABR上nssa default-route-advertise将在整个NSSA区域内通告缺省路由0.0.0.0(7类),设备上不需要有缺省路由,如需通过ASBR生成缺省路由,命令相同,但需要设备上有缺省路由。缺省路由只是在本NSSA区域内泛洪。因此NSSA不能作为整个OSPF的缺省出口
在ABR(R2)上的nssa区域(Area2)配置nssa default-route-advertise
R3上路由与LSA:
Destination/Mask Proto Pre Cost NextHop Interface
0.0.0.0/0 O_NSSA2 150 1 23.1.1.2 GE0/0
Type LinkState ID AdvRouter Age Len Sequence Metric
NSSA 0.0.0.0 2.2.2.2 272 36 80000001 1
在ASBR(R4)上的nssa区域(Area2)配置nssa default-route-advertise
R3上路由与LSA:
Destination/Mask Proto Pre Cost NextHop Interface
0.0.0.0/0 O_NSSA2 150 1 34.1.1.4 GE0/1
Type LinkState ID AdvRouter Age Len Sequence Metric
NSSA 0.0.0.0 4.4.4.4 57 36 80000002 1
如果ABR(R2)与ASBR(R4)同时配置nssa default-route-advertise,R3上将会有全0的等价路由。
R3路由与LSA:
Destination/Mask Proto Pre Cost NextHop Interface
0.0.0.0/0 O_NSSA2 150 1 23.1.1.2 GE0/0
34.1.1.4 GE0/1
Type LinkState ID AdvRouter Age Len Sequence Metric
NSSA 0.0.0.0 2.2.2.2 137 36 80000001 1
NSSA 0.0.0.0 4.4.4.4 319 36 80000002 1
完全NSSA区域,区域ABR上会产生一条缺省路由0.0.0.0,通告给整个完全NSSA区域(3类),
R3路由与LSA:
Destination/Mask Proto Pre Cost NextHop Interface
0.0.0.0/0 O_INTER 10 2 23.1.1.2 GE0/0
Type LinkState ID AdvRouter Age Len Sequence Metric
Sum-Net 0.0.0.0 2.2.2.2 160 28 80000001 1
如果在ABR上配置了nssa default-route-advertise ,将会同时产生一条第七类缺省路由LSA和一条第三类缺省路由LSA。对于NSSA中的其他路由器来说,将会优选第三类的缺省路由。
R3路由与LSA:
Destination/Mask Proto Pre Cost NextHop Interface
0.0.0.0/0 O_INTER 10 2 23.1.1.2 GE0/0
Type LinkState ID AdvRouter Age Len Sequence Metric
Sum-Net 0.0.0.0 2.2.2.2 24 28 80000001 1
NSSA 0.0.0.0 2.2.2.2 14 36 80000001 1
如果在完全NSSA区域的ASBR配置了nssa default-route-advertise,将有可能引起NSSA区域内路由环路,R3的缺省路由指向R2,R2的缺省路由指向R3
对于R2,它会同时收到ABR发布的第三类缺省路由和ASBR发布的第七类缺省路由,因此它会选择第三类缺省路由加入它的路由表,所以RTB的路由表中缺省路由0.0.0.0的下一跳指向ABR
对于ABR来说,由于ABR会接收ASBR发布的第七类缺省路由,所以它会把第七类的缺省路由加入自己的路由表中,ABR到ASBR的下一跳是R3,因此ABR的路由表中缺省路由0.0.0.0的下一跳指向RTB;
这样在ABR和RTB之间就存在一条由缺省路由0.0.0.0产生的环路,导致ABR和RTB到外部区域的数据均不能正确转发。
总结:
传播区域
l 在普通区域ASBR上配置产生的是第五类缺省路由,传播的区域是整个的ospf域;
l 在NSSA区域配置产生的是第七类或第三类缺省路由,传播的区域是整个NSSA区域。
发布缺省路由条件:
l 普通区域:不论是在ABR或是ASBR上配置default-route-advertise命令时,都需要在本路由器上已存在一条其他路由协议产生或静态配置的缺省路由时,才会发布第五类缺省路由。如果使用always关键字,则无论ABR、ASBR上是否有缺省路由都会向整个ospf域发布缺省路由。
l Stub区域与完全stub区域,该区域的ABR生成一条缺省路由0.0.0.0 传播到区域内(3类)。
l NSSA区域:如果在ASBR上使用nssa default-route-advertise命令,则同样需要在本路由器上已存在一条其他路由协议产生或静态配置的缺省路由时,才会发布第七类缺省路由;如果在ABR上使用nssa default-route-advertise命令,则不论是否存在其他路由协议产生或静态配置的缺省路由,都会发布第七类缺省路由。
l 完全NSSA区域的ABR要发布第三类缺省路由,首先必须存在至少一个骨干区域的full邻居。满足存在骨干区域full邻居的条件之后,完全NSSA区域的ABR会自动产生一条第三类的缺省路由。
路由器对于两类缺省路由的处理
l 普通区域:如果ABR或ASBR自己发布了第五类缺省路由,则它就不会再接受别的路由器发布的第五类缺省路由。在区域的lsdb中,可以存在多个第五类缺省路由LSA。如果普通区域中的路由器自己没有发布第五类缺省路由,则它会从其他路由器发布的多个第五类缺省路由中选择一个最优的加入路由表。
l NSSA区域:在NSSA区域中的普通路由器(非ABR或ASBR)如果同时收到第三类缺省路由和第七类缺省路由,将会优选第三类缺省路由加入路由表。
l NSSA区域:当ABR发布第三类缺省路由,同时ASBR发布第七类缺省路由时,ABR也会学习ASBR发布的缺省路由。这种情况下NSSA区域有可能出现路由环路。
l 另外如果NSSA区域中多台非ABR的ASBR同时配置nssa default-route-advertise,它们是否会发布第七类缺省路由则依赖于原来路由表中其他路由协议或静态配置的缺省路由的preference值。如果所有ASBR的路由表中缺省路由的preference值都大于150,这时只会有一个ASBR会发布第七类缺省路由,其它的ASBR都学习该ASBR发布的第七类缺省路由,区域的lsdb中只会有一条七类缺省路由的LSA;如果有一部分ASBR的路由表中preference值小于150,那么这些ASBR都会发布第七类缺省路由,并且自己的路由表中的缺省路由不会被其他的ASBR发布的第七类缺省路由更新(路由表优选preference值小的路由加入),其它那些路由表中原来缺省路由preference值大于150的ASBR都不会发布第七类缺省路由,它们只接受其它ASBR发布的缺省路由,并且将该路由加入路由表,此时区域的lsdb中可以有多条七类缺省路由的LSA。
完全NSSA区域路由环路
如果在完全NSSA区域的ASBR配置了nssa default-route-advertise,将有可能引起NSSA区域内路由环路,区域内的路由器会选择ABR的三类缺省路由,ABR会选择ASBR的7类缺省路由,导致ABR与区域内路由器环路。
Forwarding Address
ASBR以5了或7类LSA引入外部路由时,设定FA来标明正确的AS出口位置。
RFC规定的操作:
l 如果LSA描述的目标网络为N。N的地址通过LSA中LS ID和LSA体中的网络掩码计算而来。在路由表中查找生成该LSA的ASBR。如果不存在该ASBR的表项(比如ASBR不可达),那么对该LSA不做操作。
l 否则,该LSA就描述了到达AS外部网络N的路径。检查AS-external-LSA中的‘转发地址’,这个地址就是发往该目标网络N的数据包应该被送达的地址。
l 如果转发地址被设为0.0.0.0,包应当被转发到ASBR。……..
l 如果转发地址不是零,那么在路由表中查找FA。匹配FA的路由表项必须是区域内或区域间路径,如果没有符合条件的表项存在,那么对该LSA不做操作。
l 在RFC中规定,当收到5类LSA并做路由计算时,要求首先看引入该5类LSA的ASBR是否路由可达,否则就不对该LSA做处理。当FA非0时,存在类似的问题,需要查找覆盖FA的区域内或者区域间路由,如果存在才进行处理。
CMW是H3C网络产品使用的操作系统,CMW对FA的填写作了如下规定:
l OSPF在ASBR的下一跳接口启用;
l ASBR的下一跳接口没有被设置为被动接口;
l ASBR的下一跳接口不是OSPF P2P或P2MP类型的;
l ASBR的下一跳接口地址是落在OSPF协议中发布的网络范围之内;
l 除此之外,其它情况FA都填为0.0.0.0。
思科参考The Effects of the FOrwarding Address on Type 5 LSA Path Selection(转发地址对类型 5 LSA 路径选择的影响)及Common ROuting Problem with OSPF Forwarding Address(与 OSPF 转发地址有关的常见路由问题).
l 如果 ASBR 重分配路由且在这些路由的下一跳接口上未启用 OSPF,则转发地址设置为 0.0.0.0。
l 在下列条件下,转发地址字段将设置为非零地址:
n 在 ASBR 的下一跳接口上启用了 OSPF,并且
n ASBR 的下一跳接口在 OSPF 下是非被动的,并且
n ASBR 的下一跳接口并非 是点对点的,并且
n ASBR 的下一跳接口并非 是点到多点的,并且
n ASBR 的下一跳接口地址属于在 router ospf 命令中指定的网络范围。
n 在除以上条件之外的任何其他条件下,转发地址均设置为 0.0.0.0
Router ID
1. 如果有Loopback接口配置了,就选IP地址数值最大的Loopback地址;
2. 如果没有配置Loopback接口地址,就选IP地址数值最大的物理接口地址.
3. 如果当前OSPF进程正在运行,Router ID即使是重新手工配置或计算都不会马上生效,而需要OSPF进程重新启动才会生效
4. 为什么新路由器启动后我不能配置OSPF? 因为OSPF运行是需要一个确定的Router ID作为路由器标志的,这个东西对于OSPF来说非常重要,在OSPF的各类协议报文中都要用到.所以,要么你在OSPF中明确指定Router ID
路由汇总
外部 OSPF 路由只能由 ASBR 进行汇总
路由优选
OSPF路由的优先级从高到低的次序是:Intra-Area>Inter-Area>Type 5 AS-External>Type 7 AS-External.在这种情况下,应该优先的是Type 5路由.注意,对代表同一子网的路由来说,首先比较的是路由优先级才是总的cost.
RFC 1583 compatible
RFC2328在选路时,不是最优先考虑COST的,是要考虑路由的类型及区域的类型的,比如它认为经过经过普通区域的路由好于经过骨干区域的路由。
(1)当RFC 2328兼容RFC 1583时,所有到达ASBR的路由优先级相同(引入的路由按开销大小比较)。当RFC 2328不兼容RFC 1583时,非骨干区的区域内路由优先级最高,区域间路由与骨干区区域内路由优先级相同,优选非骨干区的区域内路由,尽量减少骨干区的负担;
(2)若存在多条优先级相同的路由时,按开销值优选,优选开销值小的路由;
(3)若存在多条开销值相同路由时,按路由来源区域的区域ID选择,优选区域ID大的路由。
OSPF基本原理
邻居状态机
OSPF 共有 8 种状态机,分别是: Down、 Attempt、 Init、 2-way、 Exstart、 Exchange、 Loading、 Full。
l Down:邻居会话的初始阶段,表明没有在邻居失效时间间隔内收到来自邻居路由器的 Hello数据包。
l Attempt:该状态仅发生在 NBMA 网络中,表明对端在邻居失效时间间隔( dead interval)超时后仍然没有回复 Hello 报文。此时路由器依然每发送轮询 Hello 报文的时间间隔( poll interval)向对端发送 Hello 报文。
l Init:收到 Hello 报文后状态为 Init。
l 2-way:收到的 Hello 报文中包含有自己的 Router ID,则状态为 2-way;如果不形成邻接关系则邻居状态机就停留在此状态,否则进入 Exstart 状态。
l Exstart:如果形成邻居关系,则从 Init 状态转到 Exstart 状态,开始协商主从关系,并确定 DD的序列号。
l Exchange:主从关系协商完毕后开始交换 DD 报文,此时状态为 Exchange。
l Loading: DD 报文交换完成即 Exchange done,此时状态为 Loading。
l Full: LSR 重传列表为空,此时状态为 Full。
邻居关系建立
l Down:这是邻居的初始状态,表示没有从邻居收到任何信息。
l Init:在此状态下,路由器已经从邻居收到了Hello报文,但是自己不在所收到的Hello报文的邻居列表中,表示尚未与邻居建立双向通信关系。在此状态下的邻居要被包含在自己所发送的Hello报文的邻居列表中。
l 2-Way:在此状态下,双向通信已经建立,但是没有与邻居建立邻接关系。这是建立邻接关系以前的最高级状态。如果网络为广播网络或者NBMA网络则选举DR/BDR。
在形成邻居关系过程中,需要对Hello报文携带的参数进行协商:
l 如果接收端口的网络类型是广播型,点到多点或者NBMA,所接收的Hello报文中Network Mask字段必须和接收端口的网络掩码一致,如果接收端口的网络类型为点到点类型或者是虚连接,则不检查Network Mask字段;
l 所接收的Hello报文中的Hello和Dead字段必须和接收端口的配置保持一致;
l 所接收的Hello报文中的认证字段需要一致;
l 所接收的Hello报文中的Options字段中的E-bit(表示是否接收外部路由信息)必须和相关区域的配置保持一致。
l 所接收的Hello报文中的区域字段必须一致。
邻接关系建立
1. 邻居状态机变为ExStart以后,R1向R2发送第一个DD报文,在这个报文中,DD序列号被设置为552A(假设),Initial比特为1表示这是第一个DD报文,More比特为1表示后续还有DD报文要发送,Master比特为1表示R1宣告自己为主路由器。
2. 邻居状态机变为ExStart以后,R2向R1发送第一个DD报文,在这个报文中,DD序列号被设置为5528(假设)。由于R2的Router ID比R1的大,所以R2应当为主路由器,Router ID的比较结束后,R1会产生一个NegotiationDone的事件,所以R1将状态机从ExStart改变为Exchange。
3. 邻居状态机变为Exchange以后,R1发送一个新的DD报文,在这个新的报文中包含LSDB的摘要信息,序列号设置为R2在第二步里使用的序列号,More比特为0表示不需要另外的DD报文描述LSDB,Master比特为0表示R1宣告自己为从路由器。收到这样一个报文以后,R2会产生一个NegotiationDone的事件,因此R2将邻居状态改变为Exchange。
4. 邻居状态变为Exchange以后,R2发送一个新的DD报文,该报文中包含LSDB的描述信息,DD序列号设为5529(上次使用的序列号加1)。
5. 即使R1不需要新的DD报文描述自己的LSDB,但是做为从路由器,R1需要对主路由器R2发送的每一个DD报文进行确认。所以,R1向R2发送一个新的DD报文,序列号为5529,该报文内容为空。
6. 邻居状态变为Loading之后,R1开始向R2发送LS request报文,请求那些在Exchange状态下通过DD报文发现的,而且在本地LSDB中没有的链路状态信息。
7. R2收到LS Request报文之后,向R1发送LS Update报文,在LS Update报文中,包含了那些被请求的链路状态的详细信息。R1收到LS Update报文之后,将邻居状态从Loading改变成Full。
8. R1向R2发送LS Ack报文,确保信息传输的可靠性。LS Ack报文用于泛洪对已接收LSA的确认。
OSPF特性
OSPF收敛特性
1. 快速收敛
增量最短路径优先算法I-SPF
l 只对受影响的节点进行路由计算
l 只第一次计算全部节点
I-SPF改进了这个算法,除了第一次计算时需要计算全部节点外,每次只计算受到影响的节点,而最后生成的最短路径树SPT与原来的算法所计算的结果相同,大大降低了CPU的占用率,提高了网络收敛速度。
部分路由计算PRC
l 只对发生变化的路由进行重新计算
l 根据I-SPF 算出来的SPT 来更新路由
PRC的原理与I-SPF相同,都是只对发生变化的路由进行重新计算。不同的是,PRC不需要计算节点路径,而是根据I-SPF算出来的SPT来更新路由。在路由计算中,叶子代表路由,节点则代表路由器。SPT变化和叶子变化都会引起路由信息的变化,但两者不存在依赖关系,PRC根据SPT或叶子的不同情况进行相应的处理:
Ø SPT变化,PRC处理变化节点上的所有叶子的路由信息。
Ø SPT没有变化,PRC不会处理节点的路由信息。
Ø 叶子变化,PRC处理变化的叶子的路由信息。
Ø 叶子没有变化,PRC不会处理叶子的路由信息。
智能定时器
l 对接口翻动等原因带来的网络不稳定,进行智能控制,减少LSA洪泛
l 其他作用略
智能定时器,OSPF智能定时器分别对路由计算、LSA的产生、LSA的接收进行控制,加速网络收敛。OSPF智能定时器可以通过以下两种方式来加速网络收敛:
Ø 在频繁进行路由计算的网络中,OSPF智能定时器根据用户的配置和指数衰减技术动态调整两次路由计算的时间间隔,减少路由计算的次数,从而减少CPU的消耗,待网络拓扑稳定后再进行路由计算。
Ø 在不稳定网络中,当路由器由于拓扑的频繁变化需要产生或接收LSA时,OSPF智能定时器可以动态调整时间间隔,在时间间隔之内不产生LSA或对接受到的LSA不进行处理,从而减少整个网络无效LSA的产生和传播。
智能定时器对路径计算的作用:
Ø 根据本地维护的链路状态数据库LSDB,运行OSPF协议的路由器通过SPF算法计算出以自己为根的最短路径树,并根据这一最短路径树决定到目的网络的下一跳。通过调节SPF的计算间隔,可以抑制网络频繁变化可能导致的占用过多带宽资源和路由器资源。
Ø 在一定组网环境下(例如对路由收敛时间要求较高的环境),可以指定以毫秒为单位的时间间隔,用来增加路由计算的频度,从而加快路由的收敛。
Ø 当OSPF的链路状态数据库(LSDB)发生改变时,需要重新计算最短路径。如果网络频繁变化,由于不断的计算最短路径,会占用大量系统资源,影响路由器的效率。通过配置智能定时器,设置合理的SPF计算的间隔时间,可以避免占用过多的路由器内存和带宽资源。
Ø 使能智能定时器后:
n 初次计算SPF的间隔时间由start-interval参数指定。
n 第n(n≥2)次计算SPF的间隔时间为hold-interval×2(n-1)。
n 当hold-interval×2(n-1)达到指定的最长间隔时间max-interval时,OSPF连续三次计算SPF的时间间隔都是最长间隔时间,之后,再次返回步骤1,按照初始间隔时间start-interval计算SPF。
2. 按优先级收敛
l 能够让某些特定的路由优先收敛的一种技术
可以通过IP前列表等将特定路由过滤出来,通过对不同的路由配置不同的收敛优先级,达到重要的路由先收敛的目的,提高网络的可靠性。
OSPF扩展特性—Database Overflow
通过设置路由器上非缺省外部路由数量的上限,来避免数据库超限。OSPF网络中所有路由器都必须配置相同的上限值。这样,只要路由器上外部路由的数量达到该上限,路由器就进入Overflow状态,并同时启动超限状态定时器(默认超时时间为5秒),路由器在定时器超过5秒后自动退出超限状态。
OSPF Database Overflow过程
l 进入Overflow状态时,路由器删除所有自己产生的非缺省外部路由。
l 处于Overflow状态中,路由器不产生非缺省外部路由,丢弃新收到的非缺省外部路由且不回复确认报文,当超限状态定时器超时,检查外部路由数量是否仍然超过上限,如果超限则重启定时器,如果没有则退出超限状态。
l 退出Overflow状态时,删除超限状态定时器,产生非缺省外部路由,接收新收到的非缺省外部路由,回复确认报文,准备下一次进入超限状态。
OSPF扩展特性—虚连接
l 是指在两台ABR之间通过一个非骨干区域建立的一条逻辑上的连接通道,修复被分割的区域0
l 虚连接必须在两端同时配置方可生效
l 为虚连接两端提供一条非骨干区域内部路由的区域称为传输区域
l 传输区域不能是末节
Ø 在部署OSPF时,要求所有的非骨干区域与骨干区域相连。否则会出现有的区域不可达的问题。
Ø 通过虚连接,两台ABR之间直接传递OSPF报文信息,他们之间的OSPF路由器只是起到一个转发报文的作用。由于OSPF协议报文的目的地址不是这些路由器,所以这些报文对于他们而言是透明的,只是当作普通的IP报文来转发。
Ø 虚连接部署不当时有可能产生环路。
OSPF扩展特性—认证
认证分类
l 接口认证
l 区域认证
认证方式
l Null
l Simple
l MD5
l HMAC-MD5
当两种验证方式都存在时,优先使用接口验证方式。