OSPF(Open Shortest Path First) 开放最短路由优先路由协议

OSPF是一种基于链路状态的,支持无路由,当网络拓扑发生变化时发送组播的路由协议,与EIGRP一样,支持多条到同一个目标网络的等成本路由

OSPF用Hello包来建立邻居关系,用组播224.0.0.5来向外发送Hello分组,在点到点和广播网络中间隔时间为10s,在其他网络中间隔时间为30s

Hello包交换如下信息:

RID;

Hello间隔和失效间隔;

邻居列表,邻居的定义为属于同一个子网,且使用的Mask相同

区域ID;

路由器优先级(8位);

DR和BDR的IP地址;

身份验证信息(若配置了);


邻接路由器要建立邻居关系需要满足如下条件:

1)区域ID一样

2)子网一样

3)Hello定时器和失效定时器时间设定一样

4)身份验证方法一致(如果配置了)

在广播多路访问网络时,OSPF路由器只与DR和BDR建立邻居关系

ps:不同厂商的路由器的话,成本cost需要配置一样


在链路是点到点的,只要正确配置了Hello分组包含的信息就建立邻居关系

变成邻居的微观过程:

整个过程可能有8种关系状态:

0)ATTEMPT:表示需要手动指定邻居,网络是NBMA网络

1)DOWN:表示未收到 Hello分组,不代表接口处与down状态

2)INIT:表示已收到对方的Hello分组,但分组的“邻居列表”字段中没有自己的ID,还未建立双向通信

3)双向Two-way:表示处于双向状态,如果网络是广播多路访问的网络,开始选举DR和BDR

4)预启动Exstart:DR和BDR已和其他路由器建立了邻居关系,在交换DBD分组后,将进入交换状态

5)交换Exchange:这个状态,使用数据库描述DBD或DD来交换路由选择信息,还可能发送链路状态请求(LSR)和链路状态更新LSU,开始发送LSR后就进入加载状态

6)加载Loading: 加载状态时,向邻居发送LSR分组,请求对方发送在上一个环节(交换状态期间)遗漏或受损的LSA,邻居收到LSR后会用LSU来响应,然后等收到LSU后会发送LSAck来和邻居确认。路由器收到所有LSR的应答后,就进入完全邻接状态FULL

7)FULL:表示双方成为完全邻接状态,同步了所有LSA信息




建立邻居后,OSPF使用LSA泛洪来共享路由选择信息,通过发送LinkStateUpdate分组来共享包含链路状态数据的LSA信息

LSA可以分为5类

1类LSA:路由器链路通告(RLA)或者路由器LSA,由每台路由器向其所属区域的其他路由器发送。信息包含RID、接口、IP信息和接口的当前状态

2类LSA:网络链路通告(NLA),由DR生成的,用来发送网络中其它路由器的状态信息(代表其他路由器而发送),泛洪到当前区域的所有路由器,而不会转播到区域外部。信息包含DR和BDR的IP信息

3类LSA:汇总链路通告(SLA),由区域边界路由器(ABR) 生成的,ABR将3类LSA发送到它连接的其他区域,3类LSA通告区域内的所有网络并且会通告其他OSPF区域如何前往主干区域(区域0)的区域间路由。信息中包含发送信息的ABR的IP信息和RID

4类LSA:由ABR生成,ABR将4类LSA发送到它连接的其他区域,专用于告诉其他OSPF区域如何前往ASBR

5类LSA:外部链路通告,由ASBR发送,用于通告前往OSPF自主系统外部的路由,将传遍整个OSPF自主系统。每通告一个外部网络,ASBR都将生成一个5类LSA

1、2类在区域内部的路由器之间传播;

具体不同类别的LSA中的信息可以参考:

http://www.metopu.com/index.php/%e5%bc%80%e6%94%be%e5%bc%8f%e6%9c%80%e7%9f%ad%e8%b7%af%e5%be%84%e4%bc%98%e5%85%88%ef%bc%88ospf%ef%bc%89-3/



不同网络,泛洪地址不同:

1)点对点网络(HDLC、PPP),组播地址为224.0.0.5,AllSFPRouters接收该包,不选举DR和BDR

2)广播多路网络中(以太网、令牌环网、FDDI),路由信息是发送给224.0.0.6(所有的DR和BDR监听该地址),然后DR或BDR再发送给224.0.0.5,来通告所有SFPRouter们路由跟新的状况

3)非广播多路访问(NBMA),帧中继、X.25和异步传输模式(ATM)等网络 ,不具备广播的能力,因此邻居要人工来指定,在这样的网络上要选举DR和BDR,OSPF包采用单播(unicast)的方式,LSA以单播方式发送到DR BDR,并且DR以单播方式发送这些更新

4)点到多点网络 是NBMA网络的一个特殊配置,可以看成是点到点链路的集合. 在这样的网络上不选举DR和BDR

5)虚链接: OSPF包是以单播(unicast)的方式发送

DR和BDR选举,通过优先级和RID来决定

BDR会监视DR状态,再DR起故障时随时顶替其位置,但当原DR恢复时不会抢回其以前位置




配置方法:

R1(config)#router ospf 1

R1(config-router)#network 10.0.0.0  0.255.255.255 area 0

R1(config-router)#router-id 233.255.255.254 //设置RID

R1(config)#int loopback 0 //配置环回接口

R1(config-if)#ip address 172.31.1.1  255.255.255.255  /环回接口设置ip地址,这个地址重启后会成为RID

OSPF验证命令

sh ip ospf //查看路由器ID、区域信息、SPF统计信息以及LSA定时器信息

sh ip ospf database //显示数据库中的LSA摘要

sh ip protocols //核实OSPF进程ID以及在路由器上是否启用了OSPF

sh ip ospf interface //显示启用了OSPF的接口的OSPF相关信息

sh ip ospf neighbor //核实启用了OSPF的接口