OSPF学习笔记

ospf基础简述

OSPF,即Open shortest  Path First,开放最短路径优先,它是一种链路状态路由协议,顾名思义,在OSPF网络中,路由器之间不会直接传递路由信息,而是传递一种链路状态信息,即LSA,这是OSPF的核心内容,并且ospf不是用广播而是使用组播224.0.0.5来传递链路信息,以加快路由收敛和减少网络冗余流量

ospf是一种基于接口的动态路由协议

OSPF通常封装在IP报文中,因此OSPF只支持运行在IP网络

OSPF目前有两个版本,OSPFv2和OSPFv3。

        OSPFv2支持ipv4网络,OSPFv3支持ipv6网络

ospf的五种报文机

        1)hello报文:

                它的作用很简单,就像它名字一样,用于发现邻居和维护邻居关系

                hello报文的默认周期是10s,而有一种dead time默认时间是hello报文的4倍

                dead time,即邻居失效时间,当达到或超过这个时间仍未收到对端发来的hello报文,ospf会认为该邻居失效

        2)DBD(DataBase Description)数据库摘要报文 :

                这里的数据库指链路状态数据库(LSDB),它拥有lsdb中的摘要信息,用于和邻居交换摘要信息,来检测邻居和我的链路信息是否一致或者是有什么不同,比如,若发现有我没有而邻居拥有的链路信息,则我将会向邻居发送LSR

        3)LSR(Link State Request)链路状态请求报文:

                即当我和邻居交换完DD报文发现哪些链路信息(LSA)有缺失时,会向邻居发送LSR来请求缺失的LSA

        4)LSU(Link State Update)链路状态更新报文:

                当邻居收到我发来的LSR时,邻居会将我缺失的LSA打包进LSU报文,然后发过来给我

        5)LSAck(Link Sate Ack)链路状态确认报文:

                当我收到邻居发来的LSU时,我再向邻居发送一个LSAck报文,以告诉邻居我已经收到了他发来的LSU。若我没有发送LSAck,邻居会不断尝试发送LSU,直到我发送一个LSAck

        ospf的七种建邻交互类型

        1)down:建邻的初始状态

        2)init(initialization初始化):表明我收到了对端发送的hello包,并将对端添加到邻居表

        3)2-way(二次握手):我向对端发送hello包,对端收到hello包后,因为我在init阶段已在他添加到邻居表,因此他将我添加到邻居表后,我们的邻居状态转变为2-way

         这里我要说两个概念,邻居邻接,到目前为止,ospf的邻居关系关系已经建立完毕,我们这里可以通过交互状态看出,邻居关系是无法交换链路信息的,只有邻接关系能够交换链路信息。

那么哪些路由器会停留在邻居关系,哪些路由器会停留在邻接关系呢?我们之后会讲,现在我们先来讲邻接状态交互

        4)Exstart(协商主从):路由器进入此状态后,由主动端向对端发送DD报文,注意此DD报文并没有携带实际的链路信息,而是用于携带协商主从的参数,如DD序列号。

        5)Exchange(交换):主从协商完毕后,由选举出的Master路由器向Slave路由器发送DD报文,Slave路由器收到DD报文会,检查DD报文的链路信息与自己是否一致,然后向Master路由器发送DD报文,实现DD报文交换

        6)Loading:DD报文交换完毕后,Master路由器和Slave路由器若校对了彼此收到的DD报文后发现有链路信息缺失,则会向对方请求完整的链路信息,以实现LSDB同步

        7)full:LSA重传列表为空,LSDB同步完毕

我们可以通过4567的状态交互看出邻接关系是如何交换链路信息的

lsa的六种类型

LSA我们分为三个大类

区域内LSA

区域间LSA

ospf域外LSA

区域内路由

       区域内路由有两种lsa,

                1类lsa(router lsa):每个ospf设备都能产生1类lsa,1类lsa用来描述本地有几个接口参与ospf计算,只能在区域内泛洪

                2类lsa(network lsa):由DR产生,用来描述在MA网络中所有与DR建立邻接关系的设备,还有描述DR自己。 

                区域内的ospf设备能够通过区域内泛洪的1类/2类lsa来计算到达区域内各个设备的路由

                 也许有人会问,为什么是在MA网络中?因为只有MA网络中才有DR,至于为什么在MA网络中才有DR,后面会讲。什么,你问什么是MA网络?MA网络,即Multi Access Network,多路访问网络,

        这就是多路访问网络,但其实只要是以太链路,就会存在DR

     

