OSPF基础总结

OSPF基础总结

一、OSPF的5种基本数据包

HELLO ----- 用于邻居的发现,建立,保活(10s),里面含有router id,这个是唯一的,用于路由器建立邻居关系所用的身份标识。

DBD ---- 数据库描述包 ----里面包含了数据库目录信息(LSA的目录信息)

LSR ----  链路状态请求

LSU ---- 链路状态更新 ---- 里面携带各种LSA(里面携带真正的链路拓扑)

LSack ----- 链路状态确认

二、OSPF的状态机(用于描述建立邻居时停留在了哪一步)

1、DOWN:本地一旦发出hello包,进入下一状态

2、INit 初始化:本地接收到的hello包中若存在本地RID(router-ID),进入下一状态(和对方一起进入)

3、two-way 双向通信:邻居关系建立的标志。

   条件匹配:点到点网络直接进入下一状态;MA网络将进行DR/BDR选举(40s)(目的是为了消除重复更新),非DR/BDR间不能进入下一个状态;

4、Exstart预启动:双方使用的是类hello包的DBD包进行主从关系的选举,RID数值大为主(这里比较的Router id的大小),主优先进入下一状态。若MTU不一样的话,就停留在这个状态,MTU在OSI中是2层或3层 2层的大于3层。

         注意:这里使用假的DBD包进行主从选举时,证明条件匹配成功,开始建立邻接关系。

5、Exchange 准交换:这时候使用真正的DBD进行数据库目录的共享,需要ACK(因为IP协议是不可靠的的)

6、Loading 加载:使用LSR/LSU/LSack来获取未知的LSA信息;

7、Full 转发:邻接关系建立的标志;

三、OSPF工作过程

         将上述5种基本数据包和7种装态连接起来,就是ospf的工作过程了,也可用邻居表、路由表、数据表这三张表来说明ospf的工作过程:

         1、启动完协议后(down后),本地使用组播地址224.0.0.5收发OSPF的hello包,若收到的hello包中携带了本地的RID之后,邻居关系建立,生成邻居表

         2、此时进行条件匹配,匹配失败将维持邻居关系,仅hello包10s周期保活即可;匹配成功者间可以建立邻接关系,邻居间使用DBD进行数据库目录的比对;之后使用LSR查询目录中未知的LSA信息,对端使用LSU来携带传递LSA,最终需要LSack进行接收确认;当本地收集到区域内所有设备的LSA后,生成LSDB—链路状态数据库表

         3、LSDB建立完成后,本地基于SPF选路规则,计算本地到达所有未知网段的最短路径,然后将其加载到路由表中;完成收敛。

         4、收敛完成后,使用hello包10s周期保活以及30min周期的DBD比对(30min的周期更新为了弥补触发更新,这里使用的是正真的DBD),若不一致,将使用LSR/LSA/LSack来重新获取。

四、OSPF V2各个类型的LSA

1、路由器LSA(Router LSA)

         每一台路由器都会产生 1 类 LSA 通告。这个最基本的 LSA 通告列出了路由器所有的链路或接口,并指明了它们的状态和沿每条链路方向出站的代价,以及该链路上所有已知的 OSPF 邻居;另外,1 类 LSA 同时也指出了路由器是不是 ABR 或 ASBR 。这些 LSA 通告只会在始发它们的区域内部进行泛洪扩散。可以通过命令 show ip ospf database router 可以查看数据库中列出的所有路由器 LSA 通告。

2、网络LSA(Network LSA)

         2 类 LSA 是 DR 为区域中每个中转的广播网络或 NBMA 网络生成的。中转网络至少与两台 OSPF 路由器直接相连,诸如以太网等多路访问网络就属于中转网络。2 类 LSA 列出了构成中转网络的所有路由器(包括 DR 本身)和链路的子网掩码。中转链路的 DR 负责通告 2 类 LSA ,2 类 LSA 随后被扩散到区域内所有的路由器,2 类 LSA 不会跨越区域边界进行传播(如下图所示)。其链路状态 ID 为通告这个 2 类 LSA 的 DR 的 IP 接口地址。使用命令 show ip ospf database network 可以查看网络 LSA 通告的信息。请注意,和路由器 LSA 不同,网络 LSA 中没有度量字段。

