OSPF简介

OSPF(Open Shortest Path First 开放式最短路径优先)协议是IETF为IP网络开发的IGP路由选择协议。它是一种典型的链路状态(link-state)路由协议。在同一个OSPF自制系统内每一台运行OSPF协议的路由器总是将本地网络的连接状态用LSA描述,并广播到整个自制系统中去。这样,每台路由器都收到了自制系统中所有路由器生成的LSA,这些LSA的集合组成了LSDB,这样所有的OSPF路由器都维护一个相同的描述自治系统内部结构的数据库。

说明:一个路由器在理论上支持65535个OSPF进程,在实际环境中一个路由器可支持的OSPF进程数量与其接口数量相等(包括物理与环回接口)。

多区域OSPF

OSPF是一种分层次的路由协议,在每个AS中,将网络划分为不同的区域。每个区域都有自己特定的标识号。对于主干区域(backbone),负责在区域之间分发链路状态信息。一个大型的网络,如果不分区域,那么路由器的LSA报文和链路状态数据库会很大。一方面容易造成数据库溢出;另一方面当网络中某一链路状态发生变化时,会引起整个网络中每个节点都重新计算一遍自己的路由表,既浪费资源与时间,又会影响路由协议的性能(如聚合速度、稳定性和灵活性)。每个区域内部维持本域一张唯一的拓扑图,且各域根据自己的拓扑图各自计算路由。多区域的OSPF必须存在一个主干区域,主干区域负责收集非主干区域发出的汇总路由信息,域边界路由器把各个域的内部路由总结后将这些信息在域间扩散。这样当网络中的某条链路状态发生变化时,信息只会在那个域以内的邻居之间传递,那个区域以外的路由器不会收到该信息。那么只需要此链路所在域中的每个路由器重新计算本域路由表,而其他域中路由器只需修改其路由表中的相应条目,而无需重新计算整个路由表,节省了就算路由表的时间。OSPF区域不能随意划分,应该合理地选择区域边界,使不同区域之间的通信量最小。但在实际应用中区域的划分往往并不是根据通信模式,而是根据地理或政治因素来完成的。

OSPF划分区域的原因:

LSA数据过大,造成带宽负载过大;

计算全网拓扑,对CPU要求过高;

数据库过大对内存要求过高。

OSPF的特点

1.可适应大规模网络;

2.收敛速度快,无路由环路;

3.支持VLSM和CIDR;

4.支持等价负载均衡;

5.支持区域划分,构成结构化的网络,提供路由分级管理;

6.支持简单口令和MD5认证;

7.以组播方式(224.0.0.5或224.0.0.6)传送协议数据包;

8.OSPF路由协议的管理距离是110;

9.OSPF路由协议采用cost作为度量标准;

10.OSPF维护邻居表、拓扑表和路由表。

名词解释

LSA:Link State Advertisement 链路状态通告。

LSR:Link State Request 链路状态请求。

LSU:Link State Update 链路状态更新。

LSDB:Link State Database 链路状态数据库。

DD:Database Description 链路状态数据库描述。

DR:Designated Router 指定路由器。

BDR:Backup Designate Router 备份指定路由器。

RID:Router ID 路由标识。

ABR:Area Border Router 区域边界路由器。

ASBR:Autonomous System Boundary Rotuer 自治域系统边界路由器。

Stub:末梢区域。

Totally Stubby:完全末梢区域。

NSSA:Not-So-Stubby Area 非纯末梢区域。

Totally NSSA:完全非纯末梢区域。

链路:路由器上的一个接口。

链路状态:有关各条链路状态的信息,用来描述路由器接口及其与邻居路由器的关系,信息包括接口的IP地址

和子网掩码、网络类型、链路开销及链路上的所有相邻路由器。所有链路状态信息构成链路状态数据库。

区域:共享链路状态信息的一组路由器。在同一个区域内的路由器有相同的链路状态数据库。

链路状态通告(LSA):用来表述路由器的本地状态,信息包括路由器接口的状态和所形成的邻接状态。

