OSPF基础
OSPF(开放式最短路径优先协议)
OSPF路由协议是用于网际协议(IP)网络的链路状态路由协议,具有路由变化收敛速度快、无路由环路、支持变长子网掩码(VLSM)和汇总、层次区域划分等优点。
OSPF协议是一种链路状态协议。每个路由器负责发现、维护与邻居的关系,并将已知的邻居列表和链路费用LSU(Link State Update)报文描述,通过可靠的泛洪与自治系统AS(Autonomous System)内的其他路由器周期性交互,学习到整个自治系统的网络拓扑结构;并通过自治系统边界的路由器注入其他AS的路由信息,从而得到整个Internet的路由信息。每隔一个特定时间或当链路状态发生变化时,重新生成LSA,路由器通过泛洪机制将新LSA通告出去,以便实现路由的实时更新。
Ⅰ.OSPF路由器分类:
区域内路由器IR(Internal Routers):该类路由器的所有接口都属于同一个OSPF区域。
区域边界路由器ABR(Area Border Routers):该类路由器可以同时属于两个以上的区域,但其中一个必须是骨干区域。ABR用来连接骨干区域和非骨干区域,它与骨干区域之间既可以是物理连接,也可以是逻辑上的连接。
骨干路由器BR(Backbone Routers):该类路由器至少有一个接口属于骨干区域。因此,所有的ABR和位于Area0的内部路由器都是骨干路由器。
自治系统边界路由器ASBR(AS Boundary Routers):与其他AS交换路由信息的路由器称为ASBR。ASBR并不一定位于AS的边界,它可能是区域内路由器,也可能是ABR
Ⅱ.Ospf分组:
①问候(Hello)分组
OSPF使用Hello分组建立和维护邻接关系。在一个路由器能够给其他路由器分发它的邻居信息前,必须先问候它的邻居们。
②数据库描述(Data base Description,DBD)分组
DBD分组不包含完整的“链路状态数据库”信息,只包含数据库中每个条目的概要。当一个路由器首次连入网络,或者刚刚从故障中恢复时,它需要完整的“链路状态数据库”信息。此时,该路由器首先通过hello分组与邻居们建立双向通信关系,然后将会收到每个邻居反馈的DBD分组。新连入的这个路由器会检查所有概要,然后发送一个或多个链路状态请求分组,取回完整的条目信息。
③链路状态请求(Link State Request,LSR)分组
LSR分组用来请求邻居发送其链路状态数据库中某些条目的详细信息。当一个路由器与邻居交换了数据库描述分组后,如果发现它的链路状态数据库缺少某些条目或某些条目已过期,就使用LSR分组来取得邻居链路状态数据库中较新的部分。
④链路状态更新(Link State Update,LSU)分组
LSU分组被用来应答链路状态请求分组,也可以在链路状态发生变化时实现洪泛(flooding)。在网络运行过程中,只要一个路由器的链路状态发生变化,该路由器就要使用LSU,用洪泛法向全网更新链路状态。
⑤链路状态确认(Link State Acknowledgment,LSAck)分组
LSAck分组被用来应答链路状态更新分组,对其进行确认,从而使得链路状态更新分组采用的洪泛法变得可靠。
Ⅲ.ospf报文类型:
①Hello报文:建立并维护邻居关系。Type=1
②DBD数据库描述报文:发送链路状态头部信息。(链路状态数据库摘要)Type=2
③LSR链路状态请求报文:把从DBD中找出的需要的链路状态头部信息传给邻居,请求完整信息。Type=3
④LSU链路状态更新报文:将LSR请求的头部信息对应的完整信息发给邻居。Type=4
⑤LSACK链路状态确认: 收到LSU报文后确认该报文。Type=5
Ⅳ.六种状态:
①Down:邻居的初始状态,表示没有从邻居受到任何信息
②Init:组播发送hello包,发现邻居(单方面建立邻居)
③Two-way:单播回复hello包应答,建立双向邻居;选举DR和BDR:首先查优先级,然后再查router—id来选DR
④Exstart:选主从路由器:主从关系是看MS位,1为0为从,如果都为1,则看router—id大的
⑤Exchange:交换链路状态数据库摘要,也就是交换DBD
注:DR/BDR是维护网络用的,比如网络拓扑发生改变时候,通过组播地址来维护LSDB
注:主/从路由器是初始化OSPF路由器的链路状态数据库用的,是exstart状态在建立邻接关系时候同步DBD
⑥Loading:根据DBD发送LSR请求更新链路状态条目,对方用LSU进行响应
⑦Full:路由条目学习完成
Ⅶ.报文类型及作用:
①链路信息主要包括:链路的类型;接口ip地址及掩码;链路上所连接的邻居路由器;链路的带宽(开销)
②协议号:89;version:版本,该字段值是2;type:类型;packet length:整个ospf报文的长度,单位是字节
Router ID:路由器ID;Area ID:此报文需要被通告到的区域;chescksum:校验字段;auth type:为0时表示不认证;为1 时表示简单的明文认证;为2时表示加密(MD5)认证;authentication:认证所需的信息
Ⅷ.OSPF的表:
①邻居表:记录了建立邻居关系的路由器
②LSDB(链路状态数据库):包含了本路由器上的区域的所有的链路状态信息,并实时同步
③路由表:经过SPF算法计算出的路由存放在OSPF路由表中
Ⅸ.cost值计算:
OSPF的流量使用IP协议89协议号,周期更新(缺省时间周期为30分钟)和增量更新(只更新变化的路由)。
Cost=10^8/带宽bps
Ⅹ.OSPF建立邻居的必要条件:
①Hello时间和dead时间,dead时间=4*hello时间(默认10s)
②routerID唯一
③区域ID相同
④认证类型相同;
⑤特殊区域相同;等
ⅩⅠ.Router-ID(使用IP地址的形式来表示):
①手工指定Router-ID。
②路由器上活动Loopback接口中IP地址最大的,也就是数字最大的。
③如果没有活动的Loopback接口,则选择活动物理接口IP地址最大的。
ⅩⅡ.DR/BDR/Drother:
①产生原因:当多台OSPF路由器连到同一个多路访问网段时,如果每两台路由器之间都相互交换LSA,那么该网段将充满着众多LSA条目,为了能够尽量减少LSA的传播数量,通过在多路访问网段中选择出一个核心路由器,称为DR(Designated Router指定路由器)
②DR不抢占
③先选举DR,再选举BDR备份指定路由器。选举规则:优先级>Router-Id
- 选举优先级最高的成为DR,优先级数字越大,表示优先级越高,次优先级的为BDR,优先级范围是0-255,默认为1,优先级为0表无资格选举
- 如果在优先级都相同的情况下,Route-Id 最大的成为DR,其次是BDR,
④所有路由器都与DR和BDR是邻接关系,Drother与Drother之间只是邻居关系。(交换hello包为邻居关系,还交换LSA才是邻接关系)
所有OSPF路由器,都能够接收和传递目标地址为224.0.0.5的数据包。只有DR和BDR才能接收目标地址为224.0.0.6的数据包。
ⅩⅢ.四种网络类型:
- 点到点网络 Hello时间10s;dead时间是hello的4倍
- 广播多路访问网络 Hello时间10s
- 点到多点网络 Hello时间30s
- 非广播多路访问网络NBMA Hello时间30s
广播和非广播网络都要进行DR和BDR的选举,而点到点和点到多点网络不进行DR和BDR的选举,也不存在DR和BDR。
广播网络(Broadcast网络)OSPF通常以组播方式(224.0.0.5和224.0.0.6)发送协议报文;链路层协议是Ethernet、FDDI;
非广播NBMA(Non-Broadcast Multi-Access)网络:以单播方式发送协议报文;链路层协议是帧中继、ATM或X.25;
点到点网络(Point-to-Point网络,或P2P网络)OSPF以组播方式(224.0.0.5)发送协议报文;链路层协议是PPP或HDLC
点到多点网络(Point-to-Multipoint网络,或P2MP网络)缺省情况下以组播方式(224.0.0.5)发送协议报文,也可以根据用户需要,以单播形式发送协议报文。由其他网络类型强制更改而来。常用做法是将NBMA改为点到多点的网络
接口下修改网络链路类型的命令:ospf network-type p2mp
ⅩⅣ.六类LSA:
①Router LSA
②Network LSA
③Network Summary(网络汇总)LSA
④ASBR Summary(ASBR汇总)LSA
⑤AS External(AS外部) LSA
⑥NSSA LSA
OSPF区域:骨干区域,标准区域,特殊区域(末梢区域,完全末梢,NSSA,完全NSSA)
划分区域作用:OSPF 中划分区域的目的就是在于控制链路状态信息LSA 泛洪的范围、减小链路状态数据库LSDB的大小、改善网络的可扩展性、达到快速地收敛。
ⅩⅤ.四种特殊区域:
①Stub Area(末梢区域)
把一个非骨干区域配置成stub区域,而stub区域路由器将从其它协议重分布到OSPF的路由条目(OE1、OE2)替换成默认路由指向骨干区域。
被设置为stub区域的区域不会学习其他区域的详细路由条目,为保证Stub区域能够到达自治系统外部,Stub区域的ABR将生成一条缺省路由(对应三类LSA),并发布给Stub区域中的其他路由器
该区域存在一个或多个ABR;不存在ASBR;该区域不能为区域0;该区域没有虚链路穿过;所有STUB区域的路由器上均做STUB配置。过滤4,5类lsa,ABR会产生缺省(默认)的3类lsa,区域内不能引入外部路由
②Totally Stub Area(完全末梢区域)
Totally Stub区域内的路由器对其他区域及自制系统外部的访问需求是通过本区域ABR所产生的三类LSA缺省路由实现的。与Stub区域配置的区别在于,在ABR上需要追加no-summary参数
将从它路由协议重分布到OSPF的路由条目(OE1、OE2)及OIA(区域间学习到的路由)全部替换成默认路由指向骨干区域
过滤3,4,5类lsa,ABR会产生缺省(默认)的3类lsa,区域内不能引入外部路由
③Not-so-Stubby Area(NSSA)
将从连接骨干区域出口的其它路由协议重发布来的(OE1、OE2)替换成默认路由指向骨干区域
OSPF NSSA区域(Not-So-Stubby Area)是在原始OSPF协议标准中新增的一类特殊区域类型。NSSA区域和Stub区域有许多相似的地方。两者的差别在于,NSSA区域能够将自治域外部路由引入并传播到整个OSPF自治域中,同时又不会学习来自OSPF网络其它区域的外部路由。
允许存在ASBR;该区域ASBR引入的外部路由产生七类LSA;区域所有的设备均需配置;该区域七类LSA传播到其他区域时,将有此区域的ABR转换成五类LSA;默认,该区域的ABR不会向此区域通告缺省路由。
过滤4,5类lsa,ABR会产生缺省(默认)的7类lsa,该区域能引入外部路由
④Totally Not-so-Stubby Area(完全NSSA)
将从连接骨干区域出口的其它路由协议重发布来的(OE1、OE2)及区域间学习到的路由(OIA)替换成默认路由指向骨干区域。
过滤3,4,5类lsa,ABR会产生缺省(默认)的3类lsa,该区域能引入外部路由
重点: nssa和stub根本区别就是nssa可以引入外部路由。而stub区域不可以引入。
ⅩⅥ.认证方式:
- 链路认证
- 区域认证
- 虚链路认证
认证方法:明文和MD5
ⅩⅦ.OSPF防环机制:
域内防环
通过SPF(Dijkstra) 算法,根据链路状态数据库的子集形成树。
区域防环
为了避免区域间的环路,ospf规定不允许直接在两个非骨干区域之间发送路由信息,只允许在一个区域内部或者骨干区域和非骨干区域之间发布路由信息。因此,每个区域边界路由器都必须连接到骨干区域。
区域间水平分割
ABR只会将三类LSA转发到骨干区域,如果始发的是本区域的路由是不会被再次注入进来的,目的是为了阻止环路。
LSA三类防环
为防止区域间的环路,OSPF定义了骨干区域和非骨干区域和三类LSA的传递规则。
所有非骨干区域均直接和骨干区域相连且骨干区域只有一个,非骨干区域之间的通信都要通过骨干区域中转,骨干区域ID固定为0。
OSPF规定从骨干区域传来的三类LSA不再传回骨干区域。
OSPF要求ABR设备至少有一个接口属于骨干区域。
路由策略和策略路由的区别:路由策略是通过修改路由表的路由条目来控制数据流量的可达性;而策略路由是通过用户制定的策略进行转发,且该策略优于路由表的转发。路由策略是基于路由表进行流量的转发,而策略路由是基于策略进行流量的转发。
ⅩⅧ.杂
①在MA网络中,若两端接口掩码不一致,邻居无法建立,因为在二类LSAnetworkLSA上需要描述掩码
②在p2p网络中,可以不考虑掩码。
③两端ospf网络类型不同,邻居可建立,可收到LSA但路由学不到。
④比较LSA新旧:
首先比较序列号,如果序列号越大,则越新。
如果序列号相同,则比较校验和,校验和越大越新。
如果校验和相同,则比较存活时间(LS Age),如果这些LSA中有一条存活时间为3600s,则认为该LSA是最新的,用于删除一条LSA。
如果所有LSA age不等于3600S,则判断LSA age的差值,如果大于900S(15分钟)则认为LSA age小的最新,如果小于900S则认为相同;
如果上述条件都一样的话,则认为这两条LSA是相同的,将本地的LSA保留。