一、OSPF协议
OSPF协议使用最短路径优先(SPF)算法,典型的链路状态路由协议;将网络划分为多个区域,并使单个区域内的每个路由器都维护同一个数据库,不同区域间不交换路由信息,区域间支持路由汇总;不需要定期更新、收敛速度快;支持变长子网掩码(VLSM)。
运行OSPF的路由器需要一个能够唯一标示自己的Router
ID。一台路由器如果要运行OSPF协议,就必须存在Router
ID。因为OSPF协议以Router ID识别邻居路由器。
如果没有配置ID号,系统会从当前接口的IP地址中自动选一个作为路由器的ID号。一般Router ID手动配置较好。
1.1、概述DR和BDR
DR,即指Designated Rouer,指派路由
比如,在一个以太网环境中这五台路由器之间希望交换同步路由信息,它们之间使用的是网状的逻辑拓扑。如下图所示:
图22-1
这时如果希望它们之间能够迅速同步,需要多条链路,这样维护成本是比较大的。我们可以在网络上选择一个路由器出来,让它来当"老大",然后规定其他的路由器如果希望与另一个路由器通讯,那么只要经过这个"老大"就可以了。所以如果我们把C当成"老大",则拓扑就变成了下面这样:
图22-2
这样所有的路由器之间通讯都通过C路由器,就减少了路由信息在网络上的洪泛。节约了网络带宽。那么这个路由器C就是咱们所说的DR,指派路由器(Designated
Rouer)。
那关键是如果有一天这个路由器C坏了,怎么办?
为了实现冗余,我们再来指定一个BDR(Backup
DR),如我们在这里再指定路由器D作为BDR,那么这个拓扑图又变了,如下图所示:
图22-3
网络上有这么多路由器,到底哪一个是DR,哪一个是BDR?
在OSPF中默认每10秒中发一次Hello报文!
里面就包含了Router
ID,如果40秒还没有收到的话,则宣称该邻居死亡。那么当选举DR/BDR的时候就先比较Hello包中的优先级(priority)优先级最高的为DR,次高的为BDR,但是默认优先级都为1,所以这个意义不大!那么在优先级相同的情况下就开始比较我们刚刚介绍的一个东西了Router
ID,RID值最高的为DR,次高的为BDR。
修改优先级可以使用命令: (config-if)#ip ospf cost 0-255 255最高
当你把优先级设置为0以后,该路由器就不能成为DR或者是BDR,只能是DROther。DROther只和DR/BDR形成邻接关系,所有的路由器将组播Hello包到地址224.0.0.5以便它们能跟踪其他邻居的信息,即DR将洪泛LSU到224.0.0.5这个组播地址上;DROther
只能能过组播地址224.0.0.6将LSU(链路状态更新)到所有的DR上。只有DR/BDR监听这个组播地址。
#定义使用OSPF路由协议
Router(config)#router ospf process-id
说明:其中这个进程ID,用于区分不同的OSPF协议,这只是一个本地进程ID,随便取,也就是说只是区分一个路由器上的多个OSPF协议,跟别的路由器没有关系可以不同。
#分配网络到特定的区域
Router(config-router)#network address mask area area-id
说明:注意这里区域号必须要求一样
1.2、具体配置实例
图22-4
上实验拓扑图为三台Cisco系统路由器。配置如下:
Router1上的配置:
Router>en
Router#conf t
Router(config)#hostname RA
RA(config)#interface s2/0
RA(config-if)#ip address 192.168.0.1
255.255.255.0
RA(config-if)#clock rate
64000
RA(config-if)#no shutdown
RA(config-if)#exit
RA(config)#interface fa 0/0
RA(config-if)#ip address 10.10.10.1
255.255.255.0
RA(config-if)#no shutdown
RA(config-if)#exit
RA(config)#router ospf 1
RA(config-router)#network 10.10.10.0 0.0.0.255 area 0
RA(config-router)#network 192.168.0.0 0.0.0.255 area 0
Router2的配置:
Router>enable
Router#conf t
Router(config)#hostname RB
RB(config)#interface s2/0
RB(config-if)#ip address 192.168.0.2
255.255.255.0
RB(config-if)#no shutdown
RB(config-if)#exit
RB(config)#interface s3/0
RB(config-if)#ip address 192.168.1.1
255.255.255.0
RB(config-if)#clock rate
64000
RB(config-if)#no shutdown
RB(config-if)#exit
RB(config)#router ospf 1
RB(config-router)#network 192.168.0.0 0.0.0.255 area 0
RB(config-router)#network 192.168.1.0 0.0.0.255 area 0
Router3的配置:
Router>en
Router#conf t
Enter configuration commands, one per
line. End with CNTL/Z.
Router(config)#interface
s2/0
Router(config-if)#ip address
192.168.1.2 255.255.255.0
Router(config-if)#no
shutdown
Router(config-if)#exit
Router(config)#interface fa
0/0
Router(config-if)#ip address
20.20.20.1 255.255.255.0
Router(config-if)#no
shutdown
Router(config-if)#exit
Router(config)#router ospf 1
Router(config-router)#network 192.168.1.0 0.0.0.255 area 0
Router(config-router)#network 20.20.20.0 0.0.0.255 area 0
Router(config-router)#exit
1.3、验证OSPF配置
show ip
protocols可以显示路由协议的配置情况
show ip
route可以显示当前的路由表,路由条目带有"O"标记的就是OSPF协议所生成的路由。
show ip route
ospf只显示由OSPF协议所生成的路由。
show ip ospf
interface核实接口是否已经被配置到目标区域了。
show ip
ospf能显示所执行过的SPF算法的次数
验证我们在PC2上去ping PC1
1.4、OSPF的网络类型
⑴广播型网络, 比如以太网,Token
Ring和FDDI,这样的网络上会选举一个DR和BDR,DR/BDR的发送的OSPF包的目标地址为224.0.0.5,运载这些OSPF包的帧的目标MAC地址为0100.5E00.0005;而除了DR/BDR以外的OSPF包的目标地址为224.0.0.6,这个地址叫AllDRouters。
⑵NBMA网络, 比如X.25,Frame
Relay,和ATM,不具备广播的能力,在这样的网络上要选举DR和BDR,因此邻居要人工来指定。
⑶点到多点网络,
是NBMA网络的一个特殊配置,可以看成是点到点链路的集合. 在这样的网络上不选举DR和BDR。
⑷点到点网络,
比如T1线路,是连接单独的一对路由器的网络,点到点网络上的有效邻居总是可以形成邻接关系的,在这种网络上,OSPF包的目标地址使用的是224.0.0.5,这个组播地址称为AllSPFRouters。
后续我们再举更多的例子。