OSPF的原理---个人笔记

一.OSPF的概述

        1.OSPF全称是(open shortest path first)开放式最短路径优先,顾名思义:开放式表示免费,最短路径优先表示优选最短无环的路由。

        2.在常见的IGP(Interior Gateway Protocol,内部网关协议)中RIP(routing information protocol(路由信息协议))是最早的一批动态路由协议,它是一种距离矢量(矢量:有大小、方向的物理量)路由协议。但是它的最大跳数为16注定了它不能成为大型网络的动态路由协议奠定了基础。

        3.思科私有的IGRP和EIGRP协议以及后面出现的公有的OSPF协议,加速了RIP协议的淘汰。

        4.OSPF不同于RIP,OSPF是一种基于接口的链路状态路由协议。OSPF使用的端口号是89,而RIP使用的端口号是520.

            #所谓端口号是表示一台计算机中的特定进程所提供的服务。服务器端是有很多端口的,每个应用程序对应一个端口号,通过类似门牌号的端口号,客户端才能真正的访问到该服务器。为了更好的区分端口,则对其进行排序编号,即所谓的端口号。  --来源知乎

        5.OSPF使用SPF算法来计算最短路径树,RIP使用(Distance-Vector)算法来计算路由。一个是在所有邻居的关系中以自己为中心计算最短的路径树;一个是接收邻居传送来的路由。

二.OSPF的网络、接口和链路类型

        1.网络类型

                1.1 广播型网络

                       多路访问网络,如以太网,需要DR和BDR的选举,不用手动指邻居

                        通常以组播发送HELLO报文,LSU报文,和LSACK报文,以单播形式发送DD和LSR报文

                        DR和BDR给非指定路由器发送消息使用的是组播224.0.0.5

                        非指定路由器给DR和BDR发送消息使用的是组播224.0.0.6

                1.2 NBMA(非广播型网络)

                        连接的路由器超过两台但是没有广播功能,在帧中继网络和ATM网络中使用

                        所有数据包均单播发送,有DR/BDR的选举,需要手动指定邻居

                1.3 P2P网络                   

                        将一对路由器连接起来的网络,使用的是PPP HDLC协议

                        使用组播224.0.0.5来发送各种数据包

                        没有DR/BDR的选举,直接形成full邻接关系,不用手动指邻居

                1.4 P2MP网络

                        Hello包以组播形式发送,其他类型数据包由单播发送

                        不选举DR,不用手动指邻居

        2.接口类型

                2.1 brocast

                                以太网默认是广播类型接口

                2.2 P2P

                                P2P网络默认是P2P类型接口

                2.3 loopback

                                环回口默认是loopback类型接口(不会向该接口发送HELLO报文)

                2.4 point-to-multicast

                                非广播网络中默认是该类型接口

        3.链路类型

                3.1 Transit

                                描述一个从本路由器到一个Trans网段(例如MA网段或者NBMA网段)的链接,属于拓扑信息。

                3.2 Stub

                                描述一个从本路由器到一个Stub网段(例如Loopback接口)的链接,属于路由信息。

                3.3 Point-to-Point

                               描述一个从本路由器到邻居路由器之间的点到点链接,属于拓扑信息。 

                3.4 Virtual

                               虚链路,拓扑信息  

        4.三者的关系

                网络类型决定接口类型,接口类型决定链路类型!!!

三.OSPF的三张表

        #对于OSPF的来说,它的工作过程大概分为三大部分:建立邻居、同步LSDB、加表。

        首先我们来说一下这个建立邻居:

                1.对于OSPF来说,想要交换LSA来同步LSDB的话,需要先建立邻居关系

                2.以该图为例,建立OSPF邻居关系:

                        

                R1和R2想要建立ospf的邻居关系,以广播网络类型为例:

                        ospf的邻居状态一共有7种,分别是:down、init、two-way、exstart、exchange、loading、full。

                        2.1  首先ospf的初始化状态是down,该状态下表示没有收到邻居发来的224.0.0.5的hello组播报文

                        2.2  R1在down状态下,发送一个组播hello报文,ospfhello报文头部里面包含有自己的router-id、area等信息

                         2.3  R2收到R1发来的ospfhello组播报文后,因为自己也运行了OSPF协议,所以会接收该报文,并查看里面有没有包含自己的router-id,没有就将邻居关系置位init状态(该状态表示收到邻居的hello报文,但是里面没有包含自己的router-id)

                        2.4  R2将收到的hello报文重新封装,里面的source OSPF Router变为自己的2.2.2.2 然后将邻居的router-id 1.1.1.1 封装在active neighbor里面表示我收到了你的hello报文,现在给你回个信息。

                         2.5  R1收到的R2回复的hello报文,查看报文后,发现里面包含自己的router-id,于是将邻居关系置位two-way状态,并重复2.4中R2的操作。

                        2.6 R2收到R1的hello报文后,查看报文,发现里面包含自己的router-id,将邻居关系置位two-way状态。  --至此双向two-way状态建立完成。

                        

                        状态图简化版如下:

                      

  3.交互LSA,同步LSDB:

            3.1  因为是广播网络类型。需要选举DR和BDR,所以在two-way状态下停留40s选举DR和BDR。在40s结束后,如果brocast网络中hello报文中没有包含DR和BDR的的信息,

 就会开始选举DR和BDR,这个选举过程简化如下:

                首先所有同一广播网络下的OSPF路由器都是DRother,在DRother中先选举BDR,然后推举BDR为DR,然后重新选举BDR。

                 --为什么要先选举BDR:这是为了防止某些特殊情况下ospf进程卡死、所有状态无法切换。  --来源百度

                                3.2  选举完DR和BDR后,路由器状态置位exstart状态,在该状态下选举主从关系,选举主从关系要交互DD报文(不包含LSDB的摘要信息)。

                                     主从的选举的话,比较的是router-id的大小,大的为主 ,小的为从。

                                        报文里面包含:I、M、MS以及DD Sequence(序列号)--从设备使用主设备序列号发送报文,从设备必须对主报文回应,即使主设备发送的是空报文。

                                3.3  主从选举完成后,路由器状态置位为exchange状态,该状态下交互DD报文(包含LSDB的摘要信息),让路由器知道邻居和自己的LSA有什么不一样,方便后面请求缺少的LSA。

                                3.4  交互完DD报文后,路由器置位为loading状态。在该状态下,路由器发送LSR报文,请求自己缺少的LSA,对方路由器收到该报文后,会回复LSU报文(里面就是对方所请求的LSA),路由器收到LSU报文后,回复LSAck报文(里面包含LSA的头部信息)表示自己收到了该LSU报文。

