1.Ospf 的基本原理
在介绍ospf原理之前先回顾一下动态路由原理。所有路由选择协议都要围绕着一种算法而构建。这种算法是个逐步解决问题的过程。一种路由算法至少应指明一下几点
1)路由器之间怎么共享信息网络可达性信息的过程。
2)基于现有的信息怎么计算出最佳路径。
3) 响应,修正和通告网络拓扑变化的过程。
首先ospf是一个链路状态路由协议。它与距离矢量路由协议的最大区别就在于网络中的每一个路由器都知道全网的视图并据此以自己为根用spf 算法计算出最佳路径。提到spf算法也许很多人都感觉头疼,不过幸运的是我们并不需要深入去研究它。在这里我基于我的简单理解来介绍一下:
如图1.1从A出发找到第一条的花销最小的路径假设是A--B, 第二条最短路径有两种可能要么是通过上一条最短路径(A--B--D),要么是从A直接到达的路径(A--E或者A--C),按照上面的步骤找出到达每个节点的最短路径。(以上是本人的浅显理解有不足之处还请谅解。)
下面就介绍一下链路状态路由协议的基本原理。举一个通俗的例子。假设某班的同学做这样一个游戏每个同学手中都有一张卡片每个同学在这张卡片上面都写上自己前后左右的同学的名字。然后把卡片和其他同学交换,每收到一张卡片都把这个卡片的内容记下来,然后再发给别的同学。最终所有的同学都知道所有其他同学的信息及其邻居。根据这些信息每个同学就可以绘制全班同学的位置图。行了就到这里吧,再说下去恐怕我自己都晕了。
2.ospf的特点及其过程
1)快速收敛,ospf的收敛过程很迅速可以达到2s以内。
2)支持vlsm,它不像rip,eigrp.那样在边界路由器执行汇总。
3)无大小限制的、任意的度量值。
4)使用多条路径的等价负载均衡。
5)用保留的组播地址来减小对不宣告的设备的影响。
6)更安全的路由选择认证。
7)用可以跟踪外部路由的路由标记。
8)使用区域的概念来隔离本区域链路的变化对其他区域的影响。
Ospf过程
第一步:每个路由器启动时首先去发现自己的邻居。第二步:构建自己的链路状态数据包 (LSA)并发送给自己的所有邻居。第三步:收到从邻居发过来的LSA后保存其副本并泛洪到自己的邻居。第四步:
每个路由器基于自己的链路状态数据库,运用spf算法计算到其他路由器的最佳路径。第五步:网络收敛完成后只在链路状态发生变化时发送LSU还有就是每隔30min的强制更新。
邻居关系的建立
一台ospf路由器对其他路由器的跟踪需要每台路由器都提供路由器ID.路由器ID在区域内惟一标识一台路由器的地址。路由器通过下方法得到它们的路由器ID。
1) 使用router-id 命令手工配置
2) 使用果没有手工配置路由器就选取它所有的环回接口上数值最大的地址。果路由器没有配置环回接口那么路由器将选取它所有活动的物理接口的最大地址
3) 用作路由器ID的接口不一定非要运行ospf协议。
hello 数据包用于以下几个目的
1)它是发现邻居路由器的方法
2)两台路由器成为邻居之前要通告这两台路由器必须相互认可的几个参数
3)确保了邻居路由器之间的双向通信
hello数据包都包含以下信息
1)始发路由器的路由器ID
2)始发路由器接口的区域
3)始发路由器接口的地址掩码
4)始发路由器接口的认证类型和认证信息
5)始发路由器接口的间间隔
6)始发路由器接口的路由器无效时间间隔
7)路由器的优先级
8)指定路由器和备份指定路由器
hello数据包的时间间隔在高速链路上是10s,而在T1或者更慢的链路上是30s无效时间默认是其4倍。hello计时器不匹配将不能建立邻居关系。邻居关系建立后它们之间就能交换lsa,lsr等数据包了。
链路状态数据结构
–邻居表:
包含了已知的邻居
–拓扑表:
一般称为链路状态数据库(LSDB)
包含了在一个区域或网络中的所有路由器和他们所连接的链路
在同一个区域内的所有路由器都有相同的LSDB
–路由表:
包含到达目的网络的最优路径
ospf区域及层次结构
层次结构包括以下两种:
传输区域 (骨干区域或区域 0)
一般区域 (非骨干区域)
OSPF 区域特点:
使路由表中条目最少化
在区域内缩小查找拓扑变化的范围
LSA在区域边界处停止泛洪
LSA 类型
LSA Type |
Description |
|||
1 |
Router LSAs |
|||
2 |
Network LSAs |
|||
3 or 4 |
Summary LSAs |
|||
5 |
Autonomous system |
|||
6 |
Multicast OSPF LSA |
|||
|
|
1) 一个区域里的每一台路由器的 router LSA (type 1)
包括直接连接链路的列表 ;每一条链路是以该链路的IP地址前缀和该链路的链路类型作为确定的以始发路由器的router id 作为标识;只在本区域泛洪; 不跨越 ABR
2)在区域每个广播型网络或者NBMA网络中的 network (type LSA
包括网络中连接的路由器 ;包含链路的子网掩码 ;广播网络中的DR通告的 ;仅仅在本区域泛洪; 不跨越 ABR
3)Type 3 LSAs 被用作泛洪网络信息到其他区域
描述网络前缀和子网掩码;由始发区域的ABR发送 ;在区域0中传递 ;缺省下, 不汇总路由, type 3 LSA 通告每一个子网
4)Summary (type 4) LSAs 被用来在其他区域中通告 ASBR
由始发区域的ABR发送;Type 4 LSAs 包含ASBR的 router ID;External (type 5) LSAs 被用来通告从其他AS学习来的网络
5)Type 5 LSAs 由 ASBR通告;Type 5 LSAs 在整个自治系统里通告.
在整个自治系统里通告者的 router ID (ASBR) 不做改变,需要用Type 4 LSA 去寻找ASBR;缺省下, 路由不被汇总.
2. ospf 综合案例配置
1)ospf多区域配置
2)虚电路配置
3)末节区域配置
4)区域汇总配置
5)在ospf中重分发rip
拓扑图
地址分配方案如下图所示
用gns3工具来模拟
路由器:cisco7200
依次端口连接顺序为:
R1-----R2之间的端口用s1/0
R2-----R3之间的端口用s1/1
R3-----R4之间的端口用s1/0
R4-----R5之间的端口用s1/2
R5-----R6之间的端口用s1/0
R4-----R7之间的端口用s1/1
各个路由器配置
R1配置:
config)#interface loopback 0
if) #ip address 192.168.8.1 255.255.255.0
if) #ip address 192.168.9.1 255.255.255.0 secondary //配置辅助地址
if) #ip address 192.168.10.1 255.255.255.0 secondary
if) #ip address 192.168.11.1 255.255.255.0 secondary
config)#interface serial 1/0
ip address 192.168.3.2 255.255.255.0
no shutdown
config)#router ospf 1 //1代表进程号
network 192.168.3.0 0.0.0.255 area 2 //宣告网络,并让接口参加ospf进程
network 192.168.8.0 0.0.7.255 area 2
area 2 stub // 把区域2 配置成末节区域
R2配置:
config)#interface serial 1/0
ip address 192.168.3.1 255.255.255.0
no shutdown
config)#interface serial 1/1
ip address 192.168.2.2 255.255.255.0
no shutdown
config)#interface serial 1/2
ip address 192.168.4.1 255.255.255.0
no shutdown
config)#router ospf 1
network 192.168.2.0 0.0.0.255 area 0
network 192.168.3.0 0.0.0.255 area 2
area 2 range 192.168.8.0 255.255.248.0 //在ABR area2做汇总
area 2 stub no-summary //把area2 配置为完全末节区域
redistribute rip metric 50 metric-type 1 subnets //重分发rip到ospf
config)#router rip
network 192.168.4.0
default-information originate // 在rip里面分发默认路由
R3配置:
config)#interface serial 1/0
ip address 192.168.1.2 255.255.255.0
no shutdown
config)#interface serial 1/1
ip address 192.168.2.1 255.255.255.0
no shutdown
config)#router ospf 1
network 192.168.1.0 0.0.0.255 area 1
network 192.168.2.0 0.0.0.255 area 0
area 1 virtual-link 192.168.6.1 // 配置对方abr 路由器id
R4配置:
config)#interface serial 1/0
ip address 192.168.1.1 255.255.255.0
no shutdown
config)#interface serial 1/1
ip address 192.168.6.1 255.255.255.192
no shutdown
config)#router ospf 1
network 192.168.1.0 0.0.0.255 area 1
network 192.168.6.0 0.0.0.255 area 0
area 1 virtual-link 192.168.2.1 // 配置对方abr 路由器id
R7配置:
config)#interface loopback1
ip address 172.16.2.1 255.255.255.0 secondary
ip address 172.16.1.1 255.255.255.0
config)#interface serial 1/1
ip address 192.168.6.2 255.255.255.192
no shutdown
config)#router ospf 1
network 192.16.0.0 0.0.255.255 area 3
network 192.168.6.0 0.0.0.63 area 0
R5配置:
config)#interface serial 1/0
ip address 192.168.5.1 255.255.255.0
no shutdown
config)#interface serial 1/2
ip address 192.168.4.2 255.255.255.0
no shutdown
config)#router rip
network 192.168.4.0
network 192.168.5.0
R6配置:
config)#interface serial 1/2
ip address 192.168.5.2 255.255.255.0
no shutdown
config)#router rip
network 192.168.5.0
运行结果:
R1
R2
R3
R4
R7
R5
R6
结果测试
有什么不妥,敬请大家指正!