(一)、ospf优点

适应范围广——支持各种规模的网络,最多可支持一千台左右路由器。

触发更新——在网络的拓扑结构发生变化后立即发送更新报文。

无自环——由于OSPF根据收集到的链路状态用最短路径树算法计算路由,从算法本身保证了不会生成自环路由。

区域划分——允许自治系统的网络被划分成区域来管理,区域间传送的路由信息被进一步抽象,从而减少了占用的网络带宽。

等价路由——支持到同一目的地址的多条等价路由。

路由分级——使用4类不同的路由,按优先顺序来说分别是:区域内路由、区域间路由、第一类外部路由、第二类外部路由。

组播发送——以组播地址224.0.0.5和224.0.0.6发送协议报文。

(二)、ospf原理

1、OSPF报文
1)Hello报文:

      最常用的一种报文,周期性的发送给邻居路由器用来维持邻居关系以及DR/BDR的选举,内容包括一些定时器的数值、DR、BDR以及自己已知的邻居。周期默认是10秒,路由器经过4个hello周期的时间没有接收到邻居的hello报文会认为对方不可达。

2)DBD报文:

      两台路由器进行数据库同步时,用DBD报文来描述自己的LSDB,内容包括LSDB中每一条LSA的摘要。这样对端路由器就可以判断出是否已有这条LSA。

3)LSR报文:

      两台路由器互相交换过DBD报文之后,知道本地的LSDB所缺少的,这时需要发送LSR报文向对方请求所需的LSA。内容包括所需要的LSA的摘要。

4)LSU报文:发送LSA的详细信息(OSPF的5种报文中,仅LSU包含LSA的详细内容)
5)LSAck报文:用于确认LSU

2、SPF算法

所有运行OSPF的路由器利用hello报文,发送至224.0.0.5

OSPF邻居建立状态机
Down----Init----2Way----ExStart----ExChange------Loading----Full

在ExStart阶段,ospf邻居双方需要协商出一个Master和Slave,Slave和Master互发送DBD报文,两台路由器互相交换过DBD报文之后,知道本地的LSDB所缺少的,这时需要发送LSR报文向对方请求所需的LSA。两路由器会向对方发送LSU报文,接收到LSU报文的路由器会向对方发送一条确认LSAck报文。从而达到路由器的链路状态数据库达到同步。

每个路由器周期性地发送LSA,提供其邻接点的信息或当其状态改变时通知其它路由器。通过对已建立的邻接关系和链接状态进行比较,失效的路由器可以很快被检测出来,网络拓扑相应地更动。从LSA生成的拓扑数据库中,每个路由器计算最短路径树,以自己为根。这个最短路径树就生成了路由表。

        在广播网和NBMA网络中,任意两台路由器之间都要交换路由信息。如果网络中有n台路由器,则需要建立n(n-1)/2个邻接关系。这使得任何一台路由器的路由变化都会导致多次传递,浪费了带宽资源。为解决这一问题,OSPF协议定义了指定路由器DR(Designated Router),所有路由器都只将信息发送给DR,由DR将网络链路状态发送出去。

如果DR由于某种故障而失效,则网络中的路由器必须重新选举DR,再与新的DR同步。这需要较长的时间,在这段时间内,路由的计算是不正确的。为了能够缩短这个过程,OSPF提出了BDR(Backup Designated Router,备份指定路由器)的概念。

BDR实际上是对DR的一个备份,在选举DR的同时也选举出BDR,BDR也和本网段内的所有路由器建立邻接关系并交换路由信息。当DR失效后,BDR会立即成为DR。由于不需要重新选举,并且邻接关系事先已建立,所以这个过程是非常短暂的。当然这时还需要再重新选举出一个新的BDR,虽然一样需要较长的时间,但并不会影响路由的计算。

运行OSPF进程的网络中,既不是DR也不是BDR的路由器为DR Other。DR Other

仅与DR和BDR之间建立邻接关系,DR Other之间不交换任何路由信息。这样就减少了广播网和NBMA网络上各路由器之间邻接关系的数量,同时减少网络流量,节约了带宽资源。

      在完成以上这些步骤以后每个路由器都会维持OSPF的三张表邻居表、链路状态数据库和路由表