3 、网络汇总 LSA( Network summary LSA )

         3 类 LSA 由 ABR 生成,它将一个区域内的网络通告给 OSPF 自治系统中的其他区域( 1 类和 2 类 LSA 是被限制在区域内的)。如下图所示,ABR 从区域内的其他路由器那里收到 1 类 LSA 后,向外发送 3 类 LSA ,以便将通过 1 类 LSA 获悉的网络通告给其他区域。3 类 LSA 只在一个区域内扩散,但 ABR 重新生成 3 类 LSA 以便将其扩散到其他区域。使用命令 show ip ospf database summary 可以显示链路状态数据库中的网络汇总 LSA 信息。

4、ASBR 汇总 LSA( ASBR summary LSA )

         仅当区域中有 ASBR 时,ABR 才会生成 4 类 LSA 。4 类 LSA 标识 ASBR ,并提供一条前往该 ASBR 的路由。前往外部自治系统的数据流要求路由表包含有关通告外部路由的 ASBR 的信息。链路状态 ID 被设置为 ASBR 的路由器 ID 。使用命令 show ip ospf database asbr-summary 可以查看 ASBR 汇总 LSA 的信息。这里要注意的是,其中目的地是一个主机地址,并且掩码是 0(通过 ASBR 汇总 LSA 通告的目的地将总是一个主机地址,因为它是一条到达一台路由器的路由)。

5、自治系统外部 LSA( Autonomous system external LSA )

         5 类 LSA 描述了前往 OSPF 自治系统外的网络的路由(也包括 OSPF 自治系统外部的缺省路由),它由 ASBR 发送并被扩散到整个 AS(如下图所示)。5 类 LSA 是链路状态数据库中唯一不与具体的区域相关联的 LSA 通告(即 O E1 和 O E2 路由不属于某个 Area ,是独立的)。5 类 LSA 通告将在整个自治系统中进行泛洪扩散。其链路状态 ID 为外部网络的网络号。使用命令 show ip ospf database external 可以查看 5 类 LSA 的信息。

         关于 E1 和 E2 外部路由:

         ●E1 :对于 O E1 外部路由,开销为外部开销加上分组经过的每条链路的内部开销。多个 ASBR 将同一条外部路由通告到同一个自治系统中时,应使用这种类型,以避免次优路由;

         ●E2(默认):O E2 路由的开销总是只包含外部开销。只有一台 ASBR 将外部路由通告到自治系统中时,使用这种类型。

7、NSSA 外部 LSA( NSSA External LSA )

         是指在非纯末梢区域( Not-So-Stubby Area ,NSSA )内始发于 ASBR 路由器的 LSA 通告。NSSA 外部 LSA 通告几乎和 5 类 LSA 通告是相同的。只是不像 5 类 LSA 通告那样在整个 OSPF 自治系统内进行泛洪扩散,NSSA 外部 LSA 通告仅仅在始发这个 NSSA 外部 LSA 通告的非纯末梢区域内部进行泛洪扩散。可以通过命令 show ip ospf database nssa-external 来显示 NSSA 外部 LSA 通告的信息。

五、OSPF的四种特殊区域

1、核心:不能存在ASBR。

<1>、末梢区域

         拒绝4/5类的LSA,ABR自动产生3类缺省发向该区域,方向为骨干区域。

<2>、完全末梢区域

         在末梢区域的基础上进一步拒绝3类的LSA,仅保留一条3类的缺省,先将该区域配置为末梢区域,然后仅在ABR上定义完全即可。

         注意:在配置全完末梢区域时,一定要先将其区域内所有设备调成至末梢区域,然后在ABR上调至完全末梢区域。

2、核心:存在ASBR

<3>、NSSA—非完全末梢区域

         该区域拒绝其他区域产生的4/5类LSA;不会自动产生3类缺省(容易出环路),本地的5类LSA基于7类转发,通过NSSA区域转发后转回5类;

         该特殊区域存在的意义在于拒绝其他区域的ASBR产生的4/5类数据,又为了避免环路的出现,默认不会自动产生缺省路由,导致无法访问其他的域外网段,所以在管理员确定无环路的情况下,可以手工添加缺省路由。

