ospf (最短路径优先)
  是ieee公有的动态路由协议协议,市面上路由器基本上都支持,由ietf推荐,并且使用最广的IGP动态路由协议。在一个ospf进程内可以分出主干区域和多个非主干区域,有效的降低路由协议本身大量的广播对网络造成负担,并具有很好的可扩展性。它的优点甚多 具体的我就不说了。大家可以百度一下。
  
  
  
  
  
  
  ospf有三张表:
  
  邻居表:列出所有和本路由器直连的ospf邻居
  链路状态数据库:列出所有从自己邻居那里得到的lsa,并且在同一个区域的路由器,拥有同样的链路状态数据库
  路由表:在链路状态数据库中,通过spf算法得出的路由再添加到路由表中
  
  从时间角度上看先有邻居表 再有链路状态数据库 最后添加进路由表
  从空间角度上看邻居表在最底下,链路状态数据库建立在邻居表之上,ospf的路由表又建立在链路状态数据库上。
  
  
  
  
  
  
  邻居表:
  
  邻居表是由hello包建立和维护
  hello包包含以下信息:
  1.路由id:在ospf进程中的本路由器标识
  (选举顺序:手工设-loopback最大ip-活动物理接口最大ip)
  2.邻居
  *3.hello包时间间隔:广播链路10秒,40秒没收到就挂掉。NBMA是30秒,120秒没收到就挂掉
  *4.区域id
  5.路由器优先级
  6.DR的ip地址
  7.BDR的ip地址
  *8.认证密码
  *9.stub区域标记
  *注意:只有3489项匹配才能够建立邻接关系,这个很重要
  
  那么邻接关系是怎么建立的呢?
  分以下几个步骤:
  1.down (路由器A从运行ospf的接口以组播地址224.0.0.5发送hello包)
  2.init (所有收到从路由器A发送来hello包的路由器都把A添加到邻居表中)
  3.two way (所有收到A发来hello包的路由器都向其回发一个hello包,A收到这些包以后会检查这些包,如果包中含有自己的id,那么把那个路由器加到自己里来)
  如果是非广播链路就直接full了,广播链路需要在此同时选出DR/BDR
  4.exstart (DR/BDR与其他路由器建立相邻关系)
  5.exchange (由DR向其他路由器发送数据库描述数据包DBD)
  6.loading (发送链路状态请求包的过程)
  7.full (区域内所有邻居都同步了,每个链路都有相同的链路状态数据库了,可以转发数据了)
  
  
  为什么说邻居表属于最底层?
  不光因为要先建立邻居才能有链路状态数据库。而且邻居的建立是和物理网络链路是密切相关的
  在ospf看来物理网络链路类型分三种:
  1 点到点链路:如HDLC和PPP的串行链路,它们不支持广播和多播,它要求必须是full状态,所以也不需要DR/BDR
  2 广播链路:如以太网,令牌环,它们支持广播和多播,为了集中管理减少广播,需要选出DR/BDR
  3 非广播多路访问:如帧中继和ATM这些默认不传输广播流量但支持多点的广域网链路,这也需要DR/BDR(它默认不支持广播你可以手动设置成广播嘛 或者设成点到点链路那种)
  
  
  
  
  
  
  OSPF的区域
  
  ospf一般分为两个区域:主干区域(area 0)和非主干区域
  每个非主干区域都必须至少有一个路由器连接至主干区域,这台路由器叫ABR(区域边界路由器)
  连接并重分发至其他ospf进程或其他路由协议的路由器叫做ASBR(自治系统边界路由器)
  划分多区域有两个好处:一是减少每个区域的路由条目,进而减少设备内存消耗提高转发效率
  二可以利用ABR或ASBR的路由汇总,防止抖动
  
  非主干区域又可以分成几种类型:
  1.stub区域(末梢区域):只有域内/域间路由没有域外的(阻止lsa 4/5)
  2.totally stub(完全末梢区域):只有域内路由,然后一条默认路由从ABR出去(阻止lsa 3/4/5)
  3.NSSA(not-so-stub area):虽然是完全末梢,但可以允许外部路由进来
  
  另外,如果违反规定,非主干区域未直连至主干区域,可以用虚链路作为桥接进主干
  
  
  
  
  
  
  链路状态数据库(LSDB)
  
  LSDB起着承上起下的作用,它收集区域内每一个路由器收到的邻居信息,生成链路状态数据库,利用spf算法,算出最优路径,生成路由条目。概括的说LSDB在ospf中起着“地图”的作用
  
  LSDB是由各种LSA组成,下面列出常见的六个LSA类型:
  1.router lsa
  每一个路由器都会产生一条关于自身的router lsa,它包含本路由器直连链路信息列表并对ip前缀进行鉴别
  router lsa只在区域内泛洪,不会穿越ABR
  2.network lsa
  network lsa由DR产生,包含广播网络和NBMA网络信息如:ip,掩码,DRID
  network lsa只在区域内泛洪,不会穿越ABR
  3.summary lsa
  summary lsa由ABR产生,包含了区域内的LSA汇总,由router lsa+network lsa得出。包括网络号,掩码,metric(不包括接口)
  在整个运行本ospf进程中的路由域中泛洪
  4.asbr-summary lsa
  asbr-summary lsa由ABR产生,至包含了ASBR的route-id,目的只是告诉大家ASBR的位置
  在整个运行本ospf进程中的路由域中泛洪
  5.external lsa
  external lsa由ASBR产生,包含网络号,掩码,metric
  在整个运行本ospf进程中的路由域中泛洪
  7.nssa lsa
  NSSA 就是运行外部路由进入stub,
  nssa lsa只在NSSA区域内传播,然后在ABR上被转换成external lsa再向别的区域泛洪