RIP动态路由协议存在局限性
RIP动态路由协议存在以下问题:
1、网络规模小,可扩展性差,最大只能支持15跳。
2、以跳数衡量,并非最优路径
3、收敛慢,更新RIP浪费网络资源
OSPF协议概要
OSPF简述
Open Shortest Path First,开放的最短路径优先协议。OSPF用于网际协议(IP)网络的链路状态路由协议。该协议使用链路状态路由算法的内部网关协议(IGP),在单一自治系统(AS)内部工作。
OSPF特点
OSPF支持区域的划分,区域内部的路由器使用SPF最短路径算法保证了区域内部的无环路。
通过Cost(消耗)计算最佳路径。
使用LS(Link State)算法。
OSPF三大表项
OSPF协议定义了三张表邻居表(Neighbor-Table)、拓扑表(Topology-Table)、路由表(Rouing-Table)。这三张表的关系层层递进,OSPF的区域中当有路由加入时,先通过邻居表相互发现,再通过邻居表汇总拓扑表,通过拓扑表,用SPF算法计算出路由表。
OSPF区域划分
OSPF的区域划分为:
骨干区域(Backbone Area),类似于树的根;
标准区域(Normal Area),类似于树的子节点;
末梢区域(Stub Area),类似于树的叶,树的叶下面可能会挂其他网络环境;
衍生:完全末梢区域(Total Stub Area),树的叶下面确定不会再挂任何网络环境
非完全末梢区域(Not So Stub Area,nssa),类似于树的叶,但是叶子下面仍然可能有不属于当前OSPF的网络环境。
衍生:完全非完全末梢区域(Total Not So Stub Area),树的叶子下面确定会再挂一段不属于当前OSPF的网络环境。
OSPF路由器的种类
IR--InternalRouter(区域内路由器)
ABR--AreaBorderRouter(区域间路由器)ospf的区域之间
BR(骨干区域路由器)
ASBR--AreaSystemBorderRouter(区域系统自制路由器)
OSPF内某个网段内的DR/BDR选举
对于OSPF来说,每个网段内都需要一个DR(主路由)和一个BDR(备份路由)。用以让单个网段内的路由形成树状结构。
选举过程
方式一:选举自动
网段上Router ID最大的路由器将被选举为DR,第二大的将被选举为BDR
方式二:手动
可以设置路由的选举优先级范围是0-255,数值越大,优先级越高,默认1
若优先级相同,需要比较Router ID
如果路由器优先级被设置为0,它将不参加DR与BDR的选举
PS:优先级可以影响一个选举过程,但是不能强制更换已存在的DR或BDR路由器
两个组播地址:
224.0.0.5 代表所有ospf路由器
DR和BDR使用此地址来发送更新到所有其他路由器
224.0.0.6
代表DR和BDR,其他路由器都向此地址来发送链路状态信息更新
选举DR和BDR的作用
DR和BDR可以减少邻接关系的数量,从而减少链路状态信息以及路由信息的交换次数,这样可以节省带宽,降低对路由器处理能力的压力。
PS:同一个网段内选举,路由器多的时候DR和BDR有多个
OSPF工作流程
从两个路由之间的通信
相互发现
各状态的含义:
down:未启动的阶段
init:已经初始化启动,未查找到neighbor的状态
2-way:已经查找到neighbor的状态
Hello报文相互传递邻居关系。
请求并更新数据
Exstart:做Master和Slave选举,目的是为了保证两个路由器之间传输数据的可靠性
Exchange:交换LSDB summaries,为了知道对方的缺失,并节省流量
Loading:LSR--LSU--LSAck数据同步(LSR:LS Request:请求缺失的LSA;LSU:LS Update:更新缺失的LSA条目,LSAck:确认更新)
Full:完成数据同步的状态
OSPF报文信息
Hello
OSPF使用Hello分组建立和维护邻接关系。在一个路由器能够给其他路由器分发它的邻居信息前,必须先问候它的邻居们。
DBD(Data base Description)
DBD分组不包含完整的“链路状态数据库”信息,只包含数据库中每个条目的概要。当一个路由器首次连入网络,或者刚刚从故障中恢复时,它需要完整的“链路状态数据库”信息。此时,该路由器首先通过hello分组与邻居们建立双向通信关系,然后将会收到每个邻居反馈的DBD分组。新连入的这个路由器会检查所有概要,然后发送一个或多个链路状态请求分组,取回完整的条目信息。
DBD功能
选取Master(主)和Slave(备)
交换LSDB的summarie(摘要):主要为了同步LSDB之前节省网络流量
报文详情
LSA-type:LSA的类型
1:Router-LSA
2:Network-LSA
3:Network-summary-LSA
4:ASBR-summary-LSA
5:AS-external-LSA
7:NSSA-External-LSA
Link State ID:该LSA所描述的那部分链路的标识
Advertising Router:产生此LSA的路由器ID
LS sequence number:用于检测旧的和重复的LSA
LSR(Link State Request)
LSR分组用来请求邻居发送其链路状态数据库中某些条目的详细信息。当一个路由器与邻居交换了数据库描述分组后,如果发现它的链路状态数据库缺少某些条目或某些条目已过期,就使用LSR分组来取得邻居链路状态数据库中较新的部分。
LSU(Link State Update)
LSU分组被用来应答链路状态请求分组,也可以在链路状态发生变化时实现洪泛(flooding)。在网络运行过程中,只要一个路由器的链路状态发生变化,该路由器就要使用LSU,用洪泛法向全网更新链路状态。
用来向对端路由器发送所需要的LSA。LSA(Link State Advertisement),是LSDB里面的单条详细信息
LSAck(Link State Acknowledgment)
LSAck分组被用来应答链路状态更新分组,对其进行确认,从而使得链路状态更新分组采用的洪泛法变得可靠。
OSPF同网段内路由器的通信
拓扑图
图中AR1、AR2、AR3、AR4在同一网段内。会进行DR/BDR选举。
各路由器之间的信息交互
非DR、BDR的路由器(OR)只与DR、BDR同步数据
1、如图:AR1和AR2分别为DR和BDR时,AR3和AR4就不会相互更新数据,状态为2-way的状态
2、OR和DR和BDR直连的时候,不直连的时候还是会Full状态
同一网段内路由更新的组播报文:
如果DR有更新
DR会发送LSU,组播消息224.0.0.5
BDR会发送LSAck到224.0.0.5
OR会发送LSAck,到224.0.0.6
如果BDR有更新
BDR会发送LSU到224.0.0.5
DR会发送LSAck到224.0.0.5
OR会发送LSAck到224.0.0.6
如果OR有更新
OR会发送LSU到224.0.0.6
DR会发送LSU到224.0.0.5
BDR会发送LSAck到224.0.0.5
OSPF同区域间路由器的通信
标准区域间的网络通信Link State DateBase
举例拓扑:
骨干区域内网段:10.0.12.0/24 、10.0.13.0/24
图中各路由类型:
BR:AR1
ABR:AR2、AR3
ASBR:AR6
观察各路由器的lsdb
LSA的type类型
type = 1:Router-LSA,路由器LSA,由普通路由发布
type = 2:Network-LSA,网络LSA,由DR发布
type = 3:Network-summary-LSA,网络汇总LSA,由ABR发布
type = 4:ASBR-summary-LSA,ASBR汇总LSA,由ASBR发布
type = 5:AS-external-LSA,自治系统外部LSA,由AS系统边界路由ASBR发布
BR:AR1
ABR:AR2、AR3
内部包含area 0 和 area 44的数据,以及外部网络环境
area 0包含去往area 44的LSA:Sum-Net 10.44.56.0
area 0包含去往area 55的LSA:Sum-Net 10.55.34.0
area 44包含去往area 0内网段的LSA:Sum-Net 10.0.12.0、Sum-Net 10.0.13.0
ASBR:AR6
包含去往area 44和外部网络的信息
可见,标准区域内的路由包含所有所有的网络拓扑,ABR/ASBR包含连接的两个area的LSAs。
当网络拓扑扩大,ospf的网络拓扑会变得很大,因此引入树叶(末梢区域)的概念
具体细分为以上所说的OSPF区域划分的那些区域。详见如下。
OSPF不同区域类型路由器的通信
网络拓扑
ABR:
AR3:末梢区域的路由,有一条Sum-Net 0.0.0.0的缺省路由,作用是该区域内部路由找ip时没有在该区域的路由统统通过默认路由出去,往AR2走。
AR5:NSSA区域的路由,有一条NSSA路由,NSSA 192.168.55.0,指向非当前ospf的网络环境;还有一条NSSA路由,0.0.0.0,指向当前nssa区域的出口AR4。
AR9:
完全stub区域,与AR3对比,sum-net汇总成单条记录,表示:该区域的默认出口为:AR8
AR11
完全NSSA,与AR5比较,sum-net也汇总成了单条记录0.0.0.0,表示该区域的默认出口为AR10。
OSPF区域类型总结
骨干区域:不能设置成nssa或者stub
标准区域:包含type 1 2 3 4 5 7
末梢区域:包含type 1 2 3
完全末梢区域:包含type 1 2 【单条缺省的3】
NSSA:包含type 1 2 3 7
完全NSSA:包含 type 1 2 【单条缺省的3】7
*完全的区域类型:设置了no-summary,导致type 3会变成一条缺省LSA*