大致过程可以说成:先建立邻居表,从邻居那里学到链路状态数据库,最后根据数据链路数据库计算出路由表。

3. 路由器的类型(以下的内容和区域有关)

OSPF路由器根据在AS中的不同位置,可以分为以下四类:

(1) 区域内路由器

该类路由器的所有接口都属于同一个OSPF区域。

(2) 区域边界路由器ABR

该类路由器同时属于两个以上的区域,但其中一个必须是骨干区域area 0。ABR用来连接骨干区域和非骨干区域。

(3) 骨干路由器

该类路由器至少有一个接口属于骨干区域。因此,所有的ABR和位于Area0的内部路由器都是骨干路由器。

(4) 自治系统边界路由器ASBR

与其他路由协议区域交换路由信息的路由器称为ASBR。ASBR并不一定位于AS的边界,它有可能是区域内路由器,也有可能是ABR。

LSA类型:

1.Router  LSA  存在本区域 作用:每个区域内的每个路由器都会产生。告诉本区域其它路由器本身的信息

2.Network LSA  存在本区域 作用: DR产生,告诉本区域其它路由器DR的信息(怎么到达DR)

3.Network Summary(摘要) LSA     作用:由ABR(区域边界路由器)产生,用来把本区域的信息传播到其它常规区域中去

4.ASBR(自主系统边界路由器)  Summary(摘要)LSA          作用 :由ABR(区域边界路由器)产生,告诉其它常规区域的路由器如何到达我本区域的ASBR(自主系统边界路由器),当本区域的ASBR  Summary  LSA  到达其它区域的ABR(区域边界路由器)时,会由这个ABR重新生成ASBR  Summary  LSA

5.AS  external(外部)  LSA        作用:用来宣告OSPF路由域外部的网络信息(告诉其它路由器如何到达外部使用其它路由协议的网络),由ASBR产生,在整个OSPF路由域中洪泛          

OSPF的路由分类:
    区域内部路由:一个路由器根据自己所属区域的LSDB,利用SPF算法计算路由
    区域间路由:由ABR通告的,利用DV算法在区域间交换路由信息

     外部路由:ASBR上重分发而来的,无法保证路由无环。

OSPF区域

1. 区域划分

随着网络规模日益扩大,当一个大型网络中的路由器都运行OSPF路由协议时,路由器数量的增多会导致LSDB非常庞大,占用大量的存储空间,并使得运行SPF算法的复杂度增加,导致CPU负担很重。

在网络规模增大之后,拓扑结构发生变化的概率也增大,网络会经常处于“振荡”之中,造成网络中会有大量的OSPF协议报文在传递,降低了网络的带宽利用率。更为严重的是,每一次变化都会导致网络中所有的路由器重新进行路由计算。

OSPF协议通过将自治系统划分成不同的区域(Area)来解决上述问题。区域是从逻辑上将路由器划分为不同的组,每个组用区域号(Area ID)来标识

2. 骨干区域与虚连接

(1) 骨干区域(Backbone Area)

OSPF划分区域之后,并非所有的区域都是平等的关系。其中有一个区域是与众不同的,它的区域号(Area ID)是0,通常被称为骨干区域。骨干区域负责区域之间的路由,非骨干区域之间的路由信息必须通过骨干区域来转发。对此,OSPF有两个规定:

所有非骨干区域必须与骨干区域保持连通;

骨干区域自身也必须保持连通。

但在实际应用中,可能会因为各方面条件的限制,无法满足这个要求。这时可以通过配置OSPF虚连接(Virtual Link)予以解决。

(2) 虚连接(Virtual Link)

虚连接是指在两台ABR之间通过一个非骨干区域而建立的一条逻辑上的连接通道。它的两端必须是ABR,而且必须在两端同时配置方可生效。为虚连接两端提供一条非骨干区域内部路由的区域称为传输区(Transit Area)。

3. Stub区域

Stub区域是一些特定的区域,Stub区域的ABR不允许注入Type5 LSA,在这些区域中路由器的路由表规模以及路由信息传递的数量都会大大减少。

为了进一步减少Stub区域中路由器的路由表规模以及路由信息传递的数量,可以将该区域配置为Totally Stub(完全Stub)区域,该区域的ABR不会将区域间的路由信息和外部路由信息传递到本区域。

