OSPF(Open Shortest Path First开放式最短路径优先)是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由。与RIP相比,OSPF是链路状态路由协议,而RIP是距离矢量路由协议。OSPF的协议管理距离(AD)是110OSPF的hello协议

Hello协议的目的:
  
1.用于发现邻居

  2.在成为邻居之前,必须对Hello包里的一些参数进行协商
  3.Hello包在邻居之间扮演着keepalive的角色
  4.允许邻居之间的双向通信
  5.用于在NBMA(Nonbroadcast Multi-access)网络上选举DR和BDR

Hello Packet包含以下信息:

  1.源路由器的RID
  2.源路由器的Area ID
  3.源路由器接口的掩码
  4.源路由器接口的认证类型和认证信息
  5.源路由器接口的Hello包发送的时间间隔
  6.源路由器接口的无效时间间隔
  7.优先级
  8.DR/BDR接口IP地址
  9.五个标记位(flag bit)
  10.源路由器的所有邻居的RID

OSPF的网络类型

  OSPF定义的5种网络类型:
  1.点到点网络 (point-to-point)
  2.广播型网络 (broadcast)
  3.非广播型(NBMA)网络 (non-broadcast)
  4.点到多点网络 (point-to-multipoint)
  5.虚链接(virtual link)
  1.1.点到点网络, 比如T1线路,是连接单独的一对路由器的网络,点到点网络上的有效邻居总是可以形成邻接关系的,在这种网络上,OSPF包的目标地址使用的是224.0.0.5,这个组播地址称为AllSPFRouters.

2.1.广播型网络,比如以太网,Token RingFDDI,这样的网络上会选举一个DR和BDR,
DR/BDR的发送的OSPF包的目标地址为224.0.0.5,运载这些OSPF包的帧的目标MAC地址为0100.5E00.0005;而除了DR/BDR以外发送的OSPF包的目标地址为224.0.0.6,这个地址叫AllDRouters.


3.1.NBMA网络, 比如X.25,Frame Relay,和ATM
,不具备广播的能力,因此邻居要人工来指定,在这样的网络上要选举DR和BDR,OSPF包采用unicast的方式。

  4.1.点到多点网络 是NBMA网络的一个特殊配置,可以看成是点到点链路的集合. 在这样的网络上不选举DR和BDR.

 5.1.虚链接: OSPF包是以unicast的方式发送。


所有的网络也可以归纳成2种网络类型:

  1.传输网络(Transit Network)
  2.末梢网络(Stub Network )

OSPF的DR及BDR

  在DR和BDR出现之前,每一台路由器和他的所有邻居成为完全网状的OSPF邻接关系,这样5台路由器之间将需要形成10个邻接关系,同时将产生25条LSA.而且在多址网络中,还存在自己发出的LSA 从邻居的邻居发回来,导致网络上产生很多LSA的拷贝,所以基于这种考虑,产生了DR和BDR.
  DR将完成如下工作
       1. 描述这个多址网络和该网络上剩下的其他相关路由器.

  2. 管理这个多址网络上的flooding过程.
  3. 同时为了冗余性,还会选取一个BDR,作为双备份之用.

DR BDR选取规则: DR BDR选取是以接口状态机的方式触发的.


DR的筛选过程
      1.优先级为0的不参与选举;
  2.优先级高的路由器为DR;
  3.优先级相同时,以router ID 大为DR;router ID 以回环接口中最大ip为准;若无回环接口,以真实接口最大ip为准。
  4.缺省条件下,优先级为1。
       5.要注意的是,当网络中已经选举了DR/BDR后,又出现了1台新的优先级更高的路由器,DR/BDR是不会重新选举的。
       6. DR/BDR选举完成后,DRother只和DR/BDR形成邻接关系.所有的路由器将组播Hello包到AllSPFRouters地址224.0.0.5以便它们能跟踪其他邻居的信息,即DR将泛洪update packet到224.0.0.5;DRother只组播update packet到AllDRouter地址224.0.0.6,只有DR/BDR监听这个地址.

OSPF邻居关系(邻居关系的建立和维持都是靠Hello包完成的)    1.邻居发现阶段
    2.双向通信阶段:Hello报文都列出了对方的RID,则BC完成.
    3.数据库同步阶段:
    4.完全邻接阶段: full adjacency

  
虚链路(Virtual Link)以下2中情况需要使用到虚链路:  
  1. 通过一个非骨干区域连接到一个骨干区域.
  2. 通过一个非骨干区域连接一个分段的骨干区域两边的部分区域.
  虚链接是一个逻辑的隧道(Tunnel),配置虚链接的一些规则:
  1. 虚链接必须配置在2个ABR之间.
  2. 虚链接所经过的区域叫Transit Area,它必须拥有完整的路由信息.
  3. Transit Area不能是Stub Area.
  4. 尽可能的避免使用虚链接,它增加了网络的复杂程度和加大了排错的难度.
  OSPF区域—OSPF的精华
  Link-state 路由在设计时要求需要一个层次性的网络结构.
  OSPF网络分为以下2个级别的层次:
  骨干区域 (backbone or area 0)
  非骨干区域 (nonbackbone areas)

在一个OSPF区域中只能有一个骨干区域,可以有多个非骨干区域,骨干区域的区域号为0,也就是至少有且只有一个区域0。

  为了避免回环的产生,骨干区域间是不可以交换LSA信息的,他们只有与骨干区域相连,通过骨干区域相互交换信息。
  非骨干区域和骨干区域之间相连的路由叫边界路由(ABRs-Area Border Routers),只有ABRs记载了接入各区域的所有路由信息。各非骨干区域内的非ABRs只记载了本区域内的路由表,若要与外部区域中的路由相连,只能通过本区域的ABRs,由ABRs连到骨干区域的BR,再由骨干区域的BR连到要到达的区域。
  骨干区域和非骨干区域的划分,大大降低了区域内工作路由的负担。