最短路径优先(SPF)算法:是OSPF路由协议的基础。SPF算法有时也被称为Dijkstra算法,这是因为SPF算法是

Dijkstra发明的。OSPF路由器利用SPF独立地计算出到达任意目的地的最佳路由。

邻居:如果两台路由器共享一条公共数据链路,并且能协商Hello包中所指定的某些参数,他们就形成邻居。

邻接关系:相互交换LSA的OSPF的邻居建立的关系,一般说,在点到点、点到多点的网络上邻居路由器都能形成

邻接关系,而在广播多路访问和NBMA网络上,要选举DR和BDR,DR和BDR路由器与所有的邻居路由器形成邻

接关系,但是DRother路由器之间不能形成邻接关系,只能形成邻居关系。

OSPF的工作原理

OSPF路由器的状态:

Down:这是OSPF建立交互关系的初始化状态,OSPF进程没有与任何邻居交换信息,等待进入Init状态。

Init:Initialization 初始化状态,路由器的各个接口通过224.0.0.5发送Hello数据报文到其他运行OSPF的路

由器,当邻居路由器收到第一个Hello数据报文,这时就进入Init状态。在该状态时,OSPF路由器已经接收

到相邻路由器发来的Hello数据报文,但自身的ID并没有出现在该Hello报文内,也就是说,双方的双向信

还没有建立起来。

2-Way:双向状态,这个状态可以说是建立交互方式真正的开始步骤。在这个状态,路由器接收到一个Hello回

应报文,这个Hello含有自己和邻居信息,路由器看到自身已经处于相邻路由器的Hello数据报内,双向通

信已经建立。指定路由器及备份指定路由器的选择正是在这个状态完成的。在这个状态,OSPF路由器还可

以根据其中的一个路由器是否指定路由器或是根据链路是否点对点或虚拟链路来决定是否建立交互关系。

ExStart:启动状态,这个状态路由器之间的关系成为毗邻关系,路由器和它的邻居通过相互交换DD报文(该报

文称为空DD报文,它并不包含实际内容,只包含一些标志位),来决定路由器之间的主从关系,且具有最高

ID的路由将成为主设备,是唯一能够增加序号的路由器。

Exchange:交换状态,在这个状态,路由器向相邻的OSPF路由器发送DD报文来交换链路状态信息(主路由器先

发)。DD报文包含了出现在LSDB中的LSA条目头部信息,条目信息可以为一条链路(link)或者一个网络。从

这个状态起,OSPF进入Flooding状态。

Loading:在Loading状态,OSPF路由器会就其发现的相邻路由器的新的链路状态数据,发送LSR给相邻路由器。

相邻路由器收到LSR以后,一LSU作为应答,其中包含了LSR所需要的完整信息。路由器收到LSU后,发送

LSAck再次做出确认。

Full:这是两个OSPF路由器建立交互关系的最后一个状态,在这时,建立起交互关系的路由器之间已经完成了

数据库同步的工作,他们的链路状态数据库已经一致,这个状态称为“全毗邻状态”,每台路由器保存着

一张毗邻路由器列表称为“毗邻数据库”。两个OSPF路由数据库同步时所有链路状态路由协议的最大共

性。 在OSPF路由协议中,数据库同步关系仅仅在建立交互关系的路由器之间保持。

DR和BDR

点对点类型的网络只存在两个节点,所以不需要DR/BDR,它们彼此间完全相邻。在多路访问网络上,比如以太网,可能存在多个路由器。为了避免路由器之间建立完全相邻关系而引起的大量开销,OSPF要求在区域中选举一个DR,每个路由器都与之建立完全相邻关系。DR负责收集所有的链路状态信息,并发布给其他路由器。选举DR的同时也选举出一个BDR,在DR失效的时候BDR担负起DR的职责。一旦选完成,即使新加一个优先级更高的设备也不会进行重新的选择,只有在DR或者BDR出问题的时候才会发生重选。如果DR出问题,BDR会变成DR,然后进行BDR重选。如果BDR出问题,则进行BDR的重选。