(Totally)Stub区域是一种可选的配置属性,但并不是每个区域都符合配置的条件。通常来说,(Totally)Stub区域位于自治系统的边界。

为保证到本自治系统的其他区域或者自治系统外的路由依旧可达,该区域的ABR将生成一条缺省路由,并发布给本区域中的其他非ABR路由器

OSPF区域设计的原则(多区域)
1)必须存在骨干区域(区域0)
2)所有的普通区域必须和骨干区域相邻(物理相邻、逻辑相邻)
3)骨干区域本身必须连通(也可以通过配置逻辑连接使骨干区域连通)

一个区域200~300台左右  通过ABR(区域边界路由器)来通告其他区域的路由。 ABR上拥有多个区域的LSDB,计算出多个区域的区域内部路由

(三)、实验案例

1、实验要完成的功能
1)、末节区域

2)、完全末节区域

3)、虚拟链路

4)、ip地址手动汇聚

5)、默认路由重发布

2、实验拓扑

ospf

3、路由器上的配置

R1

interface Loopback1

ip address 192.168.1.1 255.255.255.0 secondary

ip address 192.168.2.1 255.255.255.0 secondary

ip address 192.168.3.1 255.255.255.0 secondary

ip address 192.168.4.1 255.255.255.0 secondary

ip address 192.168.5.1 255.255.255.0 secondary

ip address 192.168.6.1 255.255.255.0 secondary

ip address 192.168.7.1 255.255.255.0

interface Serial1/2

ip address 192.168.8.1 255.255.255.252

router ospf 100

network 192.168.1.0 0.0.0.255 area 1

network 192.168.2.0 0.0.0.255 area 1

network 192.168.3.0 0.0.0.255 area 1

network 192.168.4.0 0.0.0.255 area 1

network 192.168.5.0 0.0.0.255 area 1

R2

interface Loopback1

ip address 192.168.11.1 255.255.255.0

!

interface FastEthernet0/0

ip address 192.168.12.5 255.255.255.0

!

interface Serial1/2

ip address 192.168.8.5 255.255.255.252

!

interface Serial1/3

ip address 192.168.8.2 255.255.255.252

router ospf 100

log-adjacency-changes

area 1 range 192.168.0.0 255.255.255.224

area 1 range 192.168.0.0 255.255.248.0

area 2 virtual-link 192.168.8.13       建立虚链路

redistribute connected metric 1000   发布直连路由

redistribute static    发布静态路由

redistribute rip        发布rip区域的路由

network 192.168.0.0 0.0.7.255 area 1

network 192.168.8.0 0.0.0.3 area 1

network 192.168.8.4 0.0.0.3 area 2

network 192.168.11.0 0.0.0.255 area 0

!

router rip

version 2

network 192.168.12.0

default-information originate   发布默认路由

no auto-summary

R3

interface Serial1/2

ip address 192.168.8.9 255.255.255.252

interface Serial1/3

ip address 192.168.8.6 255.255.255.252

router ospf 100

network 192.168.8.4 0.0.0.3 area 2

network 192.168.8.8 0.0.0.3 area 2

R4

interface Serial1/2

ip address 192.168.8.13 255.255.255.252

interface Serial1/3

ip address 192.168.8.10 255.255.255.252

router ospf 100

log-adjacency-changes

area 2 virtual-link 192.168.8.17

area 3 stub no-summary         建立完全末节区域

network 192.168.8.8 0.0.0.3 area 2

network 192.168.8.12 0.0.0.3 area 3

R5

interface Serial1/3

ip address 192.168.8.14 255.255.255.252

router ospf 100

area 3 stub

network 192.168.8.12 0.0.0.3 area 3

network 192.168.9.0 0.0.0.255 area 3

R6

interface FastEthernet0/0

ip address 192.168.12.2 255.255.255.0

interface Serial1/2

ip address 192.168.8.21 255.255.255.252

router rip

version 2

network 192.168.8.0

network 192.168.12.0

no auto-summary

R7

interface Loopback1

ip address 192.168.10.1 255.255.255.0

interface Serial1/3

ip address 192.168.8.22 255.255.255.0

router rip

version 2

network 192.168.8.0

network 192.168.10.0

no auto-summary