<4>、完全NSSA区域

         在NSSA的基础上进一步拒绝3类的LSA,自动产生3类缺省,先将该区域配置成NSSA,然后仅在ABR上完全定义即可。        

六、OSPF接口工作方式

网络类型                OSPF接口工作方式

环回                 LOOPBACK          无hello包  以32位主机掩码发送路由

点到点(HDLC/PPP)    POINT_TO_POINT      hello time 10s     不选DR

BMA(以太网)         BROADCAST           hello time 10s     选DR(DR位置一定放在中心点上)

NBMA(MGRE)         POINT_TO_POINT      hello time 10s     不选DR

         注意:点到点工作方式,仅适用于一个网段两个节点的网络;

         所以在MGRE环境下若适用tunnel口默认的工作方式,那么一个网段内若存在两个以上节点将出现邻居翻滚。

七、DR和BDR

         DR和BDR的选举规则:

  1. 每个多路访问接口都有一个优先级(0-255),优先级为0的路由器不具有选举权利,默认优先级为1,优先级越大越优先。通过命令ip ospf priority 来修改。
  2. hello包里面包含优先级字段,还包含了可能成为DR/BDR相关接口的IP地址。
  3. 当接口在多路访问网络上初次启动的时候,它把DR/BDR设置为0.0.0.0,同时设置等待计时器,等待计时器等于dead-interval(更改hello时间间隔,dead时间也相应改变,更改dead时间间隔,hello时间间隔不变)

         DR和BDR的选举:

  1. 邻居表中的2-way以后,检查邻居hello中的priority,DR/BDR字段,列出所有可以参加DR/BDR选举的邻居,所有的令邻居都宣称自己是DR/BDR(DR。BDR都是自己的接口地址)
  2. 在这个列表中创建一个没有宣称自己是DR的子集,因此宣称为DR的不能被选举为DBR。
  3. 在子集中,先比较优先级,然后比较RouterID,高的成为BDR。
  4. 在所有宣称自己的为DRhello中选举DR,先比较优先级,然后再比较router id,高的为DR。
  5. 如果没有人宣称自己为DR,那么在步骤3中选举的BDR成为DR。(稳定后DR/BDR不能抢占)。

         DR和BDR选举需要注意事项:

         1、多路访问网络中,每个路由器都会与DR和BDR同时形成邻接关系,其他路由器之间只是2-way关系。DR和BDR之间也形成邻接关系。

         2、DR和BDR是路由器接口的特性,并不是整个路由器的特性。

         3、DR和BDR信息被存放在接口数据结构表中。

         4、DR和BDR不能抢占,也就是在一个多路访问中先初始化启动的路由器可能成为DR/BDR,不能抢占。

         5、邻居表2-way后并不是马上选举DR/BDR,而是等待一个定时器,超时后才进行选举。在wait时间内等待其他邻居给我通告DR/BDR信息。wait时间内就收发hello。

 

附:

1、ospf为什么要划分区域?

         ●因为ospf是共享的是链路状态、没有必要和整个ospf域内所有路由器共享相同的DBD,所以,划分区域后数据库缩小,降低了了路由器对内存的消耗。

         ●在进行划分区域后,链路状态数据库减小,处理着较小的LSA,降低了对CPU的消耗

         ●防止LSA洪泛影响整个ospf域(只让其在区域内洪泛就行了)

2、OSPF特点

    ●区域概念,有效减少路由条目对CPU和内存的占用,将拓扑变化局限在本地区域内,相信的LSA洪泛控制。

    ●邻接关系,OSPF协议定义了一些路由器类型和网络类型,邻接关系的建立是交换hello信息的路由器类型和交换hello信息的网络类型决定的。

    ●每台收到从邻居路由器发出的LSA的路由器都会把这些LSA记录在它的LSDB中,并且发送一份LSA拷贝给这台路由器其他所有邻居。

    ●当这些路由器LSDB完全相同时,各自路由器就以自身为根,使用SPF算法算一条无环的最短路径拓扑图,从而构建自己的路由表。

 

 

 

你可能感兴趣的:(OSPF基础总结)