以多路访问网络为例说明DR/BDR的选举过程:首先,OSPF路由器也是通过Hello数据报文来发现邻居,然后进入2-Way状态,在这个状态下选举DR和BDR。选举是利用Hello报文内的ID和Priority(优先权)字段值来确定。优先权值大小为0-255(默认值为1,0代表不参加选举),优先权值最高的路由器成为DR;如果优先权值大小一样,则ID最高的路由器选举为DR,优先权值次高的路由器成为BDR。优先权值和ID值都可以直接设置。然后,DR与BDR互换信息,并同时与本子网内其他路由器交换链路状态信息,之后就是形成统一的链路状态数据库,DR和BDR可保证网络上的其他路由器都有关于网络的相同链路状态信息。最终路由器根据统一的链路状态数据库通过SPF算法,形成路由表。

说明:先启动OSPF进程的路由器会等待一段时间,如果在这个时间内你没有启动其它路由的OSPF进程,第一台路由器就认为自己是DR,之后有路由器再加进来也不能再选举了。这个等待时间叫做Wait Timer计时器,Cisco规定的Wait Timer是40秒,这个时间内你启动的路由是参与选举的。在真实工作环境中,你在40秒内大概只能启动两台路由器,DR会在前两台启动的路由器中产生,工作一段时间后,存活时间最久的路由器最后可能成为DR。

注意:DR与BDR的选举仅存在于广播和非广播多路访问网络中,选举DR和BDR后,毗邻关系仅存在于路由器与其DR和BDR之间。即:(full状态能交换所有的数据包,2-way状态只能交换hello包)

DR和BDR之间是full;

DR和DRother之间是full;

BDR和DRother之间是full;

DRother之间是2-way。

DR和BDR的选举过程:

OSPF理论-LMLPHP

说明:动态路由协议OSPF、BGP在运行过程中需要为该协议指定一个Router ID,作为此路由器的唯一标识,并要求在整个自制系统内唯一。由于Router ID是一个32位的无符号整数,这一点与IP地址十分相像,而且IP地址是不会出现重复现象的,所以通常将路由器的Router ID指定为与该设备上的某个接口的地址相同。由于默认路由器的优先值为1,所以OSPF路由器在选举DR和BDR时,用最高IP地址作为路由器的ID来决定DR和BDR。在实际应用中,路由器的接口如果不稳定,那么这台路由器的ID也会随着不断变化,这样就影响了整个网络的稳定性。于是,通过设置一个回环接口,路由器一旦配置了回环接口,那么它将把这个接口的IP地址作为路由器的ID。loopback接口的地址通常指定为32位掩码,如210.83.130.1
255.255.255.255。

路由表的维护

当链路状态没有发生变化时,OSPF路由器周期性地产生与其相连的所有链路的状态信息。每个LSA都有个生存期,这个生存期的最大期限是1小时,事发路由器在发送LSA的时候会把LSA的生存期设为0,随着时间的推移,这个LSA的生存期到达1小时后就会被接收路由器从LSDB中删除。通常,路由器每30分钟就发送链路相关的LSU来刷新旧的LSA。每个LSA都有个序列号,一台路由器始发一个LSA,之后每产生一个LSA其序列号就加1,序列号是32位长,以0x80000001开头,0x7FFFFFFF结束。默认情况下,OSPF路由器还周期性地(在点到点和广播多路访问型网络中为10秒,点到多点和非广播多路访问型网络中为30秒)向邻居路由器发送一个Hello报文,如果一个路由器在Hello协议的Down机判定间隔时间(一般为Hello间隔时间的4倍)后还没收到邻居路由器的消息,那么它就会认为邻居出故障了。然后该路由器发送一个含有更新的链路状态信息的LSU,这个过程使用Flooding方式发送给网络中的其他路由器。

OSPF的Metric值:Cost=10^8/带宽(简便记做100Mb/带宽)。Metric值是由Cost值逐跳累加的。

Flooding在点到点和多路访问型网络中有所不同:

1.在一个点对点型网络中,使用多播地址224.0.0.5向邻居发送LSU;

2.在一个多路访问型网络中,DRothers使用多播地址224.0.0.6向DR和BDR发送更新数据包。当DR接收到该数据报

文并确认后,它使用多播地址224.0.0.5泛洪扩散更新的数据包到网络上的DRothers。

如果OSPF数据包被封装在以太网帧内,目的MAC组播地址分别为:0100.5E00.0005,0100.5E00.0006。

说明:OSPF的关键是通过Flooding方式发送LSA来实现数据库同步。

OSPF多区域中路由器可分为以下4种类型:

内部路由器:所有接口在同一区域的路由器,维护一个链路状态数据库。

主干路由器:连接到OSPF网络主干区域的路由器。也就是说,路由器至少有一个接口连接到区域0。

区域边界路由器(ABR):具有连接多区域接口的路由器,一般作为一个区域的出口。ABR为每一个所连接的区域

建立链路状态数据库,负责将所连接区域的路由摘要信息发送到主干区域,而主干区域,而主干区域上的

ABR则负责将这些信息发送到各个区域。生成LSA3。

自治域系统边界路由器(ASBR):连接不同AS的路由器,它可以引入外部路由。生成LSA5、LSA7。

说明:路由汇总可以减少LSA条目,可以使网络更稳定。区域间路由汇总必须在ABR上配置:area 1 range 1.1.4.0 255.255.252.0;外部路由汇总必须在ASBR上配置:summary-address 2.2.4.0 255.255.252.0。

OSPF的区域类型

标准区域:一个标准区域可以接收链路更新信息和路由总结,泛洪LSA1,LSA2,LSA3,LSA4,LSA5。

主干区域:主干区域是连接各个区域的中心实体。主干区域始终是“区域 0”,所有其他的区域都要连接到这

个区域上交换路由信息。主干区域拥有标准区域的所有性质,泛洪LSA1,LSA2,LSA3,LSA4,LSA5。

末梢区域/末节区域:末梢区域是不接受自治系统以外的路由信息的区域。如果需要自治系统以外的路由,它

使用默认路由0.0.0.0,泛洪LSA1、LSA2、LSA3。

完全末梢区域:不接收外部自治系统的路由及自治系统内其他区域的路由总结。需要发送到区域外的报文则使

用默认路由0.0.0.0,泛洪LSA1、LSA2、(LSA3 default)。

非纯末梢区域(NSSA):类似于末梢区域,但是允许接收以LSA7发送的外部路由信息,并且把LSA7转成LSA5。

泛洪LSA1、LSA2、LSA3、LSA7、(LSA7 default)。

完非纯全末梢区域:类似于末梢区域,但是允许接收以LSA7发送的外部路由信息,并且把LSA7转成LSA5。泛

洪LSA1、LSA2、LSA7、(LSA3 default)。

OSPF支持的网络类型

根据路由器连接的物理网络不同,OSPF将网络划分为4种类型:

BMA(广播多路访问型 Broadcast MultiAccess):如Ethernet、Token Ring和FDDI等,需要选举DR/BDR。

NBMA(非广播多路访问型 None Broadcast MultiAccess):如Frame Relay、X.25和SMDS等,多为全网状,

所有接口属于同一子网,因为非共享介质,需要手动指定邻居,需要选举DR/BDR。

P-to-P(点到点型 Point-to-Point):如PPP、HDLC。

P-to-MP(点到多点型 Ponit-to-MultiPoint):部分网状或星型网络拓扑,所有接口属于同一子网,不需要

选举DR/BDR,邻居可以动态发现。

虚电路:虚电路的网络类型是点到点型。

OSPF的LSA类型 R1#show ip ospf database   //查看链路状态数据库

OSPF理论-LMLPHPLS1
路由器LSA(Router LSA):R1#show ip ospf database router

域内路由,仅在本区域内传播,不会穿越ABR;每台路由器都会产生;包含本路由器的直连的邻居,以及直连网络的信息。一个边界路由器可能产生多个LSA类型1,路由表中用O表示。

