一、ospf协议概述
  1、链路状态路由协议
   链路状态路由协议克服了距离矢量路由协议的缺点,具有一下特征:
   a、触发更新   b、全网更新   c、增量更新
   与距离矢量路由协议不同的地方在于,链路状态路由协议在发现网络拓扑有变化的时候,针对此变化生成一条,并以多播地址转发给所有的邻居,然后其他的设备在将此
  
   LSA增添到链路状态数据库(LSDB)中,每台路由其在通过自己的链路状态数据库,根据SPF算法在本地计算出到达目的地的最佳路径,并将此信息添加到路由表中。
   所以在距离矢量路由协议中,在网络上传送的是路由信息,而在链路状态路由协议中,在网络上传送的是LSA
   例:距离矢量路由协议:就如同到达麽个地方,别人告诉你该怎么走你就怎么走
       链路状态路由协议:就如同到达麽个地方,自己看地图,在地图中经过比较找出最好的路 
  2、链路状态路由协议
   链路状态路由协议要识别比距离矢量路由协议更多的信息,所以才能的出最精确的路由信息,为了做到更精确,链路状态路由协议要记录一下信息
   a、直连的邻居:记录在邻居表中,当邻居出现问题则马上重新进算路径
   b、网络或区域内其他路由器及其相连的网络 通过LSA来获得其路由器及网络信息,并存放在LSDB中
   c、前往每个目的地的最佳路径:通过SPF算法在本地根据LSDB计算 
                     ---------------------------------------------------------------------------------------------  
                           由于保存这些表需要大量的空间,也耗费了大量的内存资源,这也是链路状态路由协议的一个缺点。
                     ---------------------------------------------------------------------------------------------
  3、定义OSPF区域
   在OSPF网络中要求网络中有严格的层次结构,一共分为两个层次
   a、中转区域:主要功能为快速,高效地传输IP分组的OSPF区域。中转区域将其他类型的OSPF区域连接起来,通常中转区域是没有终端用户的,这个区域也叫做骨干区域
   b、常规区域:主要功能是为连接用户和资源的OSPF区域,常规区域通常是根据职能或地理位置来划分的,默认情况下不允许两个常规区域直接相连,所有区域必须都连接
              
               到中转区域,不允许数据穿过他的区域被称为常规区域。常规区域又分为几类,包括末节区域、此末节区域、绝对末节区域。
   区域内交换的是LSA,区域和区域之间交换的是路由信息,在两个区域之间传输信息必须经过主干区域,cisco仅以每个区域内的路由器应不超过50~100台
  4、定义OSPF邻接关系
   路由器发信邻居通过交换hello数据包;在检查hello中某几个参数或选项之后,路由器宣告邻居关系建立
   a、点到点网络:两个邻居直接变成完全毗邻关系
   b、广播网络:路由器只和DR、BDR形成完全毗邻关系和其他路由器则维持two-way关系
 
   c、路由更新和拓扑信息仅仅在建立了毗邻关系的路由器之间传递.
   d、一旦形成邻接关系,LSDBs将同步LSA
   e、LSAs将在区域内进行可靠泛洪
  5、OSPF的计算
   通过SPF算法以自己为根,计算出到达目的地的最佳路径
二、OSPF包类型
  1、在OSPF中一共有5种数据包 
 
   类型1   hello   作用:发现邻居并建立邻居关系
  
   类型2   DBD     作用:检查路由器的数据库之间是否同步
   类型3   LSR     作用:向另一台路由器请求特定的链路状态记录
   类型4   LSU     作用:发送请求的链路状态记录
   类型5   LSACK   作用:对其他类型的分组进行确认
这五种数据包都被直接封装到IP包中ospf分组不使用传输层的TCP或UDP。OSPF要求使用可靠的分组传输机制。由于没有使用使用TCP,ospf使用确认分组lsack来实现确认机制
 
  2、OSPF数据包
   a、在IP报头中有一个协议号,OSPF数据网络层的协议,所以协议号为89
   b、在ospf报文中包含了以下字段
    版本号:2 ;         包类型 用来区别OSPF的五种数据包 ;      包长度:此包的大小,以字节为单位  ; router ID:发送此信息的路由器的ID
    区域ID:指包来自那个区域  ;    校验和:对分组信息进行错误检测   ;  身份验证类型:指名路由器是否进行身份验证,明文还是密文。
    数据:  如果是 hello 包含一个一直邻居组成的列表
            如果是 DBD   为LSDB的摘要,其中包括所有已知路由器的ID,最后使用序列号以及一些其他字段
            如果是 LSR   包含需要的LSU的类型和路由器ID
            如果是 LSU   包含完整的LSA条目,一个OSPF更新分组中可以包含多个LSA条目
   c、hello数据包
    router ID    选择方法:手动设置  如果没有手动设置则选择环回接口地址最大的   如果没有环回口地址则选择物理接口地址最大的
    hello间隔和失效间隔 :每间隔多少秒发送一次hello包,4倍时间死亡
    邻居:以建立双向通讯关系的邻接路由器
    区域ID     优先级    DR和BDR的ip地址   身份验证密码:如果启用了对等路由器的密钥要相同  
    末节区域标记:末节区域是一种特殊的区域,两台路由器交换的hello分组中的末节区域标记必须一直,末节区域通过使用默认路由来减少路由选择更新
  3、交换过程和OSPF邻接关系状态
     经历了7种状态
  4、OSPF链路状态序列号
三、单区域OSPF的基本配置
    略
 
四、网络类型
  1、点到点链路   通过224.0.0.5发送信息
 
  2、广播网络     为了减小网络中的流量,每台路由器只会与DR和BDR建立邻接关系

