OSPF路由协议总结
- 一 OSPF协议的三个工作步骤
- 二 5中OSPF协议报文
- 三 4种网络类型,邻居和邻接
- 3.1 P2P
- 3.2 P2MP
- 3.3 Broadcase
- 3.4 NBMA(非广播多路访问)
- 四 OSPF协议的度量方式
- 五 LS(链路状态) LSA(链路状态通告) LSDB(链路状态数据库) LSU(链路状态更新数据包)
- 六 域内(area内)路由计算
- 七 域间(area间)路由计算
- 7.1 域间路由计算
- 7.2 域间路由防环三原则
- 八 域(OSPF AS域)外路由计算
- 九 OSPF默认路由
- 十 OSPF特殊区域
- 10.1 Stub(末节区域)
- 10.2 完全Stub(完全末节区域)
- 10.3 NSSA(非完全末节区域)
- 10.4 完全NSSA(完全非完全末节区域)
一 OSPF协议的三个工作步骤
1. 邻居建立
2. 同步链路状态数据库
3. 计算最优路由
二 5中OSPF协议报文
1.hello报文:ospf最常用的报文,作用为建立和维护邻接的关系,周期性的能在ospf的接口上发送的报文包括一下定时器的数值、网络中的DR 、BDR以及已经知道的邻居
2.DD报文:两台设备在邻接关系初始化时,用DD报文描述本端设备的LSDB,进行数据库的同步。
3.LSR报文:两台设备交换过DD报文,需要发送LSR报文向对方请求更新LSA,内容包括所需要的LSA的报文信息。
4.LSU报文:LSU报文用来向对端设备发送其所需要的LSA或者泛洪本端更新的LSA,内容是多条LSA(全部内容)的集合,为了实现Flooding的可靠性传输,需要LSAck报文对其进行确认,对没有收到确认报文的LSA进行重传,重传的LSA是直接发送邻居的。
5.LSAck报文:LSAck报文用来对接收到的LSU报文进行确认,内容是需要确认的LSA的Header(一个LSAck报文可对多个LSA进行确认)。
三 4种网络类型,邻居和邻接
3.1 P2P
如果链路层协议是PPP、HDLC的话,OSPF会认为网络类型是P2P;
邻居之间建立邻接关系
3.2 P2MP
没有任何一种链路层协议被认为是P2MP,这种类型需要手动配置;
DR与BDR之间建立邻接关系;
DR与DRother之间建立邻接关系;
BDR与DRother之间建立邻接关系;
DRother之间只建立邻居关系;
3.3 Broadcase
如果链路层协议是以太网的话,OSPF会认为网络类型是Broadcase;
邻居之间建立邻接关系
3.4 NBMA(非广播多路访问)
如果链路层协议是帧中继、ATM的话,OSPF会认为网络类型是NBMA;
DR与BDR之间建立邻接关系;
DR与DRother之间建立邻接关系;
BDR与DRother之间建立邻接关系;
DRother之间只建立邻居关系;
四 OSPF协议的度量方式
某接口的cost=参考带宽/实际带宽;
参考带宽默认是100;
计算结果如果是: 大于0小于2,那么cost=1
大于等于2小于3,那么cost=2
以此类推
更改cost的两种方式:
1. 直接在接口下配置;
2. 修改参考带宽(所有路由器都需要修改,确保选路一致性)
五 LS(链路状态) LSA(链路状态通告) LSDB(链路状态数据库) LSU(链路状态更新数据包)
LS:当一台路由器的一个接口宣告进了OSPF进程时,这个接口的信息(ip,掩码 等等)就会生成LS链路状态;
六 域内(area内)路由计算
域内路由计算是通过1类LSA和2类LSA实现的
1类LSA(Router):是用来描述路由器自身直连链路状态的LSA,他有四种形态Stubnet,p2p,transnet,vlink
Stubnet: 用来描述一条路由信息的(叶子节点)
p2p: 用来描述网络类型为p2p或p2mp的邻居信息的(树干信息)
transnet: 用来描述广播网络或NBMA网络的邻居信息(树干信息即伪节点)
vlink:
2类LSA(Network):当网络类型为广播或者NBMA时,使用DR所在接口信息生成伪节点。2类LSA是用来描述伪节点信息的。2类LSA里面包含树干信息(该广播网络中其他路由器)和叶子信息(该广播网络的网段)
每个路由器都在ospf进程里生成一个该area的LSDB,并通过这个LSDB计算出已自己为根的一颗ospf最短路径树,进而计算出该area内的各个路由
在一个area内无论router的组网方式如何1类和2类LSA都会在这个area的所有router之间同步,不会修改原始通告者
七 域间(area间)路由计算
7.1 域间路由计算
域间路由计算是通过3类LSA实现的
只在ABR上才将一个area的直连路由转换为其他area的3类LSA;
3类LSA在area内传递时,如果不是ABR,不改变宣告者;
3类LSA在area内传递时,如果是ABR,会将宣告者改为自己再传递到其他area
域间路由计算是用来在area间把各自有1类和2类LSA计算出的最优路由传递给其他直连area的。他是通过3类LSA(Sum-Net)来传递的,只有ABR路由器才能做这件事;
不是所有最优路由都能被转换为其他直连area的3类LSA,只有被加入全局路由表(不一定是以ospf入表)的路由才能被转换为3类LSA
7.2 域间路由防环三原则
- 在区域设计上,非骨干区域必须和骨干区域相连,形成逻辑上的星型无环拓扑;
- ABR不会将非骨干区域的3类LSA传递到骨干区域;如果ABR在骨干区域有邻居,那么不会计算非骨干区域的3类LSA
3. 1类LSA优于3类LSA
八 域(OSPF AS域)外路由计算
当路由器中有其他协议得到的路由,并且我想让ospf AS域内其他路由器也学到这个路由时,用路由引入;
域外路由计算是通过5类LSA和4类LSA实现的;
5类LSA是执行路由引入的ASBR产生的,并在整个OSPF AS内传播,并不会改变他的宣告者;
4类LSA是和ASBR在同一area的ABR产生的,通告者是ABR自己,他可以在整个OSPF AS中传播,但如果遇到ABR,这个ABR会将这个4类LSA的通告者改为自己后再传播
5类LSA(External):当执行了引入动作后,路由表中的路由会以5类LSA的形式存放在LSDB中,并且在整个OSPF域内(不是area而是整个OSPF AS域)进行传递(一个OSPF域内的路由器只有是邻接FULL关系就传)
4类LSA(Sum-Asbr):当ABR收到置位ASBR的1类LSA后,会将这个1类LSA转换为4类LSA传递到其他直连area,为了方便其他area的路由器计算这个5类LSA时能够知道ASBR在哪里
九 OSPF默认路由
default-route-advertise
或
default-route-advertise always
十 OSPF特殊区域
OSPF的区域设计要求所有非骨干区域必须连接到骨干区域,以形成逻辑上的星型结构;
所以所有流量都会通过骨干区域;
这样的情况下在网络设备选购上骨干区域一般都是性能好的路由器,而非骨干区域一般都是性能差的路由器;
但所有区域的路由器lsdb的数据量是一样大的,就这有可能使得非骨干区域路由器超负荷,为了解决这个问题需要减少非骨干区域路由器上的lsdb数量,四种特殊区域都是为了这个目的
10.1 Stub(末节区域)
Stub区域的目的是让该区域失去处理5类LSA的能力,所以ABR也不会向该区域传递4类LSA和5类LSA;
当一个区域配置成Stub区域时,发出的hello包中Ebit置位为0,代表该区域没有处理外部路由的能力;
在Stub区域中ABR会产生一条3类缺省路由;
Stub区域的配置方法:在IR和ABR上的区域视图下键入stub
10.2 完全Stub(完全末节区域)
完全Stub区域是在Stub区域的基础上,将该区域内的3类LSA也去掉;
完全Stub区域中只有本区域的1类和2类LSA,以及ABR下发的3类缺省路由;
Stub区域的配置方法:在IR的区域视图下键入stub;在ABR的区域视图下键入stub no-sumary