Link ID:Router ID     Advertising Router:Router ID

OSPF理论-LMLPHP
 LS age:489 //LSA的年龄,即LSA从生成到查看此LSA时所经过的时间,以秒为单位。

Options:(No TOS-capability,DC) //用于通知对端到端是否具有处理按需拨号链路的功能。

LS Type:Router Lins //标识LSA类型,这里是Router Links类型,即类型1LSA,用来描述路由器周围的链

路状态。

Link State ID:10.10.2.1 //标识LSA所描述的网络环境,其取值和LSA的类型有关,在Router Links类型的

LSA中,取值为发出此LSA的路由器的Router ID。

Advertising Router:10.10.2.1 //始发此LSA的路由器的Router ID。

LS Seq Number:80000002 //LSA的序列号,用于检测旧的或者重复的LSA。

Checksum:0x7B29 //除LS age字段以外的整个LSA的校验和。

Length:36 //LSA的长度,包括20个字节的LSA报头部分。

Area Border Router //描述路由器类型

Number of Links:1 //表示有1条链路状态信息

------以上为LSA的报头信息------

Link connected to:a Transit Network //表示路由器周围存在的链路类型,这里是Transit Network。一台OSPF路由器周围可能存在的链路状态分为以下4类,到另一台路由器的点对点的连接(Router);连接到transit网络(如以太网);连接到stub网络(StubNet);虚连接(Virtual Link)。

(Link ID)Designated Router address:210.83.131.1 //Link ID用于标识周围存在的链路,取值和连接的链路类型有关。如果是到另一台路由器的点对点连接,取值为邻居路由器的Router ID;如果连接到transit网络,其取值为DR的IP地址。这里连的是Transit Network,所以取值为DR的IP地址。如果连接到stub网络,取值为相应子网的网络地址。如果是虚连接,取值是邻居路由器的Router ID。

(Link Data)Router Interface address:210.83.131.2 //Link Data取值和连接的链路类型有关,如果是到另一台路由器的点对点的连接或连接transit网络(如以太网),取值为与对端直连的接口IP;如果连接到stub网络(StubNet),取值是相应子网的子网掩码(子网网络地址在Link ID中表示)。

TOS 0 Metrics:10 //引入外部路由的花费值。

TOS:服务类型,该数据包所需要提供的服务,即最小时延、最大吞吐量、最高可靠性、最小费用等。OSPF和IS-IS都能根据这些字段值进行路由决策。

LSA2 网络LSA(Network LSA):R1#show ip ospf database network

仅在本区域内传播;只有BMA网络才会产生LSA2,由DR发出;标识出BMA网络中有哪些路由器以及本网的掩码信息。路由表中用O表示。

Link ID:DR的接口IP     Advertising Router:DR的Router ID

LSA3 网络汇总LSA(Network Summary LSA):R1#show ip ospf database summary

汇总链路域间路由,能泛洪到整个AS;由ABR产生并发出,穿越一个ABR其Advertising Router就会变成此ABR的RID;包含本区域中的所有路由信息,包括网络号和掩码。路由表中用IA表示。

Link ID:路由(网络号)     Advertising Router:ABR的RID(经过一个ABR,就会变为这个ABR的RID)

LSA4 ASBR汇总LSA(ASBR Summary LSA):R1#show ip ospf database asbr-summary

把ASBR的RID传播到其它区域,让其它区域的路由器得知ASBR的位置;由ABR产生并发出,穿越一个ABR其Advertising Router就会变成此ABR的RID。在ASBR直连的区域内不会产生LAS4,因为ASBR会发出LSA1,其中会指明自己是ASBR。与类型3的区别在于类型4描述到OSPF网络的外部路由,而类型3描述区域内路由,这些链路信息不被扩散到完全末梢区域,路由表中用IA表示。

Link ID:ASBR的RID     Advertising Router:ABR的RID(经过一个ABR,就会变为这个ABR的RID)

