一、概述
1、OSPFv2
1.OSPF是一个基于链路状态的内部网关协议,基于IP协议,在网络层对应的协议号为89。
2.OSPF采用SPF算法计算路由,可以达到路由快速收敛的目的。
3.OSPF将接口的信息包括接口的IP地址、掩码、所连接的网络的类型、连接的邻居等所有这些链路状态的集合形成链路状态数据库LSDB。
4.OSPF采用组播形式收发报文,这样可以减少对其它不运行OSPF路由器的影响。
5.OSPF支持无类型域间路由CIDR、对等价路由进行负载分担、报文加密。
6.OSPFv2是面向IPv4网络的内部网关协议,基于链路状态算法,通过交换链路状态通告LSA来构建网络的完整拓扑图。
7.OSPFv3是面向IPv6网络的I内部网关协议,支持IPv6地址格式和网络需求,支持IPv6 链路本地地址 Link-local address和全球单播地址 Global unicast address、IPsec安全性功能。
8.OSPF提供了主从协商机制,可以保证可靠的传输,全网D 路由器保持同样的链路状态数据库LSDB,当网络拓扑发生变化时,需要携带的变更信息较少,通过IP协议即可完成。
9.OSPF不同于RIP协议采用UDP协议进行传输,RIP协议需要周期性地全网广播路由信息,路由信息数目较大,使用UDP协议可以提高效率。
2、OSPFv3
1.OSPFv3 支持IPv6地址格式和网络需求,并保留了OSPFv2的核心工作机制。
2.OSPFv3引用了链路本地地址 Link-local address 和 全球单播地址 Global unicast address。
3.OSPFv3引入Type 8、Type 9,解决了在IPv6环境中路由信息传播的问题。
4.Router-LSA (Type 1)不再包含IP地址信息,仅描述路由器的拓扑连接情况。
5.Network-LSA (Type 2)Network-LSA 不再包含IP地址信息,仅描述网络拓扑。
6.Inter-Area-Router-LSA (Type 4):描述了到达本自治系统内的ASBR的路由。
7.AS-external-LSA (Type 5):描述了到达其他自治系统的路由。
8.OSPFv3的LSA可以根据U位(Unknow bit)的不同值,决定LSA的泛洪范围,而OSPFv2中LSA的泛洪范围较为固定。
3、cost 度量值
OSPF使用cost路由度量值,cost=100M/接口带宽,100M是默认参考带宽,OSPF路由的cost是所有入接口cost值的总和,越小越优。
4、进程号
1.启用OSPF时不指定进程号,默认情况下,系统会自动为OSPF生成进程号为1的进程。
2.只要OSPF服务开启,就会生成一个进程号为1的OSPF进程,这个默认值是固定的,适用于大多数网络设备和服务。
二、区域类型
1、骨干区域 Area0
1.骨干区域是OSPF网络的核心,连接了所有的区域,骨干区域是所有非骨干区域的中介,所有非骨干区域都必须直接或间接与骨干区域相连。
2.骨干区域不可被分割,负责汇总所有区域的路由信息,并通过路由边界路由器ABR传递给其他区域。
3.骨干区域还承担着防止路由环路的任务,非骨干区域之间的通信必须通过骨干区域中转。
2、非骨干区域
1.非骨干区域通过骨干区域进行通信,不直接传播到其他非骨干区域。
2.非骨干区域通常使用除0以外的区域编号,进行路由汇总,减少路由表的规模。
3.非骨干区域与骨干区域之间的通信通过区域边界路由器ABR来实现。
3、非纯末梢区域 NSSA
1.NSSA区域允许在内部引入自治域外的路由信息,同时限制了这些外部路由信息的传播范围,避免了外部路由信息的泛洪。
2.NSSA区域以Type 7 LSA的形式在区域内传播,并将收到的Type 7 LSA转换成Type 5 LSA,进而将外部路由信息通告到其他区域。
4、末梢区域 Stub Area
1.Stub区域用于简化路由器的路由表,减少路由信息传递的数量。
2.Stub区域末梢区域通常用于网络的边缘区域,以隔离外部复杂的路由信息。
3.Stub区域不会收到来自非OSPF路由器的外部路由信息,例如LSA 4、LSA 5。
4.当Stub区域内的路由器需要访问区域外的网络时会使用ABR提供的默认路由。
5.Stub区域不允许存在ASBR,除非ABR同时也是ASBR。
5、区域划分的作用
1.区域划分是为了简化路由器的LSDB规模,将自治系统划分为多个区域,以减少路由更新的频率和路由表的规模,减少网络流量。
2.自治系统被划分为多个区域,每个区域内部的路由器只需要维护本区域的路由信息,就大大减少了LSDB的规模。
3.区域划分还有助于减少路由更新的数量,因为只有在区域内的拓扑发生变化时才需要更新LSDB。
三、路由类型
1、区域内路由 Intra Area
1.Intra Area路由是OSPF 区域内部的路由,区域内路由信息通过链路状态通告LSA在区域内进行洪泛。
2.OSPF使用SPF算法来计算Intra Area路由,当路由器接收到链路状态更新时会重新计算到达区域内所有目的地的最短路径,并据此更新其路由表。
2、区域间路由 Inter Area
1.Inter Area路由是不同区域间的路由信息传递,涉及到更广的地理范围和更多的网络元素。
2.自治系统被划分为多个区域,区域之间的路由信息则通过特殊的区域边界路由器ABR进行传递。
3.ABR向另一个区域发送数据包时会查找自己的路由表,找到通往目标区域的最佳路径。
4.Inter Area路由信息传递通过Type 1 LSA完成,每个ABR会生成Type 1 LSA,这些Type 1 LSA会被洪泛到整个自治系统AS中。
3、第一类外部路由 Type1 External
1.第一类外部路由 Type1 External是OSPF自治系统AS内部路由与AS外部路由的结合体。
2.其开销值cost的计算方式是即将AS内部的开销值与AS外部的开销值相加,即cost = 本设备到ASBR的开销 + ASBR到该路由目的地址的开销以此来决定路由的优先级。
3.Type1外部路由的优先级高于第二类外部路由Type2 External,当所有路径都是Type1,则会进一步比较它们的总开销,即内部开销加上外部开销,在Type2外部路由之间的比较中,则只比较外部开销,如果外部开销相同,再比较内部开销。
4、第二类外部路由 Type2 External
1.第二类外部路由Type 2 External:描述了从OSPF 自治系统内部到外部目的地址的路由,但其可信度比较低。
2.计算第二类外部路由的开销时,只考虑ASBR到目的地址的开销,忽略本地的开销,第二类外部路由的度量值只反映到达ASBR以外的路径成本。
3.第一类外部路由Type 1 External 优先级高于第二类外部路由,在相同的目的地址有多种路由选择时,OSPF会优先选择Type 1路由。
四、路由器类型
1、指定路由器 DR
1.DR负责在广播型或多接入网络环境中减少路由器间的路由信息交换提升网络效率,避免了不必要的路由信息重复传播,节省了带宽资源。
2.DR向网络中的其他路由器分发链路状态信息,并维护一个完整的链路状态数据库。
2、备份指定路由器 BDR
1.BDR作为DR的备份,BDR在DR失效时接替其工作。
2.BDR的存在提高了网络的稳定性和可靠性,保证了路由信息的连续性。
3、DR、BDR选举
1.DR选举:在每个网段中,根据Router ID的大小选举出DR。如果Router ID相同,则比较优先级,优先级较高的路由器成为DR。如果优先级也相同,则使用IP地址较小的作为DR。
2.BDR选举:在DR选出后,剩余路由器中优先级第二高的路由器成为BDR。
3、内部路由器 IR
1.IR 所有接口都属于同一个OSPF区域,IR只维护与自己直接相连的网络的路由信息,不会关心其他区域的路由信息。
2.IR可以在其所属的区域内部转发数据包,并维护该区域内的链路状态数据库LSDB。
3.IR需要维护区域内所有路由器的链路状态信息。
4、骨干路由器 BR
1.BR 至少有一个接口属于骨干区域,负责核心部位传输数据,实时更新路由表。
2.BR连接不同的网络区域,确保数据包能够沿着最优路径进行传输。
5、边界路由器 ABR
1.ABR 在骨干区域与非骨干区域之间,负责将区域内路由信息汇总,并向其他区域传播。
2.ABR 生成链路状态通告LSA并在骨干区域中泛洪出去,ABR将LSA用作区域间路由的汇总聚合,从而减少了非骨干区域中的路由表项。
3.ABR 同时属于OSPF主干网络和相连区域,控制不同区域之间的路由信息传递范围、避免区域间环路。
配置
6、自治系统边界路由器 ASBR
1.ASBR 连接OSPF自治系统与其他自治系统或非OSPF网络,用来与其他自治系统AS交换路由信息,只要一台OSPF设备引入了外部路由的信息,它就成为ASBR。
2.ASBR负责将外部路由信息引入 OSPF 域内,同时也将OSPF域内的信息传递给其他路由协议。
四、报文类型
1、Hello 报文
周期性发送,用来发现和维持OSPF邻居关系。
2、LSA 链路状态通告报文
1.LSA用于在路由器之间通过组播的方式交换链路状态信息,以构建出一个完整的链路状态数据库LSDB,进而使用SPF算法计算最短路径。
2.LSA 协助路由器构建、维护路由表,网络拓扑发生变化时,路由器会通过LSA更新其LSDB,并重新计算路由,以确保数据包始终能够沿着最佳路径传输。
3.路由器之间建立邻接关系,通过数据库描述报文DBD交换LSDB摘要,进行数据库同步。
3、LSDB 链路状态数据库报文
1.LSDB存储网络中所有路由器的链路状态信息。
2.LSDB中的信息来源于链路状态通告LSA,这些LSA由路由器生成并广播到整个自治系统AS。
3.所有路由器都有相同的LSDB,因此它们可以构建出网络的全局拓扑图。
4.LSDB保证路由器之间能够快速、准确地同步网络拓扑信息。
4、DD 数据库描述报文
1.DD报文在邻居路由器之间进行数据库的同步,交换数据库描述信息,从而能够计算出正确的最短路径树。
2.在邻居关系建立过程中,路由器之间会交换DD报文,以确定彼此的链路状态数据库LSDB是否一致,通过比较这些信息,路由器可以确定需要交换的LSA信息。
5、LSR 链路状态请求报文
1.LSR报文用于向邻居路由器请求特定的链路状态信息。
2.当路由器需要更新LSDB时会发送LSR报文给邻居路由器,请求那些尚未在自己的LSDB中的LSA信息。
3.接收LSR报文的邻居路由器会响应链路状态更新报文LSU,其中包含了请求的链路状态信息。
6、LSU 链路状态更新报文
1.LSU报文用于向邻居路由器发送链路状态更新信息。
2.当路由器检测到链路状态变化时,它会使用LSU报文通知邻居路由器更新链路状态数据库,其中包含完整的LSA信息。
7、LSAck 链路状态确认报文
1.LSAck报文用于确认接收到LSU报文。
2.路由器接收到LSU报文后,会发送LSAck报文给发送方,以确认接收到了更新信息。
3.LSAck报文中包含确认接收的LSA列表。
4.如果LSA未能成功接收,路由器不会发送LSAck报文,发送LSU的路由器将在一段时间后重传未被确认的LSA。
8、七种类型LSA
1.Type 1,路由器LSA(Router LSA),由每个路由器产生,用于描述路由器的直连接口状态、Cost值。
2.Type 2, 网络LSA(Network LSA),由指定路由器DR产生,描述DR连接的所有路由器信息。
3.Type 3,路由器摘要LSA(Network Summary LSA),由边界路由器ABR产生,用于通告区域间的路由信息。
4.Type 4, 自治系统边界路由器摘要LSA(ASBR Summary LSA),由边界路由器ABR产生,通告到ASBR的路由信息。
5.Type 5,自治系统外部LSA(Autonomous System External LSA),由ASBR产生,通告到达OSPF自治系统外部的路由信息。
6.Type 7,NSSA External LSA,由ASBR产生,在非纯末梢区域内部泛洪,用于通告到OSPF自治系统外部的路由信息。
7.Type 8,(OSPFv3)链路LSA(Link-LSA),用于通告链路本地地址和IPv6前缀信息。
8.Type 9,(OSPFv3)区域内前缀LSA(Intra-Area-Prefix-LSA),用于在区域内通告IPv6前缀信息,取代OSPFv2中Type 2的功能。
五、工作过程
1、建立邻居关系
1.RouterA的某一接口上激活OSPF协议,使用组播地址224.0.0.5 发送Hello报文,此时RouterA认为自己是DR路由器(DR=1.1.1.1),但不确定邻居是哪台路由器。
2.RouterB收到RouterA发送的Hello报文后,在报文中的Neighbors Seen字段中填入RouterA的Router ID(Neighbors Seen=1.1.1.1),发送回应的Hello报文给RouterA,表示已收到 RouterA的Hello报文,并且宣告DR路由器是RouterB(DR=2.2.2.2),然后RouterB的邻居状态机置为Init。
3.RouterA收到RouterB回应的Hello报文后,将邻居状态机置为2-way状态,下一步双方开始发送各自的链路状态数据库LSDB。
2、主/从关系协商、DD报文交换
1.RouterA 发送DD报文,宣称自己是Master(MS=1),并规定序列号Seq=X,I=1表示第一个DD报文,报文中不包含LSA摘要,只为协商主从关系。
2.RouterA和RouterB先了解对端数据库中哪些LSA需要更新,如果某一条LSA在LSDB中已经存在,就不再请求更新。RouterA和RouterB 先发送DD报文,DD报文中包含对LSDB中LSA的摘要描述。
3.在DD报文发送过程中需要确定双方主从关系,Master 定义序列号Seq,每发送一个新的DD报文将Seq加1,作为Slave的一方,每次发送DD报文时使用MasterDD报文中的Seq。
4.RouterB收到RouterA的DD报文后,将RouterA 邻居状态机改为Exstart,并且回应DD报文,由于RouterB的Router ID较大,所以在报文中RouterB认为自己是Master,重新规定序列号Seq=Y.
5.RouterA收到报文后,同意RouterB为Master,将RouterB的邻居状态机改为Exchange,RouterA使用RouterB的序列号Seq=Y来发送新的DD报文,该报文开始正式传送LSA的摘要,在报文中RouterA将MS=0,说明自己是Slave。
6.RouterB收到报文后,将RouterA的邻居状态机改为Exchange,发送新的DD报文来描述自己的LSA摘要,此时RouterB将报文的序列号改为Seq=Y+1。
7.上述过程持续进行,RouterA通过重复 RouterB的序列号来确认已收到RouterB的报文,RouterB通过将序列号Seq加1来确认已收到RouterA的报文,当RouterB发送最后一个DD报文时,在报文中写上M=0。
3、LSDB同步、LSA请求、LSA传输和应答
8.RouterA收到最后一个DD报文后,发现RouterB的数据库中有许多LSA是自己没有的,将邻居状态机改为Loading状态,RouterB已经有了RouterA的LSA,就不需要再请求,所以直接将RouterA的邻居状态机改为Full状态。
9.RouterA发送LSR报文向RouterB 请求更新LSA,RouterB用LSU报文来回应 RouterA的请求,RouterA收到后,发送LSAck报文确认。
10.上述过程持续到RouterA中的LSA与RouterB的LSA 完全同步为止,此时RouterA将RouterB的邻居状态机改为Full状态,当路由器交换完DD报文并更新所有的LSA后,此时邻接关系建立完成。
4、邻居关系建立总结
1.本端设备通过接口向外发送Hello报文与对端设备建立邻居关系。
2.两端设备进行主从关系协商、DD报文交换。
3.两端设备通过更新LSA完成链路数据库LSDB同步。
4.当与邻居的双向通讯初次建立时、当网段中DR、BDR发生变化时才会建立邻居关系。
5、邻居关系、邻接关系
1、邻居关系
1.邻居关系是在同一广播或多播网络中的OSPF路由器之间,通过交换Hello报文发现的相互联系。
2.当路由器接收到来自另一路由器的Hello报文,并发现其中Router ID是自己之前未知的邻居时会发送包含自己Router ID的Hello报文作为响应。
3.一旦双方都收到对方的Hello报文,它们之间就建立了2-way邻居关系,这个阶段中,路由器之间尚未建立邻接关系,它们只知道彼此的存在,但还没有交换任何链路状态信息。
2、邻接关系
1.邻接关系建立在邻居关系的基础上,当路由器之间完成邻居关系建立后会继续交换更多的Hello报文,并通过DBD报文交换链路状态数据库摘要信息。
2.随后它们会通过LSR报文请求对方发送完整的链路状态通告LSA,并通过LSU报文发送这些信息。
3.当路由器确认接收到对方所有LSA,并且发送包含自己LSA的LSU后,它们之间就建立了Full状态的邻接关系,此时路由器之间已经交换了足够的信息,可以正确地计算出到达网络中所有其他路由器的最短路径。
3、DR-other之间的邻居关系
1.在广播网络中,DR、BDR和网段内的每一台路由器都形成邻接关系,但DRother之间只形成邻居关系。
2.OSPF网络中,除了DR和BDR之外的路由器统称为DRother,DRother之间不需要建立邻接关系,DRother之间只需建立2-way邻居关系,这样可以减少网络中LSA的泛洪,提高网络的效率。
六、网络类型
1、广播类型 Broadcast
以组播形式发送Hello、LSU、LSAck报文,以单播形式发送DD、LSR报文。
2、非广播多址接入类型 NBMA
以单播形式发送Hello、DD、LSR、LSU、LSAck报文。
3、点到多点P2MP类型 Point-to-Multipoint
点到多点必须是由其他的网络类型强制更改,常用做法是将非全连通的NBMA改为点到多点的网络,以组播形式(224.0.0.5)发送Hello报文,以单播形式发送DD、LSR、LSU、LSAck报文。
4、point-to-point点到点P2P类型
以组播形式(224.0.0.5)发送Hello、DD、LSR、LSU、LSAck报文。
七、邻居机状态
1.Down:邻居会话的初始阶段,表明没有在邻居失效时间间隔内收到来自邻居路由器的Hello数据包。
2.Attempt:该状态仅发生在NBMA网络中,表明对端在邻居失效时间间隔dead interval超时前仍然没有回复Hello报文,此时路由器依然每发送轮询Hello报文的时间间隔poll interval向对端发送Hello报文。
3.Init:收到Hello报文后状态为Init。
4.2-way:收到的Hello报文中包含有自己的Router ID,则状态为2-way,如果不需要形成邻接关系则邻居状态机就停留在此状态,否则进入Exstart状态。
5.Exstart:开始主从协商,并确定DD的序列号。
6.Exchange:主从关系协商完毕后开始交换DD报文。
7.Loading:DD报文交换完成。
8.Full:LSR重传列表为空。
八、OSPF同RIP的区别
1、两者概念不同
1.RIP协议基于距离向量的路由选择协议,着重于数跳数。
2.OSPF协议基于链路状态的路由选择协议,着重于计算链路的度量值cost。
2、运行方式不同
1.RIP只和相邻路由器交换信息,交换的信息是自己的路由表,只按固定的时间间隔交换路由信息,当网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息。
2.OSPF可以向本自治系统所有路由器发送消息,且链路状态信息只能单向传送,更新过程的收敛性得到保证,其链路状态信息是与本路由器相邻的所有路由器的链路状态,只有当链路状态发生变化时才向所有路由器用洪泛此消息。
3、底层运行方式不同
1.RIP作用在传输层,用户数据包通过UDP协议来进行传送。
2.OSPF作用在网络层,直接用IP数据报传送,OSPF构成的数据报很短,减少了路由信息的通信量。