以R1为例:

 R2回复的LSU报文

R1回复的LSAck报文

                  3.5  至此,LSDB同步完成,路由器的链路进入full状态。

        <R1>display  ospf peer  brief

                     OSPF Process 1 with Router ID 1.1.1.1
                          Peer Statistic Information
                 ----------------------------------------------------------------------------
                 Area Id          Interface                        Neighbor id      State    
                 0.0.0.0          GigabitEthernet0/0/0             2.2.2.2          Full        
                 ----------------------------------------------------------------------------

                                 

     4.运行SPF算法,将路由加入路由表

                4.1  构建SPF树。

                      根据Router-LSA和Network-LSA中的拓普信息,构建SPF树干。

                4.2  计算最优路由。

                        基于SPF树干和Router-LSA、Network-LSA的路由信息,计算最优路由。

                4.3  将最优或者负载分担的路由加入路由表中。               

四.OSPF的区域

       1.为什么要划分区域以及划分的区域种类?

                OSPF的区域本来是只有一个,但是因为当ospf路由器越来越多时,LSDB太过于庞大浪费资源以及当出现路由动荡,会造成大规模的SPF 重新计算,造成路由器负荷过重引发更大规模的网络问题。

                划分的区域类型一共有六种:骨干区域、普通区域、STUB区域、完全STUB区域、NSSA区域、完全NSSA区域。

       2. 四个特殊区域的作用

                2.1  stub(末节)区域:

                                拒绝4/5类LSA进入该区域,且ABR设备下发默认路由,不允许引入外部路由。

                 2.2 完全stub区域:

                                拒绝3/4/5类LSA进入该区域,ABR下发默认路由,不允许引入外部路由。

                 2.3  nssa(次末节)区域:

                                拒绝4/5类LSA进入该区域,允许引入外部路由。

                               引入外部路由时,会产生7类LSA。区域内的路由器需要访问其他区域引入的外部路由时,ABR会产生一条7类缺省LSA,通过该缺省LSA访问其他区域的外部路由。当本区域的外部路由向其他区域泛洪时,会在ABR上进行7转5之后,泛洪发送出去。

                  2.4 完全nssa区域: 

                                拒绝3/4/5类LSA进入该区域,允许引入外部路由。

                                 当本区域中的路由器需要访问其他区域间路由时,需要通过ABR下发的3类LSA缺省访问其他区域间的路由。当本区域路由器需要访问其他区域的外部路由时,通过ABR下发的7类LSA缺省去访问。

     为了防环,做了如下规定:

                域内:通过SPF算法(无环)

                域间:基于3类LSA防环

                        ABR不会计算从非骨干区域传来的3类LSA

                        非骨干区域必须与骨干区域相连

                        只有ABR(连接了多个区域,且在骨干区域有活跃的邻居和接口)可以传递三类LSA

                域外:  5类LSA没有防环机制,4类的防环机制类似于3类(因为也是要去找ASBR)

