今天给大家简单介绍一下如何在OSPF区域中划分成多个小区域,和划分小区域的必要性。
在大型网络中,使用OSPF路由协议经常遇到以下问题:
1.在大型网络中,网络结构的变化是时常发生的,因此OSPF路由器就会经常运行SPF算法来重新计算路由信息,大量消耗路由器的CPU和内存资源;
2.在OSPF网络中,随着多条路径的增加,路由表会变得越来越庞大,每一次路径的改变都使路由器不得不花大量的时间和资源去重新计算路由表,路由器会变得越来越低效;
3.包含完整网络结构信息的链路状态数据库也会变得越来越大,这将有可能使路由器的CPU和内存资源彻底耗尽,从而导致路由器的崩溃。
为了解决这个问题,OSPF允许把大型区域划分成多个小区域,这些小区域可以交换路由汇总信息,而不是每个路由器的详细信息;也更容易管理;OSPF的工作也会更加流畅。
生成OSPF多区域的原因
改善网络的可扩展性;
快速收敛。
想要达到上面两个要求的关键就是把网络分成更小的区域。比如
划分区域之后,每个OSPF区域中支持的最多路由器的个数30——200。但是一个区域中实际加入的路由器的数量要小于单个区域所能容纳路由器的最大数量。因为有很多原因影响,比如:一个区域内链路的数量、网络拓补稳定性、路由器的内存和CPU等等。
对于和区域相关的通信量定义了三种类型,如:
1.域内通信量:指由单个区域内的路由器之间交换的数据包构成的通信量;
2.域间通信量:指由不同区域的路由器之间交换的数据包构成的通信量;
3.外部通信量:指由OSPF区域内的路由器与OSPF区域外或两一个AS(自治系统)内的路由器之间交换的数据包构成的通信量。
OSPF被分为多区域的能力是依照分层路由实现的。当划分成小区域以后,像重新计算拓补数据库这样的操作就被限定在该小区域内,区域间则只需通告一些汇总信息。
分层路由的优势:
1.降低了SPF运算的频率;
2.减小了路由表;
3.减小了链路状态更新报文(LSU)的流量。
如图:路由器也像通信量一样可以分成和区域相关的几种类型:
内部路由器:指所有接口都属于同一个区域的路由器;
区域边界路由器(ABR):指连接一个或多个区域到骨干区域的路由器并且这些路由器会作为域间通信量的网关。物理上至少连接两个区域。
自治系统边界路由器(ASBR):ASBR路由器是用来把其他路由选择协议学习到的路由通过路由选择重分配的方式注入OSPF域的路由器。至少配置两种路由协议。
OSPF根据能够学习到的路由种类将区域分为不同的类型,包括骨干区域、标准区域、末梢区域、完全末梢区域、非纯末梢区域等。
运行OSPF的整个区域属于一个AS,AS范围外的路由都属于外部路由。骨干区域用于连接其他区域,骨干区域中的路由器大都是ABR。
骨干区域Area 0该区域的ID一定是0,它是连接所有其他区域的核心,在不同的区域间传递路由信息,其他区域必须跟骨干区域直连。
标准区域能够学习到其他区域的路由;也能学习到外部路由就称为标准区域。
每个路由器都创建了由每个接口、对应的相邻节点和接口速度组成的数据库,称为链路状态数据库。
链路状态数据库中每个条目称为LSA(链路状态通告),常见的有六种LSA类型, 接下来我们通过表格的方式简单认识前五种,第六种我们下次再介绍
配置多区域OSPF步骤,我们结合一个小型的拓补图看一下
接下来我们简单的配置一下R1,R1是一台内部路由器,相对来说简单许多
r1(config)#int loopback 0
#给路由器配置loopback接口(虚拟接口),建议大家尽量都配置虚拟接口
r1(config-if)#ip add 1.1.1.1 255.255.255.255
#地址的子网掩码尽量是32位的
r1(config-if)#int f0/0
#给物理接口配置IP地址
r1(config-if)#ip add 192.168.1.1 255.255.255.0
r1(config-if)#no sh
r1(config-if)#int f0/1
r1(config-if)#ip add 192.168.3.1 255.255.255.0
r1(config-if)#no sh
r1(config)#router ospf 1
#启动OSPF进程(进程号是1)
r1(config-router)#router-id 1.1.1.1
#指定的Router ID是loopback口的地址(在现实环境中,尽量手工指定)
r1(config-router)#net 1.1.1.1 0.0.0.0 area 0
#把网段放到区域中
r1(config-router)#net 192.168.1.0 0.0.0.255 area 0
r1(config-router)#net 192.168.3.0 0.0.0.255 area 0
R1配置完成,接下来我们配置R2,R2是一台区域边界路由器(步骤大致一样,不一样的会做说明)
r2(config)#int loopback 0
r2(config-if)#ip add 2.2.2.2 255.255.255.255
r2(config-if)#int f0/0
r2(config-if)#ip add 192.168.1.2 255.255.255.0
r2(config-if)#no sh
r2(config-if)#int f0/1
r2(config-if)#ip add 192.168.2.1 255.255.255.0
r2(config-if)#no sh
r2(config)#router ospf 1
r2(config-router)#router-id 2.2.2.2
r2(config-router)#net 2.2.2.2 0.0.0.0 area 0
#因为loopback接口是虚拟的,所以分到那个区域也行
r2(config-router)#net 192.168.1.0 0.0.0.255 area 0
r2(config-router)#net 192.168.2.0 0.0.0.255 area 1
#给网段分配区域的时候看好,省得出现错误
剩下两台的配置方法给这两台一样,这里就不示范了
配置完成之后,我们查看一下路由表,发现
区域内路由:指在路由器所在的区域就可以到达目的地区域;
区域间路由:指在其他区域但仍在OSPF AS内的目的地路径。至少要通过一个ABR路由器。
路由器只把最优的路由条目添加到路由表中,选择路由条目的依据:管理距离和度量值;
如果管理距离和度量值一样的话,路由器则会把两条路由都添加到路由表中,实现负载均衡。
但是OSPF协议规定区域内路由要高于区域间路由。
常用的命令(主要用于排错)有:
还有一条非常重要
router #clear ip ospf process
#重新加载OSPF进程信息
接下来我们介绍一下末梢区域和完全末梢区域。
满足一下条件的可以被认定为末梢区域和完全末梢区域
1.只有一个默认路由作为其区域的出口;
2.区域不能作为虚链路的穿越区域;
3.Stub区域里无自治系统边界路由器ASBR;
4.不能使骨干区域Area 0。
末梢区域减少了LSA的数量,减少了路由器资源的浪费,不允许有LSA4、LSA5、LSA7通告,ABR会向末梢区域发送一条默认路由。
完全末梢区域只接受一条由LSA3提供的默认路由,没有LSA3、LSA4、LSA5、LSA7通告。
这样大大减少了路由器中的路由条目,因此,这些路由器的性能将得到大大的提升,并且内存也得到了节省。
下面我们结合一个简单拓补来了解一下如何配置末梢区域和完全末梢区域。
前提是把接口和分到不同的区域中,配置好IP地址、启动OSPF路由进程(这些就不演示了,跟上面的小型拓补实验一样)
我们把area1配置成末梢区域
r1(config)#router ospf 1
r1(config-router)#area 1 stub
#把area1配置成末梢区域
r2(config)#router ospf 1
r2(config-router)#area 1 stub
#r2有接口属于area1,所以也得在r2 上配置一下
现在查看r1的路由表就回产生一条默认路由
接下来我们配置area2为完全末梢区域
先查看一下r4的路由表
接下来我们进行配置
r3(config)#router ospf 1
r3(config-router)#area 2 stub no-summary
#把area2配置成完全末梢区域
r4(config)#router ospf 1
r4(config-router)#area 2 stub
#把area2配置成末梢区域
配置完全末梢区域:只需在骨干区域配置声明“area 2 stub no-summary”;标准区域声明“area 2 stub”即可
接下里我们查看一下r4的路由表
修改路由器接口的优先级的路由称为浮动路由
Router(config)#int f0/0
Router(config-if)#ip ospf pri
Router(config-if)#ip ospf priority 100
#修改OSPF的默认优先级为100
当然这样小型的拓补图看不来任何效果,如果有几十台、几百台路由器就能看出来效果了。
实验完成!
愿我们共同学习,共同进步!