比如这样子,因此你可以简单的理解为,在以太网中有DR

区域间路由

        区域间路由有一种,即3类lsa 

        3类lsa(network summary lsa):3类lsa是由ABR(Area Border Router)区域边界路由器产生并发布的,用来描述一个区域到另一个区域的路由信息和路由开销

        这个应该很容易理解,我们继续下一个

ospf域外路由

        5类lsa(AS-External lsa)自治系统外部路由:

                5类lsa是由ASBR(Autonomous system boundary router)自治系统边界路由器产生并发布的,用于描述去往ospf域外的路由

                5类lsa还有个叫做FA的东西,FA(forward address),即转发地址,这个地址是一种优化,如果有FA地址,那么外部路由就不通过ASBR计算,而是通过FA计算,减少ASBR的路由负载压力,使用的不多,主要用于防环和解决次优路径,了解一下即可

                5类lsa还会顺带产生一种4类lsa,因为其他区域不知道asbr所在区域是哪里,这时候需要用4类lsa来描述去往asbr的路由,也是由ABR来发布,它和3类lsa有些相似,但是4类只描述去往asbr所在区域的路由,并不描述区域间路由,因此我没将它归类到区域间路由里

        还有一种7类lsa(NSSA LSA),和5类lsa基本一样,但只存在于nssa区域,当7类lsa向非nssa区域传递时,会经过一个7转5的过程

ospf的两种特殊区域

ospf有两种特殊区域,nssa和stub,

stub是末梢区域,而nssa很接地气了,叫no so stub area,即没那么末梢的区域,你可以自己润色一下,比如非完全末梢区域

Stub区域

stub有两种,一种是普通stub, 一种是totally stub完全末梢区域,两者有什么区别呢

stub区域里,允许存在1、2、3类lsa,屏蔽4和5类,并生成一条默认路由以去往asbr所在区域和外部路由。即替代了4类和5类lsa的功能

totally-stub区域,要比stub更末一些,只存在1、2类lsa,并生成一条默认路由以去往区域外和asbr所在区域和外部路由,即替代了3、4、5类lsa的功能

NSSA区域

已经有了stub为什么还需要NSSA呢,因为stub只有一条去往外部的默认路由,当网管需要进行精细操作时,则会比较困难或几乎无法操作,在此背景下,NSSA应运而生。

NSSA和stub一样,也分为普通nssa和totally nssa

NSSA(No So Stub Area)区域:

        NSSA和stub相比,nssa能够产生7类LSA(NSSA LSA)来描述外部路由以获得外部的明细路由,所以叫做‘no so stub area’

totally-nssa区域:

        字面翻译的话读起来有点奇怪,‘完全的没那么末梢区域’。。。

        所以我们一般叫做完全nssa区域

        totally-nssa没有3类lsa,也是依靠默认路由来去往区域外路由,基本和totally-stub一致,多了个7类lsa

ospf的路由汇总

        区域间路由汇总:

                在abr上配置,输入命令abr-summary,然后跟上汇总路由和子网掩码

       区域外路由汇总

                在asbr上配置,输入命令asbr-summary,然后跟上汇总路由和子网掩码

        这个了解下配置就行了,我们继续,一般有子网划分基础就会汇总

ospf 的BDR和DR概述

       上文讲的DR可能大家不太懂,这里我们展开来说说

        DR,即指定路由器(designated router),,负责在MA网络建立和维护邻接关系并负责LSA的同步

        DR与广播域内所有ospf设备建立邻接关系以交换链路状态信息(LSA),而非DR路由器之间不会建立邻接关系,仅仅是邻居关系,即停留在2-way关系,因此也不会交换LSA

        DR的选举原则:

                1)首先比较优先级(priority),越大越优先

                2)如果优先级相同,则比较router-id,同样是越大越优先,次之的则选举为BDR,可以理解为太子

                3)DR选举完,就像皇上一样,只要DR还活着,就不会被抢占,除非有人刺杀皇上

              BDR的作用就是,在DR被刺杀后,立刻登基当DR以快速接管DR

                BDR为何能接管DR呢,因为BDR在正常运行期间就已经持续监听并维护了与DR相同的链路状态数据库,就像双机热备一样