五、多区域OSPF
  1、路由器的角色发生的变化     内部路由器               ABR            ASBR
  2、LSA的变化
   一类LSA:每个路由器都会生成针对其所属区域的路由器链路通告。路由器链路通告描述了路由器连接到区域的链路状态,只在区域内扩散。每种LSA的报头都是20字节,其
           
            中一个字段是链路状态ID,对于1类LSA,该字段的值为最初发送LSA的路由器ID。所以1类LSA  linkID为自己的RouterID  ADVrouter也为自己的RouterID。
   二类LSA:DR为多路访问网络生成的网络链路通告,描述了特定多路访问网络上的一组路由器。网络链路通告在网络所在的区域内扩散,2类LSA的链路状态ID为DR的IP接口
           
            地址。所以2类LSA linkID为DR的IP接口地址, ADVrouter为自己的RouterID.
   三类LSA:汇总LSA 是由ABR产生的,将区域内的信息进行汇总,3类LSA  linkID为目标网络的地址,ADVrouter为ABR的RouterID。
   四类LSA:汇总LSA 是由ABR产生的,描述了如何到达ASBR 所以4类LSA linkID为ASBR的RouterID, ADVrouter为ABR的RouterID
   五类LSA:AS外部链路状态通告是由ASBR生成的。描述了前往AS外部的目标网络的路由,被扩散到除末节区域和NSSA以外的所有地方。所以5类LSA linkID为外部网络的
           
           地址, ADVrouter为ASBR的RouterID
  3、OSPF路由选择表和路由类型
   O  OIA  OE1 OE2
  4、OSPF路由汇总
   a、区域汇总   
    在ABR上汇总   计算汇总后的地址    模式  ospf路由配置模式下       命令  area 0 range IP mask
   b、自治系统间汇总
    在ASBR上      计算汇总地址        模式  ospf路由配置模式下      命令  summary-address ip mask (将其他AS的路由汇总到OSPF内)
六、特殊的OSPF区域类型及配置
  1、区域类型
   a、标准区域:这是默认的区域类型,接受链路更新、汇总路由和外部路由。
   b、主干区域(中转区域):主干区域是中央实体,其他都与之相连。主干区域为区域0,其他区域都与之相连以交换路由信息。OSPF主干区域具备标准区域的所有特征
   c、末节区域:这个区域不接受关于AS外部的路由信息,如来自非ospf路由器信息。需要路由到AS外部的网络时,路由器使用默认路由。末节区域内不能有ASBR
   d、绝对末节区域:这种区域不接受自AS外部的路由,以及来自AS中其他区域的内部路由。需要将分组发送到区域外的网络时,使用默认路由。在末节区域内不能有ASBR
   e、NSSA:NSSA是对OSPF RFC补充。这个区域定义了一种特殊的LSA 7类的LSA。NSSA具有末节和绝对末节的规则
上述三类特殊区域的共同目的就是为了将默认路由注入到区域中,从而防止外部LSA和汇总LSA扩散到区域中。末节区域和绝对末节区域不接受外部路由(5类LSA)区域具有以
下特征时,可将其设置为末节或绝对末节区域
   a、只有一个出口,或者有多个出口但不要求选择选择最佳路径。如果区域有多个出口,一台或多台ABR将把默认路由注入到末节区域中。在这种情况下,前往其他区域或自
     
      治系统时可能采用次优路径:通过一个离目标网络较远的出口离开区域
   b、必须将末节区域中所有的OSPF路由器(包括ABR和内部路由器)都配置为末节路由器,这样他们才能成为邻居进行交换路由选择信息
   c、区域不会不会被作为虚链路的中转区域
   d、末节区域中没有ASBR
   f、不是主干区域(area0)
  2、末节区域
   将区域配置为末节区域可缩小区域中的LSDB,从而降低路由器的内存需求。外部网络LSA不会扩散到末节区域中,在这个区域中,默认路由(0.0.0.0)来前往OSPF AS的外
  
   部。如果信息要发送到某个网段在路由表中没有,则使用某人路由将信息转发到ABR,由ABR将信息转发出去。这样可以缩小末节区域中内部路由器的路由表。
   a、配置命令: (config-router)#area  area-id stub
   b、配置方法: ● 配置ospf
 
                ● 在区域中所有路由器上配置上述命令,从而将该区域指定为末节区域或绝对末节区域
   c、当配置完后,在末节区域的内部路由器上将不再存在外部路由信息,外部信息将由一条默认路由代替,并且标示为O*IA,在这里面要注意末节区域内所有的路由器都应该
     
      配置为stub
 
  3、完全末节区域
   完全末节区域是cisco特有的功能,进一步减少了路由表中的路由,在这里面3、4、5类的LSA都不能传播到绝对末节区域,ABR将默认汇总链路通告到绝对末节区域中,每
  
   台路由器都将最近的ABR当作前往区域外的网关,与末节区域相比,绝对末节区域是一种更好的解决方案,但条件是ABR是cisco路由器
   a、配置命令:(config-router)#area  area-id stub no-summary(禁止将汇总LSA扩散到绝对末节区域中)
   b、配置方法: ● 配置ospf
                ● 只在ABR上做
  4、NSSA
   OSPF NSSA特性是在RFC1587中定义的,它是对末节区域的一种非专用扩展。使得可以将有限的外部路由注入到末节区域中。
   将路由重分发到NSSA中时,将创建一种特殊的LSA7类LSA,这种LSA只能出现在NSSA中它是由NSSA ASBR生成的NSSA ABR将其转化为5类LSA,后者在OSPF路由域中传播