一、OSPF概述
1、按照AS分类
AS是指由同一个技术管理机构管理、使用统一选路策略的一些路由器的集合。
按自治系统分为
内部网关路由协议(IGP):运行在AS内部的路由协议,主要解决AS内部的选路问题,发现、计算路由
主要有:RIP1/RIP2、OSPF、ISIS、EIGRP(思科私有协议)
外部网关路由协议(EGP):运行在AS与AS之间的路由协议,他解决AS之间选路问题。
通常有:BGP
2、OSPF
OSPF是一种链路状态路由协议。
在链路状态路由协议中路由器对全网拓扑完全了解。是"传信的路由”,A将信息放在一封信里发给B,B对其不做任何改变,拷贝下来,并将自己的信息放在另一封信里,两封信一起给c,这样,信息没有任何改变和丢失,最后所有路由器都收到相同的一堆信,这一堆信就是LSDB。然后,每个路由器运用相同的SPF算法,以自己为根,计算出SPF Tree(即到达目的地的各个方案),选出最佳路径,放入路由表中。
3、工作过程
1)建立邻居表
2)形成链路状态数据库
3)形成路由表
OSPF接口发送Hello包,建立邻居关系,之后学习链路状态信息(互相发送LSA链路状态通告相互通告路由),形成链路状态数据库。再通过Dijkstra算法(SPF算法),计算最短路径树(cost最小)后放入路由表。
二、OSPF区域
1、OSPF区域
为了适应大型的网络,OSPF在AS内划分多个区域,每个OSPF路由器只维护所在区域的完整链路状态信息,然后将一个区域的LSA简化和汇总后由边界路由(ABR)转发给另一个区域。
1)区域的ID可以表示为十进制的数字或者是一个IP。
2)区域的划分上,一般Area 0是骨干区域,其他为非骨干区域,非骨干区域无法直接通信,所有通信必须经过骨干区域。
2、路由器(DR和BDR)
1)Router ID :OSPF区域内唯一标识路由器的IP地址
2)Router ID选取规则:
选取路由器loopback接口上数值最高的IP地址
如果没有loopback接口,在物理端口中选取IP地址最高的
上面两个都是自动选取的,下面这个是手动选取的规则:
使用router-id命令指定Router lD
3)DR和BDR
当多台OSPF路由器连到同一个多路访问网段时,如果每两台路由器之间都相互交换LSA,那么该网段将充满着众多LSA条目,为了能够尽量减少LSA的传播数量,这时候需要一个路由器和所有的路由器互换LSA,减少LSA的数量,那么这个路由器被称为DR;在选DR的时候,也会选出一个作为备份,称为BDR;最后其他路由器(DRothers)只和DR和BDR形成邻接关系。
4)DR和BDR的选举方法
自动选举DR和BDR
网段上Router ID最大的路由器将被选举为DR,第二大的将被选举为BDR
手工选择DR和BDR
优先级范围是0~255,数值越大,优先级越高,默认为1
如果优先级相同,则需要比较Router lD
如果路由器的优先级被设置为0,它将不参与DR和DBR的选举
现实中,很少能有路由器同时开机,所以先上线的是DR,第二上线的是BDR。
注:当DR和BDR存在时,除非他俩down了,不然没法强制更换。
5)在OSPF中使用224.0.0.5和224.0.0.6作为组播地址,选举时,大家都是用组播地址224.0.0.5发送Hello包(这个时候路由器都认为自己是DR),当DR和BDR选出来后,DR和BDR使用224.0.0.5发送,其他路由器使用224.0.0.6发送。
3、OSPF的度量值:COST
规则:数值越小越优先
最短路径是基于接口指定的代价(COST)计算的
计算公式=108/BW
常用的端口与COST
接口类型 | COST(108/BW) |
---|---|
Gigabit Ethernet | 0.1 |
fast Ethernet | 1 |
Ethernet | 10 |
电话线56K | 1785 |
4、OSPF数据包(5个包)
OSPF数据包承载在lP数据包内,使用协议号89
OSPF的包类型 | 描述 |
---|---|
Hello包 | 用于发现和维持邻居关系,选举DR和BDR |
数据库描述包(DBD) | 用于向邻居发送摘要信息以同步链路状态数据库 |
链路状态请求包(LSR) | 在路由器收到包含新信息的DBD后发送,用于请求更详细的信息 |
链路状态更新包(LSU) | 收到LSR后发送链路状态通告(LSA),一个LSU数据包可能包含几个LSA |
链路状态确认包(LSAck) | 确认已经收到DBD/ LSU,每个LSA需要被分别确认 |
5、OSPF的7个状态
状态 | 作用 |
---|---|
down状态 | 初始化,没有来自邻居的Hello包 |
init状态 | 收到第一个Hello包,但没发出去,建立了自己的邻居表 |
2 Way 状态 | 双向建立会话,邻居表都建立完成 |
Exstart状态 | 建立主从关系 |
Exchange状态 | 交换摘要信息,到确认信息收到 |
Loading状态 | 加载详细信息 |
full状态 | 完全连接,计算最短路径,并载入路由表 |
6、OSPF的4个网络类型
网络类型 | 说明 |
---|---|
点到点网络(Point-to-Point) | 自动发现邻居,不需DR/BDR、组播224.0.0.5 |
广播多路访问网络(Broadcast MultiAccess,BMA) | 自动发现邻居、选DR/BDR、组播224.0.0.5、224.0.0.6 |
非广播多路访问网络(None Broadcast MultiAccess,NBMA) | 手工指定邻居、选DR/BDR、单播(AMT使用) |
点到多点网络(Point-to-Multipoint) (星型结构) | 自动发现邻居,不需DR/BDR、组播224.0.0.5 |
7、OSPF的特点
可适应大规模网络
路由变化收敛速度快
无路由环
支持变长子网掩码VLSM
支持区域划分
支持以组播地址发送协议报
8、OSPF与RIP的比较
OSPF | RIP V1 | RIP V2 |
---|---|---|
链路状态路由协议 | 距离矢量路由协议 | 同V1 |
没有跳数的限制 | RIP的15跳限制,超过15跳的路由被认为不可达 | 同V1 |
支持可变长子网掩码(VLSM) | 不支持可变长子网掩码(VLSM) | 支持可变长子网掩码(VLSM) |
收敛速度快 | 收敛速度慢 | 同V1 |
使用组播发送链路状态更新 | 周期性广播更新整个路由表 | 周期性组播更新整个路由表 |
9、配置命令
[R1]ospf 1 router-id 1.1.1.1
创建ospf进程,配置Router ID
[R1-ospf-1]area 0
创建区域0,区域0为骨干区域
[R1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0
宣告直连路由,使用反掩码
[R1-ospf-1-area-0.0.0.0]network 192.168.10.0 0.0.0.255
查看命令
display ospf 1 peer brief ---------查看OSPF邻居表的简要信息
display ospf 1 peer ---------------查看OSPF邻居表的详细信息
display ospf 1 brief -----------------查看本地设备上的OSPF 1 的相关信息
display ip routing-table -----------查看路由表中的OSPF路由(确定路由器的类型和属性)
display ospf routing
display ospf interface GigabitEthernet 0/0/0
三、OSPF多区域
通常现实中的网络拓扑是非常大型和复杂的,而SPF算法的反复计算,庞大的路由表和拓扑表的维护等都会占用大量的路由器资源,这会降低路由器的运行效率。
而OSPF协议可以通过划分区域来减小这些不利的影响,也就是说OSPF协议划分多个区域后,每一个区域的路由器只需要了解所在区域的网络路由拓扑,并不需要了解整个网络的路由拓扑,这样就减小了路由表,降低了SPF算法的计算量和LAS的开销。
1、OSPF多区域的生成原因
1)改善网络的可扩展性
2)快速收敛
2、OSPF的通信量
1)域内通信量:就是同一个OSPF区域内的路由器交换数据包的通信量
2)域间通信量:是一个OSPF区域的路由器和另一个OSPF区域的路由器交换数据包时的通信量
3)外部通信量:OSPF区域内的路由器和OSPF区域外或另一个自治区域的路由器交换数据包的通信量
3、OSPF中的路由器的类型
1)内部路由器:路由器只保存本区域的链路状态信息
2)区域边界路由器(ABR):连接区域与其他区域的路由器;将连接区域的链路状态信息总汇后发给区域0,并将其他区域的的链路状态信息发给连接的区域
3)自治系统边界路由器(ASBR):用来连接OSPF区域和外部的路由器;并将外部路由注入到OSPF网络中
4、OSPF区域的类型
1)骨干区域:area 0,OSPF区域的核心,其他区域都要连接到该区域
2)非骨干区域–根据能够学习的路由种类来区分
非骨干区域分为标准区域,末梢区域(stub),完全末梢(Totally stubby)区域,非纯末梢区域(NSSA)。
接下来我们介绍一下末梢区域和完全末梢区域。
满足一下条件的可以被认定为末梢区域和完全末梢区域
- 只有一个默认路由作为其区域的出口
- 区域不能作为虚链路的穿越区域
- Stub区域里无自治系统边界路由器ASBR
- 不能使骨干区域Area 0
末梢区域减少了LSA的数量,减少了路由器资源的浪费,不允许有LSA4、LSA5、LSA7通告,ABR会向末梢区域发送一条默认路由。
完全末梢区域只接受一条由LSA3提供的默认路由,没有LSA3、LSA4、LSA5、LSA7通告。
这样大大减少了路由器中的路由条目,因此,这些路由器的性能将得到大大的提升,并且内存也得到了节省。
5、OSPF链路状态通告类型
1)链路状态数据库的组成
- 每个路由器都创建了由每个接口、对应的相邻节点和接口速度组成的数据库
- 链路状态数据库中每个条目称为LSA(链路状态通告),常见的有六种LSA类型
2)通告类型
LSA类型 | 描述 | 用途 |
---|---|---|
Type 1 | 路由器LSA | 由区域内的路由器发出的,描述了路由器的的链路状态和花费,传递到整个区域内 |
Type 2 | 网络LSA | 由区域内的DR发出的,描述了区域内变更信息,传递到整个区域内 |
Type 3 | 网络汇总LSA | ABR发出的,其他区域的汇总链路通告,描述了其他区域内某一网段的路由,区域间传递 |
Type 4 | ASBR汇总LSA | ABR发出的,用于通告ASBR信息,确定ASBR的位置,不会出现在ASBR所属区域之内 |
Type 5 | AS外部LSA | ASBR发出的,用于通告外部路由,告诉相同AS的路由器通往外部AS的路径,在整个AS中进行泛洪 |
Type 7 | NSSA外部LSA | NSSA区域内的ASBR发出的,用于通告本区域连接的外部路由,与Type 5类似,仅在非纯末梢区域内进行泛洪,传递时会被ABR转换为LSA5 |
类型1,路由器LSA:
- 所有路由器都会生成这一类型的链路状态通告
- 指明了它们的状态和沿每条链路方向出站的代价,以及该链路上所有已知的 OSPF 邻居
- 只在本区域内泛洪
- 链路状态ID是源路由器ID
类型2,网络LSA:
- 由DR生成
- 指明了所有与之相连的路由器
- 只在本区域内泛洪
- 链路状态ID是DR的ip接口地址
类型3,汇总LSA:
- 由ABR生成
- 将从一个区域学到的信息发送给其他区域
- 在除了绝对末节区域和完全NSSA区域外的所有区域泛洪
- 链路状态ID是目的网络地址
类型4,ASBR汇总LSA
- 由同区域,离ASBR最近的ABR生成
- 指明如何到达ASBR
- 在除了绝对末节区域和完全NSSA区域外的所有区域泛洪
- 链路状态ID是所描述的ASBR的路由器ID
类型5,自治系统LSA
- 由ASBR生成
- 指明到达自治系统外部网络的路由
- 在除了绝对末节区域和完全NSSA区域外的所有区域泛洪
- 链路状态ID是外部网络地址
类型7,NSSA区域中对外部路由使用
- 由ASBR生成
- 指明到达区域外部网络的路由
- 在NASS区域内泛洪
四、路由的重分发
在大型的企业中,可能在同一网内使用到多种路由协议,为了实现多种路由协议的协同工作,路由器就需要使用路由重分发,将其学习到的一种路由协议通过另一种路由协议广播出去。
1、路由重分发的考虑
- 度量值(每种协议的度量值不一样)
- 管理距离(优先级)
2、重分发到OSPF域中路由路径类型
用于2个或以上的ASBR通向同一个外部网络时的选路
- 类型1(type1或者E1),考虑的是源地点到目的地点的代价。例如上图中AR1到AR4,可以经过AR2或AR3;AR1—AR2—AR4的代价为25(5+20),AR1—AR3—AR4代价为48(30+18),所以选择从AR2走。
- 类型2(type2或E2),只考虑外部路由的代价,思科和华为默认。例如上图,AR1—AR2—AR4代价为20,AR1—AR3—AR4代价为18,优先从AR3走。
3、配置命令
[R1]rip 1
[R1-rip-1]import-route ospf 1 cost 3
把ospf协议注入到rip进行路由重分发,路径类型缺省为路径类型2(外部开销),成本开销为3(对于rip的度量值是跳数),rip中重分发ospf要指定cost的值,最大为15跳
[R1-rip-1]ospf 1
[R1-ospf-1]import-route rip 1 type 1 cost 1
把外部rip协议注入到OSPF进行路由重分发,使用路径类型1(内部开销+外部开销),成本开销为1(COST=100M/BW)
default-route-advertise always ------ OSPF重分发默认路由
import-route direct ---------------------OSPF重分发直连路由
import-route static ----------------------OSPF重分发静态路由
五、NSSA区域
1、概念
NSSA区域是OSPF RFC的补遗,LSA类型7仅在此区域泛红,有类似于末梢区域和完全末梢区域的优点,也可以包含ASBR。
2、NSSA区域重分发路由类型
N1、N2:在通过NSSA区域ABR后转换成E1、E2
3、区域内对应的LSA类型
区域类型 | 1&2 | 3 | 4&5 | 7 |
---|---|---|---|---|
骨干区域(区域0) | 允许 | 允许 | 允许 | 不允许 |
非骨干区域、非末梢区域 | 允许 | 允许 | 允许 | 不允许 |
末梢区域 | 允许 | 允许 | 不允许 | 不允许 |
完全末梢区域 | 允许 | 不允许(有一条默认路由) | 不允许 | 不允许 |
NSSA | 允许 | 允许 | 不允许 | 允许 |
4、OSPF路径和地址汇总
(1)路径类型
优先级:1表示最高的优先级,4表示最低的优先级
路由表添加路由条目时,如果目的网段相同,会选择优先级高的路由条目添加到路由表中
- 区域内路径:优先级1
- 区域外路径:优先级2
- 类型1的外部路径:优先级3
- 类型2的外部路径:优先级4
(2)地址汇总
优点:通过以下作用来节省资源
- 减少了泛洪的LSA数量
- 屏蔽一些网络不稳定的细节
- 减少路由表中的路由条目
(3)OSPF地址汇总
六、虚链路
1、概念
虚链路是一条通过一个非骨干区域链接到骨干区域的链路,这是一种应急措施,用于本来这个区域连接区域0的ABR损坏。
2、规则与特点
- 虚链路必须配置在两台ABR路由器之间
- 传送区域不能是一个末梢网络
- 虚链路的稳定性取决于其经过的区域的稳定性
- 虚链路有助于提供逻辑冗余
3、配置命令
[R1]ospf 1
[R1-ospf-1]area 1
[R1-ospf-1-area-0.0.0.1]vlink-peer 1.1.1.1
互相指定被穿越区域两端的ABR的路由ID
[R2]ospf 1
[R2-ospf-1]area 1
[R2-ospf-1-area-0.0.0.1]vlink-peer 2.2.2.2
[R2]dis ospf vlink
查看本地上通过虚链路建立的OSPF邻居关系
七、配置
1、实验一
使用OSPF协议是网络互通
先配端口IP地址
R1
[R1]int LoopBack 1
[R1-LoopBack1]ip address 1.1.1.1 32
[R1]ospf 1 router-id 1.1.1.1
创建ospf进程,配置Router ID
[R1-ospf-1]area 0
创建区域0,区域0为骨干
[R1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0
宣告直连路由,使用反掩码
[R1-ospf-1-area-0.0.0.0]network 192.168.10.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0]network 10.0.0.0 0.0.0.3
[R1-ospf-1-area-0.0.0.0]q
R2和R3配置相同,更换自身网段即可。
在R3上查看OSPF动态学习的路由
2、实验二
使用OSPF多区域、RIP和OSPF的重分发
先配置各个路由器的接口IP
R1
ASBR负责连接OSPF区域和区域外的路由,所以要配置OSPF和其他协议,这里是RIP V2
[R1]ospf 1 router-id 1.1.1.1
[R1-ospf-1]area 1
R1属于区域1
[R1-ospf-1-area-0.0.0.1]network 10.0.0.0 0.0.0.255
[R1-ospf-1-area-0.0.0.1]network 1.1.1.1 0.0.0.0
[R1-ospf-1-area-0.0.0.1]q
[R1-ospf-1]rip 1
[R1-rip-1]version 2
[R1-rip-1]un summary
[R1-rip-1]network 50.0.0.0
[R1-rip-1]q
[R1]
光设置各个的协议也不行,需要将各个协议的信息互通一下,所以就要设置路由的重分发
[R1]rip 1
[R1-rip-1]import-route ospf 1 cost 3
把ospf协议注入到rip进行路由重分发,路径类型缺省为路径类型2(外部开销),成本开销为3(对于rip的度量值是跳数),rip中重分发ospf要指定cost的值
[R1-rip-1]ospf 1
[R1-ospf-1]import-route rip 1 type 1 cost 1
把外部rip协议注入到OSPF进行路由重分发,使用路径类型1(内部开销+外部开销),成本开销为1(COST=100M/BW)
R2
ABR属于两个区域,所以要配置两个区域,在各自的区域宣告各自的网段
[R2]ospf 1 router-id 2.2.2.2
[R2-ospf-1]area 1
[R2-ospf-1-area-0.0.0.1]network 10.0.0.0 0.0.0.255
[R2-ospf-1-area-0.0.0.1]q
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]network 20.0.0.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]network 2.2.2.2 0.0.0.0
[R2-ospf-1-area-0.0.0.0]q
其他路由器配置各自的协议,和在各自的区域宣告网段后,每个路由器上都学习到了其他的路由器上的路由表。
R4上的路由表
R6的路由表
补充
补充一
这时候看路由器上的路由表是不是显示的特别多,这里可以用命令将末梢区域和完全末梢区域的路由表中路由数量减少,减少对设备CPU和内存的占用。
末梢网络
这里分别在R4和R5的OSPF中的Area 2中配置Stub
这里可以看出路由表中路由减少了除OSPF区域和直连路由之外的路由。
完全末梢网络
这个和上面的末梢网络差不多,就是在ABR上将Stub 改成stub no-summary
在最后一个路由器上地址被聚合成一条默认路由
补充二
每个路由协议对应的优先级
路由协议或路由种类 | 优先级 |
---|---|
Direct | 0 |
OSPF | 10 |
IS-IS | 15 |
Static | 60 |
RIP | 100 |
OSPF ASE | 150 |
BGP | 255 |