OSPF,开放式最段路径优先(Open Shortest Patch First,OSPF 是由 Internet 工程组( IETF )开发的路由选择协议,使用的是 SPF 算法。作为链路状态路由协议,启用 OSPF 的路由器发送的是 LSA 而不是具体的路由信息。宣告 OSPF 的路由器从所有启动 OSPF 协议的接口上发出 HELLO 报文,如果两台路由器能够相互协商它们各自的 HELLO 报文中所指定的某些参数,那么他们就可以成为邻居。建立邻居的路由器有可能建立邻接关系,建立邻接关系的路由器之间会发送链路状态通告( LSA )。 OSPF 是靠 HELLO 报文来发现邻居的,同样也是靠 HELLO 报文来保持邻居,邻居之间交换的 HELLO 报文叫做 keepalive 报文,每隔 30 分钟发送一次更新。一台 OSPF 路由器使用一个路由器的 ID 号作为 OSPF 的标识, router Id 一般使用所有回环口中数值最高的 IP 地址作为 ID 号,如果路由器上没有配置回环口的话就会使用物理接口中最高的 IP 地址作为路由器的 ID 。同样也可以手工指定 ROUTER ID
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 
HELLO 报文不匹配的情况下, OSPF 是建立不起来邻居的,在 CISCO 路由器中,缺省的 HELLO 报文的时间是 10S 一次,在 NBMA 的情况下是 30 秒一次,注意跟 EIGRP 不同的是, OSPF 在小于 T1 的链路上同样是 10 秒发送一次更新,如果在无效时间间隔内还没收到来自邻居的 HELLO 报文,那么邻居将会被宣告无效, CISCO 路由器中,缺省的无效时间是 HELLO 时间的 4 倍。

 
OSPF定义了以下5种网络类型:

点到点网络,广播网络,非广播多路访问网络( NBMA ),点到多点广播,虚电路,点到多点非广播。在点到点的网络中,有效邻居总是可以形成邻接关系。点到点的网络,网络上的有效邻居总是形成邻接关系的。在这些网络上的 OSPF 报文的目的地址也总是保留的 D 类地址 224.0.0.5 。广播型网络,会选举出一个 DR 和一个 BDR ,所有的路由器会跟 DR BDR 建立邻接关系,相互之间并不建立邻接关系, DR BDR 使用组播地址 224.0.0.5 来发送 HELLO 报文,其他路由器将使用 224.0.0.6 来发送 HELLO 报文。非广播多路访问( NBMA )同样会选举 DR BDR ,不同的是, NBMA 是不支持广播的,所以是使用单播地址发送更新。点到多点的网络,可以看作一个点到点的网络的集合,使用组播地址发送更新。另外,除了以上的 5 种网络类型外,应该注意的是,所有的网络也都可以归纳到下面两种更普通的网络类型之:传送网络和末节网络。

传送网络:和两台或两台以上的路由器相连;

末梢网络:仅仅和一台路由器相连。

指定路由器和备份指定路由器( DR BDR ),在多路访问的网络上,为了避免网络上 LSA 泛洪的混乱, OSPF 会在多路访问的网络上选举一个 DR BDR ,所有的路由器将会与 DR BDR 建立邻接关系。 DR BDR 将会收集所有的 LSA 然后将 LSA 发送到网络中其余的路由器。而非 DR BDR 的路由器相互是不会发送 LSA 的。如果一个 DR 失效了 BDR 会成为 DR ,然后从新选出一个 BDR ,所以 DR BDR 之间也将相互形成邻接关系。 DR 的选举是通过接口上的优先级决定的,默认的情况下为 1 ,为 0 的时候代表不参与选举。如果一个网络上只有一台路由器成为了 DR 而没有 BDR 路由器的话,其他所有路由器只和这个 DR 路由器建立邻接关系。

在一个邻接关系的创建中, OSPF 将使用以下三种报文类型:

数据描述报文( DD 报文):数据库描述报文对于邻接关系的建立过程来说非常重要。正如它的名字所暗示的,该报文里面携带了始发路由器的链路状态数据库中的每一个 LSA 通告的一个简要描述。也就是里面包含了所有 LSA 的头部信息。

链路状态请求信息:如果本地路由器收到 DD 报文中发现有 LSA 通告不在它自己的链路状态数据库当中,或者邻居路由器有比已知 LSA 通告更新的拷贝,那么本地路由器将把这条 LSA 放入它的链路状态请求列表中去,随后路由器会发送一个链路状态请求报文去请求一个这些 LSA 的完成拷贝。

链路状态更新信息:回应请求信息,更新 LSA ,在更新报文中传送的 LSA 必须单独进行确认。路由器有显式确认和隐式确认两种确认方式。

OSPF 使用多个数据库和复杂的算法,所以它将耗费路由器更多的内存和更多的 CPU 处理。 OSPF 协议可以使用区域的概念来缩小这些不利的影响。路由器仅仅需要和它所在区域的其他路由器具有相同的链路状态数据库,而没有必要和整个互联网内的所有路由器共享相同的链路状态数据库。由于链路状态数据库只需要在一个区域内进行维护,大量的 LSA 泛洪也就被限制在一个区域里面了。主义由于骨干区域的任务就是汇总每个区域的网络拓扑陆游到其他所有区域。正是这个原因,所有的域间通信都必须通过骨干区域,非骨干区域不能直接交换数据包,所以所有的区域必须跟骨干区域连接。虚电路的存在就是为了解决临时的非层次化的设计把没跟骨干区域连接的区域虚拟的跟骨干区域连接。

 
OSPF认为路由器有下面几种类型:

内部路由器:所有接口都属于同一个区域的路由器;

区域边界路由器( ABR ):连接一个或者多个区域到骨干区域的路由器;

骨干路由器:至少有一个接口和骨干区域相连的路由器;

自主系统边界路由器:把 OSPF 外部的路由信息进入 OSPF 区域的网关路由器,引进重发布的路由条目。

OSPF 的几种 LSA

类型 1 :路由器 LSA ,每台路由器都会产生的 LSA ,列出了通告 LSA 的路由器所有的链路或者接口。

类型 2 :网络 LSA ,每一个多路访问的网络中 DR 将会产生网络 LSA 的通告,网络 LSA 跟路由器 LSA 只在区域内泛洪。

类型 3 :网络汇总 LSA ,由 ABR 始发, ABR 发送网络 LSA 到一个区域,用来通告该区域外部的目的地址。

类型 4 ASBR 汇总 LSA ,也就是由 ASBR 始发出的, ASBR 汇总 LSA 除了所通告的目的地址是一个 ASBR 路由器而不是一个网络外,其他的和网络汇总 LSA 都是一样的。

类型 5 AS 外部 LSA ,重发布到 OSPF 区域的 LSA

类型 6 :组成员 LSA 。使用在组播 OSPF 协议中, CISCO 路由器不支持。

类型 7 NSSA 外部 LSA ,是在非纯末节区域内始发与 ASBR 路由器的 LSA 通告。

类型 8 :外部属性 LSA CISCO 路由器不支持。

类型 9 10 11 OpaqueLSA 是一个被提议的 LSA 类别,由标准的 LSA 头部后面跟随特殊应用的信息组成。还没有发出出来。

 
OSPF的几种区域:

末节区域:一个学习到外部路由器信息的 ASBR 路由器将通过在整个 OSPF 自主系统中泛洪自主系统外部 LSA 来通告那些外部的目的路由信息。末节网络是一个不允许 AS 外部 LSA 通告在其内部进行泛洪的区域。也就是说阻止了类型 5 LSA

完全末节区域:具有末节区域的特性,另外还阻止了类型 3 和类型 4 LSA ,在完全末节区域的路由器将使用一条缺省路由到达这个区域的外部。

NSSA 区域:具有末节区域的特性,不同的是在 NSSA 内部允许类型 7 LSA 泛洪,从 NSSA 区域通过 ABR 看到的路由都会标记为 N2 的路由。

OSPF 是支持验证的,可以在 OSPF 中配置区域验证和接口验证,区域验证就是在每个接口上开启了验证,但是必须在接口上配置验证的关键字,否则就会是空验证, OSPF 验证支持 MD5 验证

 
OSPF的部分心得:
1 NSSA 区域的心得体会:

No-summary 参数:在 NSSA 区域中所有的区域间路由都被消除了,另外增加了一条标记为 IA 的缺省路由,使用了这个参数以后,这个 NSSA 区域就具有了与完全末节区域一样的特性,阻止了类型三和类型四的 LSA ,但是同时具有 NSSA 的特性,允许类型 7 LSA NSSA 区域内泛洪。

No-redistribution 参数:阻止了类型 7 LSA ,跟 no-summary 一样,通告一条标记为 IA 的类型三的缺省路由。

Default-information-originate 参数:使得 ABR 通告一条缺省路由到 NSSA 区域,不同的是,使用的是类型七的 LSA 通告这条缺省路由。

2OSPF OVER NBMA 体会:

OSPF OVER NBMA 实验:

TOP

R2 HUB 路由器, R1 R3 SPORK 路由器, R2 S0 口与 S1 S3 S0 之间都有一条 PVC

部分互联 PVC 支持广播:

方法一:

OSPF 启用后,在 S0 口上面用 ip ospf network 命令来让 OSPF 认为这个接口是一个点到多点的接口,在 R1,R2,R3 上面都这样配置,不用注意什么,这个是最简单的 OSPF OVER NBMA 的方法

方法二

在接口上配置 OSPF 认为的网络类型是广播,这样就要选 DR/BDR ,所以在 R2(HUB) 上面配置 OSPF 优先级为 10 ,然后在 R1,R3 上面配置优先级为 0 ,这样 R1,R3 就不会参与 DR/BDR 的选举,注意,选了 DR DR 会默认认为网络是全互连的,也就是说在 R1 上到 R3 回环口的路由的下一跳是 R3 S0 口,而 R1 并没有到 R3 PVC ,所以在 R1 R3 S0 口上必须要做一个 MAP ,地址是 R1,R3 对方 S0 口的地址,但是 DLCI 号还是到 R2 DLCI 号,这样 R1 R3 下面所连接的网络就可以相互访问了。

方法三

在接口上配置 OSPF 认为的网络类型是 NBMA ,这样的话也要选 DR ,所以关于配置还是跟方法二的一样,只是 NBMA 是不支持广播的,所以在网络中必须要指定邻居来用单播发送更新,所以在 OSPF 进程中需要用 neighbor 命令来指定邻居也就是单播地址,注意在 OSPF 中只需要在一边指定就可以了,也就是说,在这个题目里面,在 R2(HUB) 上面配置 neighbor 就可以了,目的地址指 R1,R3 S0 口的地址。

方法四:

R2 上面做两个点到点的子接口,然后在 R1 R3 上面让 OSPF 认为网络类型是点到点的,这样也就可以正常学习到路由了。

部分互连 PVC 不支持广播:

方法一:

在接口上配置 OSPF 认为的网络类型为 NBMA ,然后做的方法就跟支持广播的方法二是一样的。

方法二:

在接口上配置 OSPF 认为的网络类型是点到多点非广播,这样的话就需要在 R2 上面做两个子接口,然后在 R2 上面指 neighbor 对方地址为 R1,R3 SO 口地址,但是不需要在接口上配置优先级,因为点到多点的情况下是不选 DR BDR 的。

全互连 PVC 支持广播:

TOP :全互联: R1 R2 R3 都是用 S0 口全互联的 PVC

方法一:

跟部分互连方法一一样,只是配置上面 PVC 做全互联的。

方法二:

跟部分互连方法二基本一样,只是配置上面不需要 DLCI 号到 R2 ,目的地址为 R3S0 口的 PVC 了,只需要做全互联的 PVC 就可以了,自然因为全互连,可以选 DR BDR ,所以就不用在接口上设置优先级。

方法三:

跟部分互联配置方法基本一样,需要注意的也就是 PVC 做成全互联,这里也不用配优先级别,因为全互连可以选出 BDR 出来。注意指定邻居的时候这里就需要相互指定而不能只在 R2 上面指定了,因为是全互联的网络,

方法四

在每个路由器上做两个点到点的子接口,相互连接对方,然后启用 OSPF OSPF 会认为这个网络是一个点到点的网络类型,这样就从逻辑上把网络成了三段,并且路由器相互都可以转发数据。

全互联 PVC 不支持广播:

方法一:

OSPF 认为网络类型是 NBMA 的网络,然后指定邻居。

方法二:

OSPF 认为网络是点到多点非广播的网络,同样指定单播地址也就是指定邻居。方法一和方法二都不用注意什么,也不用设置优先级,因为网络是全互联的,相互都有可能形成邻接关系

方法三:

在每个路由器上面配置两个点到点的子接口,跟上面 PVC 支持广播的配置基本一样,不同的是这里需要指定单播地址,因为 PVC 是不支持广播的。

关于 OSPF 的配制命令参考 CISCO 文档 OSPF 部分 :

网页地址 :[url]http://www.cisco.com/univercd/cc/td/doc/product/software/ios122/122cgcr/fipr_c/ipcprt2/1cfospf.htm[/url]