LSA5 自治系统外部LSA(Autonomous system external LSA):R1#show ip ospf database external

域外路由,不属于某个区域;由ASBR产生并泛洪到整个AS,不会改变Advertising Router;包含域外的路由信息。除了末梢区域、完全末梢区域和次节末梢区域外,LSA5在整个AS中发送,路由表中用E1或E2表示。

Link ID:路由(网络号)     Advertising Router:ASBR的RID(不改变)

metric-type:OSPF引入外部路由时,其路由器需要计算到达外部路由的花费。metric-type分为type1和type2,默认为type2。type1,计算的花费值就是到达ASBR的花费+LSA所携带的metric值,即度量值=数据报文所经过的各内部链路成本+被分配的外部路径成本(type2的度量值);type2,计算的花费就是LSA所携带的metric值,即度量值=被分配的外部路径成本。所以type1优于type2,推荐使用type1。

LSA6 组成员LSA(Group membership LSA):多播OSPF(MOSPF),MOSPF可以让路由器利用链路状态数据库的信息构造用于多播报文的多播发布树,目前不支持。

LSA7 NSSA外部LSA(NSSA External LSA):R1#show ip ospf database nssa-external

特殊的域外路由,只存在于NSSA区域中;由一个连接NSSA的ASBR产生的关于NSSA的信息,在NSSA内扩散,并且可以被ABR转换为LSA5。路由表中用N1或N2表示。

Link ID:路由(网络号)     Advertising Router:ASBR的RID(只在NSSA区域中)

LSA8 BGP的外部属性LSA(External attributes LSA for BGP)

LSA9 不透明LSA(本地链路范围) (opaque LSA):目前主要用于MPLS多协议标签交换协议

LSA10 不透明LSA(本地区域范围) (opaque LSA):目前主要用于MPLS多协议标签交换协议。

LSA11 不透明LSA(AS范围) (opaque LSA):目前主要用于MPLS多协议标签交换协议。

说明:重发布进OSPF的路由默认为E2,Cost=20,且传递中不改变Cost值。如果改为E1,则在传递过程中会累加每个入接口的Cost值。

总结:

OSPF理论-LMLPHP

路由器收到LSA后的处理过程

1.如果有该LSA信息,查看序列号;如果序列号相同,忽略这条LSA;如果序列号大于本地的序列号,将其加到数

据库,并进行SPF,更新路由表;如果序列号小于本地的序列号,将一个包含自己的LSA新信息发送给发送方。

2.如果数据库没有该LSA信息,将其加到数据库表,并发送一个ACK返回,并运行SPF,更新路由表。

OSPF里的几个特殊区域(stub、Totally stubby、NSSA、Totally NSSA)

首先:不论什么特殊区域,其区域内的所有路由器都要设置成对应的末梢区域,否则邻居down,因为配置末梢区域的路由器上所有接口发出的Hello包中都会有末梢标签。其次:对于所有末梢区域,ABR总是过滤掉LSA5。Totally区域里ABR还将LSA3过滤掉,普通stub区域和NSSA区域会正常通行LSA3。

stub area

命令:区域内所有路由器上配置 R1(config-router)#area area_id stub

要求:不是主干区域,本区域只有一个出口,无ASBR(除了ABR可能是ASBR),无虚链路经过,最好只有一个ABR

(多个ABR可能导致次优路由)。

优点:减小拓扑表和路由表的大小。

特点:泛洪LSA1、LSA2、LSA3。没有O E1、O E2、O N1、O N2类型的路由条目,ABR会自动向本区域发送一条指向

自己的默认路由(O * IA)。如有需要可以在ABR上汇总一下本区域内的路由。

说明:当使用area 0 stub命令时,返回OSPF:backbone can not be configured as a stub area.说明Area 0不可配置为末梢区域。

Totally stubby area

命令:区域内所有路由器上配置 R1(config-router)#area area_id stub;

ABR上再配置 R1(config-router)#area area_id stub no-summary

