OSPF协议报文

OSPF(Open Shortest Path First,开放最短路径优先)是一种内部网关协议(Interior Gateway Protocol,IGP),用于在同一个自治系统(Autonomous System,AS)内的路由器之间交换路由信息。

链路状态路由协议:比如OSPF、IS-IS、
    采用链路状态算法,层次式的链路状态,传递LSA

距离矢量路由协议:比如RIP、EIGRP
        1、路由器之间周期性的交换路由表
        2、交换的是整张路由表的内容
        3、水平分割技术

一、RIP和OSPF特性对比:

二、OSPF的主要特点包括:

链路状态协议:OSPF是一种链路状态协议,这意味着它维护一个关于网络拓扑的数据库,包括每个路由器与其邻居之间的连接状态。路由器之间交换链路状态信息,然后每个路由器使用这些信息来构建自己的网络拓扑图,并计算到达每个目的地的最短路径。
无类别域间路由(CIDR)支持:OSPF支持CIDR,这意味着它可以处理不同大小的IP地址块,从而提高了IP地址的利用率。
区域划分:OSPF允许将大型网络划分为多个区域(Area),每个区域运行一个OSPF实例。这有助于减少路由器之间的链路状态信息交换量,降低网络带宽的占用,并提高网络的稳定性。
多种路径计算:OSPF支持多种路径计算方法,包括最短路径优先(SPF)算法,以确保数据包能够沿着最优路径传输。
认证和安全性:OSPF提供了多种认证机制,如明文认证和MD5认证,以确保路由器之间交换的链路状态信息的安全性。
支持VLSM和子网划分:OSPF能够很好地支持可变长子网划分(VLSM)和子网划分,使得网络设计更加灵活。

三、Router-id:格式为点分十进制

官方文档:
    1、手动配置OSPF的Router-id
    2、环回接口IP地址最大的作为Router-id
    3、物理接口IP地址最大的作为Router-id

实际情况:
    1、手动配置OSPF的Router-id
    2、使用路由器全局router-id作为OSPF的Router-id
    3、全局router-id为设备第一个配置了IP并且UP的接口IP地址

    dis router id 查看路由器全局router-id
    DR与BDR的选举:
        先选BDR,再选DR

四、OSPF报文详解


1.HELLO报文

Hello报文
    用于发现、建立和维持邻居关系的


2.DD报文

DD报文
    链路状态信息摘要报文
    DD报文中的MTU
        DD报文中的第一个字段就是发出该报文接口的MTU值,正常来说,OSPF邻居建立是需要要求两端接口的MTU值保持一致,否则无法建立,但是华为默认不检查MTU值,因此一般会显示为0(默认MTU为1500)(思科默认检查MTU)
            可以手动开启MTU检测   接口下:ospf mtu-enable
            当接口开启MTU检测后,DD报文中MTU的值将正常显示,如果两端接口只有一端开启MTU检测,不影响邻居建立,必须两端同时开启MTU检测后才会生效

        如果slave路由器接口的MTU>master路由器的MTU,那么从路由器卡在exchange,主路由器卡在exstart状态
        如果master路由器接口的MTU>slave路由器的MTU,双方都卡在exstart状态(从发送较小MTU的DD报文,主可以收到,但是主MTU较大,发送给从无法收到)


3.LSR报文

LSR报文
    用于向邻居请求自身缺少的LSA
    当路由器收到LSR报文时,会根据报文中的LSA三要素在自身LSDB中查找相关LSA,并将其封装到LSU中回复。


4.LSU报文

LSU报文
    用于发送完整的LSA信息


5.LSAck报文

LSAck报文 
    用于确认收到的LSA,使用LSA头部信息做确认回复。


五、OSPF邻居状态机流程

1、两台路由器没有宣告OSPF之前,属于**DOWN**状态
2、宣告OSPF后,在收到第一个HELLO包后,将邻居的router-id放到自己的HELLO包内active neighbor字段发出,此时状态为**INIT**。
3、再次收到对方发来的hello包内active neighbor字段为自己的router-id,状态进入**2-way**。在init到**2-way**这个阶段,OSPF判断网络类型是否需要和邻居建立邻接关系,是否要发送DD报文。
4、双方分别发送DD报文,i=1,m=1,ms=1开始选举主从,两台路由器都认为自己是主,此时为**exstart**状态。
5、确定主从关系之后(router-id大的为主),从路由器发送DD摘要,i=0,m=0,ms=0其中m取决于后续是否还有摘要报文,此时从路由器是**exchange**状态,主路由器是**exstart**状态
6、主路由器收到DD摘要后,发送LSR。之后发送DD摘要给从路由器,i=0,m=0,ms=1。m取决于后续是否还有摘要报文,此时从路由器是**loading**状态,主路由器是**exchange**状态。
7、从路由器收到DD报文后,发送LSR。然后发送DD报文,i=0,m=0,ms=0。这个DD报文没有摘要信息,只为了告诉主路由器摘要交换完毕,且让主路由器从**exchange**进入**loading**状态。
8、双方路由器之间更新LSU之后,回复LSACK,进入**FULL**状态
扩展:两台设备无法建立邻居关系的原因
    1、两台设备的区域类型不一致
    2、两台设备发送HELLO包时间不一致
    3、两台设备的认证类型不一致
    4、两台设备的router-id冲突
    5、两台设备是否能ping通

六、OSPF报文的确认机制

1、hello报文,10s一个,40s老化
2DD报文,用seq做隐式确认主从(DD sequence:数值,双方设备随机发送seq数值,如果从设备认为自己比不过主设备,则会发送和主设备同样的DD seq数值)
  例如:R1->R2 seq:244
       R2->R1 seq:243
       R1->R2 seq:243   R2为主,R1为从  
3、LSR报文,使用LSU报文作为确认回复
4、LSU报文,使用LSAck报文作为确认回复

七、网络类型对OSPF建立邻居的影响

Broadcast:当链路层协议为以太网时,OSPF网络类型默认为广播型。Hello时间10s,dead时间40s。DR和BDR和DRother建立邻接,DRother之间建立邻居。组播地址:224.0.0.5  224.0.0.6。所有设备使用单播交互DD、LSR,所有设备固定使用224.0.0.5交换hello报文
P2P:建立邻接关系,当链路层协议为PPP/HDLC时,OSPF网络类型默认为点到点。Hello时间10s,dead时间40s。不选举DR和BDR,所有报文通过224.0.0.5更新
NBMA:当链路层协议为帧中继DR/ATM时,OSPF网络类型默认为NBMA。在OSPF进程中,还需要使用peer x.x.x.x指定对端邻居IP,NBMA有一个attempt状态。Hello时间30s,dead时间120s。需要选举DR和BDR。所有报文单播发送
P2MP:一般手动配置,多用于DSVPN技术,hellos时间30s,dead时间120s,不选举DR和BDR,直接建立邻接关系
广播和p2p可以建立邻接关系,但是无法传递路由信息
posted @   YZreal  阅读(63)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示