OSPF(Open Shortest Path First)

Posted wendong-xia

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OSPF(Open Shortest Path First)相关的知识,希望对你有一定的参考价值。

---恢复内容开始---

1、概述

     路由协议OSPF全称为Open Shortest Path First,也就开放的最短路径优先协议,因为OSPF是由IETF开发的。

     OSPF的流量使用IP协议号89

     OSPF对网络没有跳数限制,支持 Classless Interdomain Routing (CIDR)和Variable-Length Subnet Masks (VLSMs),没有自动汇总功能。

     OSPF并不会周期性更新路由表,而采用增量更新,即只在路由有变化时,才会发送更新,并且只发送有变化的路由信息;事实上,OSPF是间接设置了周期性更新路由的规则,因为所有路由都是有刷新时间的,当达到刷新时间阀值时,该路由就会产生一次更新,默认时间为1800秒,即30分钟,所以OSPF路由的定期更新周期默认为30分钟。

     OSPF所有路由的管理距离(Ddministrative Distance)为110,OSPF只支持等价负载均衡。

     OSPF是典型的链路状态路由协议,路由器之间交换的并不是路由表,而是链路状态,OSPF通过获得网络中所有的链路状态信息,从而计算出到达每个目标精确的网络路径。

2、OSPF术语

      Router-ID

           RID是路由器在ospf中的唯一标识,选举原则,思科会自动在所有环回口中选择最大的IP,做RID,如果没有环回口,则选择活动的物理口IP最大的一个。同时也可以手动指定。

           RID绝对不可以重名,否则路由器收到的链路状态,就无法确认发起者的身份。

           注:如果一台路由器收到一条链路状态,无法到达该Router-ID的位置,就无法到达链路状态中的目标网络,Router-ID只在OSPF启动时计算,或者重置OSPF进程后计算。

      COST

           OSPF会自动计算接口上的Cost值,但也可以通过手工指定该接口的Cost值,手工指定的优先于自动计算的值。

           OSPF计算的Cost,同样是和接口带宽成反比,带宽越高,Cost值越小。到达目标相同Cost值的路径,可以执行负载均衡,最多6条链路同时执行负载均衡

      链路状态LSA

           链路状态(LSA)就是OSPF接口上的描述信息,例如接口上的IP地址,子网掩码,网络类型,Cost值等等,因为ospf路由器之间交换的并不是路由表,而是链路状态信息。

      OSPF区域

           因为OSPF路由器之间会将所有的链路状态(LSA)相互交换,毫不保留,当网络规模达到一定程度时,LSA将形成一个庞大的数据库,势必会给OSPF计算带来巨大的压力;为了能够降低OSPF计算的复杂程度,缓存计算压力,OSPF采用分区域计算,将网络中所

有OSPF路由器划分成不同的区域,每个区域负责各自区域精确的LSA传递与路由计算,然后再将一个区域的LSA简化和汇总之后转发到另外一个区域,这样一来,在区域内部,拥有网络精确的LSA,而在不同区域,则传递简化的LSA。

           OSPF的区域0就是所有区域的核心,称为BackBone 区域(骨干区域),而其它区域称为Normal 区域(常规区域),在理论上,所有的常规区域应该直接和骨干区域相连,常规区域只能和骨干区域交换LSA,常规区域与常规区域之间即使直连也无法互换LSA。

       Internal Router(IR)

           路由器所有接口都属于同一个区域。

       Area Border Router (ABR)

           一台OSPF路由器属于多个区域,即该路由器的接口不都属于一个区域。

      Autonomous System Boundary Router (ASBR)

           一台OSPF路由器将外部路由协议重分布进OSPF

            注:

              ★一台路由器可以运行多个OSPF进程,不同进程的OSPF,可视为没有任何关系,如需要获得相互的路由信息,需要重分布。

              ★每个OSPF进程可以有多个区域,而路由器的链路状态数据库是分进程和分区域存放的。

       DR/BDR  

            当多台OSPF路由器连到同一个多路访问网段时, 通过在多路访问网段中选择出一个核心路由器,称为DR(Designated Router),网段中所有的OSPF路由器都和DR互换LSA,这样一来,DR就会拥有所有的LSA,并且将所有的LSA转发给每一台路由器;DR就像

是该网段的LSA中转站,所有的路由器都与该中转站互换LSA,如果DR失效后,那么就会造成LSA的丢失与不完整,所以在多路访问网络中除了选举出DR之外,还会选举出一台路由器作为DR的备份,称为BDR(Backup Designated Router),BDR在DR不可用时,代替

DR的工作,而既不是DR,也不是BDR的路由器称为Drother,事实上,Dother除了和DR互换LSA之外,同时还会和BDR互换LSA。

            选举原则:

               首先比较优先,选举优先级最高的成为DR,优先级数字越大,表示优先级越高,被选为DR的几率就越大,次优先级的为BDR,优先级范围是0-255,默认为1,优先级为0表示没有资格选举DR和BDR。

               其次比较RID,如果在优先级都相同的情况下,Route-Id 最大的成为DR,其次是BDR,数字越大,被选为DR的几率就越大。

             注:★ Drother路由器将数据包发向目标地址224.0.0.6,只能被DR和BDR接收,其它Drother不能接收;而DR和BDR将数据包发向目标地址224.0.0.5,可以被所有路由器接收。