要求:不是主干区域,本区域只有一个出口,无ASBR(除了ABR可能是ASBR),无虚链路经过,最好只有一个ABR

(多个ABR可能导致次优路由)。

优点:比stub更进一步减小拓扑表和路由表的大小。

特点:泛洪LSA1、LSA2。没有O E1、O E2、O N1、O N2、O IA类型的路由条目(除了O * IA)。ABR会自动向区域

内发送一条指向自己的默认路由。

末梢区域与完全末梢区域的区别:末梢区域允许AS外部的路由进入,而完全末梢区域却不可以。也就是说完全末梢区域只是比末梢区域多隔离了LSA3,其它还是一样的。

说明:只有Cisco支持完全末梢区域,其他产品不支持。

NSSA

命令:区域内所有路由器上配置 R1(config-router)#area area_id nssa

要求:不是主干区域,无虚链路经过,最好只有一个ABR(多个ABR可能导致次优路由)。

优点:和stub一样减小拓扑表和路由表的大小,还具备灵活性,ASBR可以接收外部路由。

特点:泛洪LSA1、LSA2、LSA3、LSA7。有所有类型的路由条目。即阻止LSA5发送进来的外部路由,但允许接收以

LSA7发送进来的外部路由信息,并且ABR要负责把LSA7转换为LSA5。

说明:由于自身可以将外部网络的路由重发布进OSPF进程,所以ABR不会自动向NSSA区域发送一条指向自己的默认路由。但可以手工在ABR上配置,向NSSA区域内发送默认路由,配置后会在ABR上产生一条LSA7的默认路由。

R1(config-router)#default-information originate [always]。

Totally NSSA

命令:区域内所有路由器上配置 R1(config-router)#area area_id nssa;

ABR上再配置 R1(config-router)#area area_id nssa no-summary

要求:不是主干区域,无虚链路经过,最好只有一个ABR(多个ABR可能导致次优路由)。

优点:比NSSA更进一步减小拓扑表和路由表的大小。

特点:泛洪LSA1、LSA2、LSA7。没有O E1、O E2、O IA类型的路由条目(除了O * IA)。ABR会过滤掉AS外部的路

由LSA5和其他区域的路由LSA3进入本区域,但ASBR可以将外部路由LSA7从发布进本区域。由于没有去往

其它区域的路由,ABR会自动向区域内发送一条指向自己的默认路由。

非纯末梢区域与完全非纯末梢区域的区别:非纯末梢区域允许其它区域的路由进入,而完全非纯末梢区域却不可以。但完全非纯末梢区域的ABR会自动向本区域内发送一条指向自己的默认路由。

OSPF理论-LMLPHP
 虚链路

虚链路是对于不连续区域提供到主干区域的逻辑连续。所有OSPF区域必须和主干区域直接相连,来交换区域间路由信息,但是有些区域无法与主干直接相连,可以通过虚连接来实现这些区域和主干区域的连接。如果配置了虚链路,应该仅仅把它用来作为修复无法避免的网络拓扑问题的临时手段,不能作为主要解决方法。虚链路可以看作是一个标明OSPF域的某个部分是否需要重新设计的标志,要消除虚链路就要重新设计OSPF域的某个部分。值得注意的是虚电路传送的LSA为DNA,时间抑制、永不老化。

命令:R1(config-router)#area area_id virtual router_id   //router_id为对端ABR的RID

说明:虚电路的Metric等同于所经过的全部链路开销之和。

孤立区域的解决方法:

虚电路(虚电路穿过的区域一定是标准区域,标准区域一定是全路由的);

隧道(如果中间间隔区域为末梢区域,只能用隧道解决);

多进程再发布。

配置虚链路的目的:

通过一个非主干区域连接一个非主干区域到主干区域;

通过一个非主干区域连接两个分开的主干区域部分。

配置虚链路规则:

虚链路必须配置在要穿过区域的两台ABR之间;

虚链路所经过的区域作为传送区域(Transit Area),必须拥有完整的路由信息,即不能是末梢区域。

配置虚链路的弊端:

建立虚链路使得连接虚链路的区域和Area 0之间的信息交换都要通过虚链路进行,要占用大量带宽;

建立虚链路后,在虚链路通过的区域中做策略时很容易出现问题,造成网络不通;

虚链路通过的区域有很多限制,例如不能使用存根区域等。

说明:虚链路必须连接Area 0,Area 0不能配置为末梢区域,所以在OSPF末梢区域中不能设置虚链路。当使用虚链路配置在一个末梢区域Area 1时,返回:area 1 is a stub or nssa so virtual link is are not allowed.因为虚链路传输的LSA类型和标准区域是一样的,假如在末梢区域配置虚链路,某些LSA就不能传输,所以不能配置虚链路。

OSPF报文

OSPF报头:

OSPF Version,版本:OSPF的版本号。

Message Type,类型:OSPF数据包类型。

Packet Length,数据包长度:OSPF数据包的长度,包括数据包头部的长度。

Source OSPF Router,路由器ID:,始发路由器的ID。

Area ID,区域ID:数据包的始发区域。

Packet Checksum,校验和:对整个数据包的标准IP校验和。

Auth Type,认证类型:认证模式,“0”表示不认证、“1”表示明文认证、“2”表示MD5认证。

Auth Date,身份认证:数据包认证的必要信息。

说明:OSPF在IP层上传输,协议号89,每个OSPF报文都有一个相同的OSPF头部,然后是不同类型的OSPF报文。

Hello报文:通过多播地址224.0.0.5周期性地发送,来发现和维护邻接关系。


Network Mask,网络掩码:发送Hello报文接口的子网掩码。

Hello Interval,Hello间隔:发送方路由器连续两次发送Hello数据包之间的秒数。

Options,可选项:表明本路由器支持哪些功能。

Router Priority,路由器优先级:选举DR/DR时使用,是一串8位长的数字,默认值为1。

Router Dead Interval,路由器Dead间隔:宣告邻居路由器无效之前等待的最长时间。4倍于Hello报文间

隔,邻居之间的这些计时器必须设置一样。

Designated Router/Backup Designated Router,DR/BDR:DR/BDR的RID(如果有的话)。

Active Neighbor,邻居列表:列出相邻OSPF路由器的RID。

Hello报文发送间隔:在点到点和广播多路访问型网络中为10秒,点到多点和非广播多路访问型网络中为30秒。

Hello报文所包含的内容:

OSPF理论-LMLPHP
说明:“*”区域全部匹配才能建立邻居关系;邻居关系是full状态,而邻接关系是处于2-way状态。

Hello报文的处理过程:

DD报文 (Database Description,数据库描述):

只包含LSA头部信息,描述本路由器保存的LSDB。且只在初始化时产生,仅在形成邻接关系的路由器间传递。

空DD报文:

I=1:这是第一个DD报文。

M=1:后边还有DD报文,说明这不是最后一个DD报文。

MS=1:宣称自己是Master。 /MS=0:自己是Slave。

包含有LSA头部信息的DD报文:

包含发送方路由器的链路状态数据库的简略列表,接收方路由器使用本数据包与其本地链路状态数据库对比。

OSPF理论-LMLPHP
说明:DD报文有两种,一种是空DD报文,用来确定Master/Slave关系(避免DD报文的无序发送)。另一种是包含有LSA头部信息的DD报文(确定M/S关系后,才发送有路由信息的DD报文),收到有路由信息的DD报文后,比较自己的数据库,发现对方的数据库中有自己需要的数据,则向对方发送LSR报文,请求对方给自己发送数据。

LSR报文 (Link-State Request,链路状态请求):

向邻居请求DD数据包中的或者本地已经过时的部分或全部LSA。

OSPF理论-LMLPHP

LSU报文 (Link-State Update,链路状态更新):

向邻居发送其请求或更新的LSA。LSU包含7种类型的LSA。

LSAck报文 (Link-State Acknowledgement,链路状态确认):

收到邻居发送的LSA后发送的确认报文。

05-23 15:47