18-动态路由协议,OSPF
RIP协议由于出生较早,有很多缺点,已经逐渐被OSPF代替;
RIP的缺点:
收敛慢 ->30s发一次路由更新;
易产生环路 ->需要水平分割、 毒性反转、触发更新等机制来避免环路;
可扩展性差 ->最大只支持15跳,16跳不可达,导致不适应于大型网络;
OSPF协议的优点:
1.OSPF概述:Open shortest path first 开放式最短路径优先
-
大中型网络使用最广泛的IGP协议
-
链路状态路由协议
-
无类别路由
-
使用组播(224.0.0.5和224.0.0.6)
-
收敛快
-
以开销(cost)作为度量值(cost根据接口带宽来计算)
-
采用SPF算法可以有效的避免环路(不需要水平分割、毒性逆转等机制)
-
触发式更新(路由改变时立即发送更新,并且以较低频率 (每30分钟)定期发送更新,被称为链路状态泛洪)
-
区域的设计使得OSPF能够支持更大规模的网络(划分骨干区域和非骨干区域和特殊区域,就像国家分省市区来管理)
-
通过LSA(链路状态信息)的形式发布路由(就像高德地图可以根据路况选路)
-
支持手动汇总 (汇总是为了精简路由表的数量,有多个子网时,不需要看每条子网的路由状态;)
2.OSPF区域概述
术语
|
备注
|
区域(Area)
|
为了适应大型网络,OSPF在AS内划分多个区域
区域是以接口划分
每个OSPF路由器只维护所在区域的完整链路状态信息
|
区域ID(Area ID)
|
可以表示成一个十进制的数字,如:1
也可以表示成一个IP,如:0.0.0.1
|
区域优点
|
尽量减少路由表条目,从而减少LSDB大小
拓扑变化仅影响本区域内部
|
1)区域的表示
一共可以创建4294967296个区域;
也就是可以有和ipv4地址数量一样的区域数量;也就是2的32次方个;32位二进制;
因此,区域ID为256时可以有两种表示形式:256、0.0.1.0
2)区域的划分
划分多区域的作用:为了减轻运行OSPF路由器的压力
例如:下图中,Area1中的路由器只需要了解Area1中所有路由器的LSA;
LSA存放在LSDB中,划分区域减少了LSDB的大小,从而降低路由器内存消耗;
划分区域也减少了路由器cpu的压力,LSA少了,计算路径的压力也减轻;
ospf每30分钟一次链路状态泛洪,划分区域后,只需要更新区域内的路由状态信息,减少了路由器压力;
注意:只有1类和2类地址的泛洪会被限制在单个区域内;
区域划分机制:以接口划分
例如:下图中左边中间的路由器,上方的接口属于Area0,下放的接口属于Area1;
一个接口只能属于一个区域;
3)区域的类型
类型
|
备注
|
骨干区域
|
area 0
骨干区域,也称为传输区域
|
非骨干区域
|
area 0除外
非骨干区域,称为末端区域
|
只有ID为0的区域是骨干区域,其它非0的都是非骨干区域;
骨干区域负责非骨干区域的数据传输:
例如,上图中Area1到Area2数据包的转发和路由的传递必须经过Area0;
就像坐火车从合肥到上海需要经过中转站南京;
一般情况下,所有非骨干区域必须和骨干区域直接相连;(特殊情况用其它方法解决)
4)路由器的类型
角色
|
备注
|
IR
|
internal router 内部路由器
所有接口都属于同一个区域
|
BR
|
backbone router 骨干路由器
至少有一个接口属于骨干区域
|
ABR
|
Area border router 区域边界路由
连接多个不同的区域,至少有一个接口属于骨干区域
|
ASBR
|
Autonomous system border 自治系统边界路由器
将其他路由协议学习到的路由以引入的方式到OSPF进程中
|
一台路由器可以同时属于多种类型;
3.OSPF工作流程
OSPF核心工作流程:
1】发现并建立邻居
2】传播LSA(区别基于DV算法的路由更新)
LSA的内容 :
a.link state advertisement 链路状态宣告(就像地图中的路况信息)
b.链路:路由器接口
c.状态:描述接口信息(地址、掩码、开销、网络类型、邻居关系等)
3】将LSA泛洪到区域中的所有OSPF路由器(不仅仅是直连路由器)
4】收集LSA创建LSDB(链路状态数据库,相当于地图)
5】使用SPF算法计算到达每个目标网络的最短路径,存放于路由表
1)邻居
osfp中有个概念叫邻居;
查看邻居的命令:
dis ospf peer
建立邻居:
ospf 1
area 0
net
network 192.168.108.0 0.0.0.255
dis ospf peer
建立邻居成功后,会周期性发送hello数据包;
hello包的作用是用来找邻居;
通过周期性的发送hello包来发现邻居;
邻居会存放在邻居表中(Neighbor Table)
2)关于LSDB
建立邻居后,路由器之间会传播LSA;
LSA会通过泛洪传播到区域汇总所有的ospf路由器;
LSA保存在LSDB中;
查看LSDB:
dis ospf lsdb
type表示lsa的类型,router是路由器、sun-net是汇总;
查看router类型的lsa:
dis ospf lsdb rou
查看汇总类型的lsa:
dis ospf lsdb sum
3)SPF算法计算
通过LSA可以知道到达特定地点可能有多条路径;
通过SPF算法,计算出一条最佳路径;
路由器转发数据,还是需要查询路由表;
通过spf计算出最佳路由后,会将最佳路由写入路由表;
4)总结
-》osfp路由器之间建立邻居
-》发送LSA泛洪,建立LSDB数据库
-》用SPF算法计算出最短路径
-》将最佳路由存放在路由表里
这个过程中建立了三张表:
类型
|
含义
|
邻居表
|
记录所有邻居关系(有了邻居才能泛洪,才能有LSDB和路由表,ping不通时可以先检查邻居表)
|
链路状态数据库
|
记录所有链路状态信息
|
路由表
|
记录最佳路由
|