ospf的认证

        ospf在安全性方面也有所考量,有着三种认证方式来确保在网络中传输的路由信息的完整性、真实性、机密性

       null认证:即不做认证配置

        simple认证:这是一种明文加密,直接写将明文口令加入报文传输,安全性较低,抓包就能看到口令,不建议使用

        md5认证:将口令进行MD5等hash算法加密后加入报文,安全性较高

ospf的认证还可以按照认证类型分类为:

        接口认证:在接口进行认证方式配置

        区域认证:在ospf的区域视图下进行认证方式配置

        虚链路认证:和区域认证一样在区域视图下配置,配置和以上两个不太一样,不用打authenticaiton-mode,直接打认证方式,如

[Huawei-ospf-1-area-0.0.0.0]vlink-peer 1.1.1.1 md5 

这是虚链路下应用md5认证方式,即虚链路认证

 ospf的虚链路          

        虚链路实际上是一种用于解决ospf的一些错误设计情况下使用的一种临时性解决方案

        本质上是因为ABR不会将来自非骨干区域的3类lsa通告给非骨干区域,而是将非骨干区域的3类lsa通告给骨干区域,并将骨干区域的3类lsa通告给非骨干区域,以实现非骨干通过骨干区域到达其他非骨干区域

        因此,当出现两个连续的非骨区域时,会出现网络无法通讯的情况

这种时候,就要用虚链路来建立一条直连骨干区域的虚拟链路,以实现网络通信的正常传输

一个虚链路有两个端点,必须都是ABR。一头端点是骨干区域与非骨干区域之间的ABR,另一头则是两个非骨干区域之间的ABR,且两个ABR的物理链路必须同属一个区域,因此我们在配置虚链路的时候,是在ospf进程的区域视图下配置,至于是什么区域下配置,当然是两个ABR之间物理链路所属区域。

        配置:vlink-peer router-id 

        虚链路理解到这程度就可以了,因为一般也不怎么用,那我们继续下一步

ospf的度量值

ospf是以cost为度量值,每一个激活了ospf的接口都会为维护一个cost

cost的计算公式

   cost=参考带宽/接口带宽,参考带宽默认100Mbit,

可以通过配置修改,我记得是在ospf进程下配置bandwidth-reference

ospf的三个表项

        ospf有三个表项,这对于ospf网络的维护与排错至关重要

        peer表,lsdb表,路由表

        你们到时候做配置的时候看一看就差不多了,没啥特别要讲的

 ospf的特殊特性

      静默端口silent-interface,在ospf进程下配置

       端口被静默后,无法发送和接收ospf报文,但是直连路由仍然可以发布出去,即在ospf进程下network的路由,所以不影响直连路由的使用,因此静默端口的主要作用是节约系统资源消耗

         

        

                

                

相关推荐

  1. OSPF复习笔记--自用

    2024-05-14 13:22:03       42 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-14 13:22:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-14 13:22:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-14 13:22:03       82 阅读
  4. Python语言-面向对象

    2024-05-14 13:22:03       91 阅读

热门阅读

  1. Android自由控制阴影位置

    2024-05-14 13:22:03       31 阅读
  2. Vue setup函数

    2024-05-14 13:22:03       32 阅读
  3. Kotlin标准函数和静态方法

    2024-05-14 13:22:03       31 阅读
  4. iOS 键盘相关

    2024-05-14 13:22:03       28 阅读
  5. 实用的Chrome命令

    2024-05-14 13:22:03       26 阅读
  6. iOS 更改button文字和图片的位置

    2024-05-14 13:22:03       27 阅读
  7. Linux下安装netcore

    2024-05-14 13:22:03       31 阅读
  8. Linux sigfillset

    2024-05-14 13:22:03       27 阅读