五.OSPF的路由汇总和路由过滤

      一.路由汇总

                        通过ospf的路由汇总,能够减小路由器的路由表,节约设备资源。

                1.路由汇总的场景: 

                         当OSPF域内某台ASBR(自治域边界路由器)设备重分布了大量的路由进入OSPF域内,而这些路由条目又是连续的,可以汇总成几条子网掩码更大的路由条目的时候;当OSPF域内某台ABR学习到大量的路由条目且是连续的,可以汇总成几条子网掩码更大的路由条目时。

                2.路由汇总的限制:

                        ospf路由汇总只能在ABR(区域边界路由器)及ASBR(自治系统边界路由器)上进行。

                3.区域间汇总:

                        [R1-ospf-1]asbr-summary 1.1.1.0 2.2.2.0 ?
                          cost              Set cost      --定义一个开销
                          distribute-delay  Set distribute delay  --设置发布时延
                          not-advertise     Do not advertise  --不通告该汇总路由
                          tag               Set tag      ---建立标签
                        

                 4.域内汇总:

                       [R1-ospf-1-area-0.0.0.0]abr-summary 3.0.0.0 10.0.0.0 ?
                          advertise      Advertise this summary (default)
                          cost           Set cost
                          not-advertise  Do not advertise this summary
                          <cr>           Please press ENTER to execute command

   二.路由过滤

              作用:  不将不需要的路由传递给某区域。

             方法:

 

六.OSPF的认证

        一.ospf的认证方式有接口和区域认证

        2.接口认证优先级大于区域认证

        3.当路由器配置了区域认证后,如果在本区域加入了其他路由器希望通过空认证或者接入/使用其他密码接口,就可以在路由器上针对新加入的接口配置基于接口的进行空认证/其他密码认证(也就是接口认证>区域认证)

        4.认证信息在OSPF的报文头部,所有OSPF报文都需要进行OSPF认证。

        5.认证的目的时为了验证报文来源的合法性,加密是保证数据的机密性。(所以认证≠加密,认证就像你登录需要账号密码,账号密码对了,你就可以登录)  --誉天胡桑

        二.认证的方式

        接口下:

        [R1-GigabitEthernet0/0/0]ospf authentication-mode ?
          hmac-md5  Use HMAC-MD5 algorithm
          keychain  Keychain authentication mode
          md5       Use MD5 algorithm
          null      Use null authentication
          simple    Simple authentication mode

        区域中:(区域中没有空认证)

        [R1-ospf-1-area-0.0.0.0]authentication-mode ?
          hmac-md5  Use HMAC-MD5 algorithm
          keychain  Keychain authentication mode
          md5       Use MD5 algorithm
          simple    Simple authentication mode

七.OSPF的虚连接

        一.vlink的作用

                1.用于连接没有和骨干区域直接相连的非骨干区域

                2.用于没有骨干区域的场景

                 3.用于骨干区域分割的场景

                4.用于骨干区域的备份

                5.用于优化OSPF的路径

        二.vlink的特点

                1、打破了OSPF设计原则,易出现环路的特点

                2、虚链路是一种过渡机制,初期设计规划的时候不应该出现

        三.防环规则

                1、建立虚连接之后产生的ABR不会向虚链路穿越的区域泛洪骨干网的3类LSA

        

 

                2、建立虚链路后产生的ABR,将骨干区域的3类LSA泛洪进其他区域时,必须在虚链路穿越的区域也学到这条3 类LSA(如果没有的话,area 2访问area 0时,穿过area 1时,area 1中没有该路由,直接丢弃。)

                

 

八.OSPF的高级特性

        一.PRC

                PRC(Partial Route Calculation,部分路由计算):

                         基于SPF计算出来的最短路径树,更新计算路由,只有叶子变化时使用,不涉及SPF计算。

                        在华为设备上,OSPF的PRC功能默认开启。

        二.I-SPF

                I-SPF(增量最短路径优先计算):

                        基于SPF改进,该算法只会计算受影响的节点的最短路径,不受影响的结点不计算

        三.FRR

                        FRR(快速重路由):

                            利用LFA(Loop-Free Alternates)算法预先计算出备份路径,保存在转发表中,以备在故障时将流量快速切换到备份链路上,保证流量不中断,从而达到流量保护的目的,该功能可将故障恢复时间降低到50 ms以内。(提前准备好备份链路和备份路径)

                        计算公式:

                                链路保护公式:Distance_opt(N,D)<Distance_opt(N,S)+Distance_opt(S,D)

                

                                节点保护公式: Distance_opt(N,D)<Distance_opt(N,E)+Distance_opt(E,D) 

         四.database overflow

                1.限制非缺省外部路由数量,避免数据库超限

                2.OSPF网络中所有路由器都必须配置相同的上限值,这样,只要路由器上外部路由的数量达到该上限,路由器 就会进入overflow状态,并同时启动超限状态定时器(默认时间位5s),路由器在5s后自动退出超限状态。

                3.Stub路由器也可以实现,当过载之后,一段时间内就不学习和计算非自身直连路由了

                                                                                                                                --誉天胡桑

九.OSPF与IS-IS的双向引入问题

        1. 双向引入的问题在与产生次优路由和环路

         2. 环路的产生:

                        当ospf与is-is双向引入时,在ospf中import的路由消失后,is-is会将该路由重传给ospf,形成环路。

                

 

解决方案:

                通过route-policy打标签,对发布出去的路由打上标签,对接收到的路由进行标签检查,允许则通过,不允许则丢弃。

       3.次优路径:

                                次优路由是由于ospf与is-is的协议优先级不一致导致的

                            解决方案:

                                        调整ospf的外部路由学习优先级小于IS-IS。

                                        

                                                                                        --个人学习资料,仅供参考

                                                                                                                  by in 100%丢包率

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值