3、OSPF数据报

         Hello

              建立和维护OSPF邻居。

         DBD

             交换LSDB的摘要信息 

         LSR

              请求某条特定的LSA信息

         LSU

              发送给邻居,邻居所请求的LSA

         LSACK

               用于确定LSA的接受

4、OSPF启动状态

        Down →   路由器刚刚启用OSPF进程,Hello包还没收到,在此进程,可以向外发送Hello包,以试图发现邻居。

        Attempt →非广播多路访问中,有这个状态,需要手动指定邻居

        Init →只是OSPF路由器一方收到了另一方的Hello,但并没有双方都交换Hello,也就是对方的Hello中还没有将自己列为邻居。

        Two-way →双方都已经交换了Hello信息,并且从Hello中看到对方已经将自己列为邻居,并且如果是需要选举DR和BDR的话,也已经选举出来,但OSPF邻居之间并不一定就会交换LSA,如果不需要交换LSA,则永远停留在此状态,如果需要形成邻接并互相交换LSA,则状态继续往下进行,(比如Drother与Drother之间将永远停留在Two-way状态,因为Drother与Drother之间不需要交换LSA。)

        Exstart →在邻居之间交换完整的LSA之前,会先发送DBD,LSR,谁先发,谁后发,需要确定顺序,在此阶段,就是确定邻居的主从关系(Master---slave),由主路由器向从路由器发送信息。

           注:在任何网络环境下,OSPF在交换LSA之前,都需要确定主从关系。

        Exchange → 交换DBD的过程,发送LSR。

        Loading →邻居收到LSR,回复LSU。

        Full→表示数据库已经同步,数据库状态变成了收敛,但路由表却还在计算当中。

          注:除了Two-way和Full这两个状态,邻居停留在任何状态,都是不正常。

5、OSPF网络类型

       OSPF在运行时,必须考虑链路层的类型,称为OSPF网络类型,网络类型可分为如下几种:

              点到点

              点到多点

              广播

              非广播

        由于不同的网络类型,将会影响到OSPF的Hello时间与Dead时间,关系到DR与BDR的选举与否,影响到OSPF邻居是自动建立还是手工建立,总结如下表:

        

网络类型

Hello时间

选举DR/BDR

邻居建立方式

点到点

(Point-To-Point)

10秒

自动

点到多点

(Point-To-Multipoint)

30秒

自动

广播

(Broadcast )

10秒

自动

非广播

(Non-Broadcast )

30秒

手工

点到多点非广播

(Point-To-Multipoint Non-Broadcast)

30秒

手工

 

 

         注★OSPF邻居的成功建立,并不要求双方网络类型一致,但双方网络类型不一致,将可能导致链路状态数据库中的条目无法进入路由表。

 6、OSPF LSA类型

        类型 1  (Router Link)

             任何一台路由器都会产生,每台路由器的每个接口,都由自己的链路状态,即使有多个OSPF接口,也只有一条1类LSA,因为所有接口的链路状态会打包成一条1类LSA。

        类型 2  (Network Link)

              只有在选举DR/BDR的网络类型中才会产生,并却只有DR产生。

        类型 3  (Summary Link)

              类型3的LSA就是将一个区域的LSA发向另一个区域时的汇总和简化,ABR其实就是将LSA 1汇总和简化,变成LSA 3后再发到另一个区域的。

        类型 4  (ASBR Summary Link)

              ABR产生,主要告诉其它区域如何前往ASBR,泛洪范围ABR连接的其他区域

        类型 5  (External Link)

              ASBR产生,用于通告前往自治域系统外部的路由,并传遍整个ospf自主系统,泛洪范围整个自治域

        类型 7  (NSSA Link)

               NSSA将外部路由重分布进OSPF时,路由信息使用类型7来表示,LSA 7由NSSA区域的ASBR产生,LSA 7也只能在NSSA区域内传递,如果要传递到NSSA之外的其它区域,需要同时连接NSSA与其它区域的ABR将LSA 7 转变成LSA 5后再转发。

 

 

 

 

 

 

 

 

 

 

    

---恢复内容结束---

以上是关于OSPF(Open Shortest Path First)的主要内容,如果未能解决你的问题,请参考以下文章

OSPF实验演示(Huawei路由器设备配置)

AtCoderD - Shortest Path Queries 2 dp

Codeforces Round #731 (Div. 3) A. Shortest Path with Obstaclea

AOJ GRL_1_B: Shortest Path - Single Source Shortest Path (Negative Edges) (Bellman-Frod算法求负圈和

6-17 Shortest Path [4] (25分)

6-16 Shortest Path [3] (25分)