前言:OSPF 协议是路由的基础,我搞得不是很深,翻译一篇国外的文章吧
Open Shortest Path First (OSPF) 是一个标准的路由协议,已经使用很多年了。几乎所有的厂家都支持 OSPF 协议,只要你在 IT 行业,你就逃不开 OSPF 协议。
有多个站点的企业网络通常使用 OSPF 来连接其园区和广域网(WAN)。
静态路由写起来真的烦,配路由都是一把梭动态路由。有很多动态路由,OSPF 可能没有 EIGRP 那么简单。但是,我建议你,别被 OSPF 协议吓到了,在大型网络中 OSPF 是很复杂,但是在小型网络中是真的简单
在这篇文章中,我将向你介绍 OSPF 主要的知识,然后带你飞一把实战
OSPF 的核心思想
OSPF 是路由协议,两个遵守 OSPF 协议的路由器交换有关他们所知道路线的信息以及他们到达那里的开销。
当许多 OSPF 路由器属于同一网络时,该网络中的所有 OSPF 路由器都会学习同一网络中所有路由的信息,我们叫他 Area。 (随着我们的深入,我们将更多地谈论 Area)。
每个 OSPF 路由器都会将路由和成本的信息传递给所有相邻的 OSPF路由器,这些相邻的路由器被叫做:neighbors
OSPF 路由器依赖他们到远程路由或者目的地址的开销来计算最短路径。计算最短路径的办法是使用 Djikstra’s algorithm,了解图论的同学肯定不陌生,这不是属于 OSPF 的算法,是一种计算机最短路径常见的算法,适用于很多网络上的应用。
考虑一个连接五个路由器的简单示例,如下图所示。假设所有链路都具有相同的成本,那么 R3 连接到 R5 的最快方式是什么?通过 R4!通过 R4 是成本最低的路径(例如,R3 通过 R1 到 R5 的路径增加了另一个链接,因此增加了成本)。
OSPF 中的接口
另一个 OSPF 的核心思想是:用于与 OSPF 邻居交换信息的接口具有不同的类型。类型有很多,但咱必须知道这两种类型:
- OSPF 广播接口连接到共享网络,如以太网
- OSPF 点对点接口连接到两端都只能有一个 OSPF 路由器的链路,例如 WAN 链路或专用以太网链路
在点对点链路上,没有什么神秘之处。两个路由器都知道它们是链路上唯一的 OSPF 路由器,因此它们相互交换路由。
而在广播链路上,网络段上可能存在许多不同的 OSPF 路由器。为了最大限度地减少在广播链路上形成的邻居关系的数量,OSPF 选择一个指定的路由器以及一个备份(大哥和二哥),其作用是与该段上的所有其他 OSPF 路由器相邻,并与其他所有人共享每个人的路由。
也就是说:所有小弟给大哥(DR)路由,大哥给所有小弟分配路由(二哥(BDR)暂插不上手)
OSPF 中 area 的概念
OSPF 中的 Area 是组合在一起的路由器的集合。除区域边界路由器外,一个区域中的 OSPF 路由器不与其他区域中的路由器相邻。
回到远古时代,那个时候的 CPU 还不像今天那么得劲。一个 Area 中的路由器不能超过 50 个。而如今,一个 Area 里面有上千个路由也不是那么困难。
也就是说,一个 Area 中的规模已经不是发展多 Area 的主要原因了。但是 OSPF 的 Area 仍然可用作网络中的管理边界。比如:
- 路由的聚合(由一条大路由代换几条小路由)仍然只能发生在 OSPF Area 的边界区
- 不是所有的路由器需要知道在网络中所有可达的路由。通过使用 OSPF Area,只用使用一个默认的路由就能代替所有在 Area 以外的路由了
为了要使最短路径优先(SPF)计算起作用,区域中的所有路由器都需要具有相同的网络镜像。因此在一个 Area 中路由是藏不住的。
在 OSPF 中最重要的区域就是 backbone area,又被叫做 area 0。所有的 Area 要通信必须要通过这个 backbone area。
例如,假设我们有 Area 0,Area 1和 Area 2。Area 1 流量必须通过Area 0 才能到达 Area 2,反之亦然。即使路由器 Area 1 中有一个接口,Area2 中有另一个接口,Area1 和 Area2 流量也不能直接链接。这样做的目的就是防环路。
虽然 Area 内的 OSPF 路由器知道有关网络拓扑的所有信息,但拓扑信息更多隐藏在边界 Area 中。有关更多的知识,网络架构师 Jeff Doyle 有一篇很好的文章。
举个实例带你飞
基本配置
- 开启 OSPF 进程
Router(config)#router ospf process-id
- 宣告特定的网络到 OSPF 区域
Router(config-router)#network address wildcard-mask area area-id
- 修改接口的 cost
首先你得知道:cost 值如何计算
cost = 100Mb/bandwith in bps
如果有小数就向上取整数
修改 cost 值
R1(config-if)#ip ospf cost 1
一条路线路上的 cost 值是所有出口的 cost 之和