OSPF

来自站长百科
跳转至: 导航、​ 搜索

OSPF(开放式最短路径优先)是一个内部网关协议,用于在单一自治系统内决策路由,与RIP相比OSPF是链路状态路由协议而RIP是距离矢量路由协议,OSPF的协议管理距离是110,OSPF路由协议是一种典型的链路状态的路由协议,一般用于同一个路由域内。在这里路由域是指一个自治系统,它是指一组通过统一的路由政策或路由协议互相交换路由信息的网络,在这个AS中所有的OSPF路由器都维护一个相同的描述这个AS结构的数据库,该数据库中存放的是路由域中相应链路的状态信息,OSPF路由器正是通过这个数据库计算出其OSPF路由表的。

OSPF中的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的网络类型[ ]

  1. 点到点网络(point-to-point)由cisco提出的网络类型,自动发现邻居不选举DR/BDR,Hello时间10s。
  2. 广播型网络(broadcast)由cisco提出的网络类型,自动发现邻居选举DR/BDR,Hello时间10s。
  3. 非广播型(NBMA)网络由RFC提出的网络类型,手工配置邻居选举DR/BDR,Hello时间30s。
  4. 点到多点网络 (point-to-multipoint)由RFC提出,自动发现邻居不选举DR/BDR,Hello时间30s。
  5. 点到多点非广播由cisco提出的网络类型,自动发现邻居选举DR/BDR,Hello时间10s。

OSPF的DR及BDR规则[ ]

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

DR BDR选取规则[ ]

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

  • 路由器的每个多路访问(multi-access)接口都有个路由器优先级(Router Priority),8位长的一个整数,范围是0到255,Cisco路由器默认的优先级是1优先级为0的话将不能选举为DR/BDR.优先级可以通过命令ip ospf priority进行修改.
  • Hello包里包含了优先级的字段,还包括了可能成为DR/BDR的相关接口的IP地址.
  • 当接口在多路访问网络上初次启动的时候,它把DR/BDR地址设置为0.0.0.0,同时设置等待计时器(wait timer)的值等于路由器无效间隔(Router Dead Interval).

DR BDR选取规则[ ]

  • 如果路由器X新近成为DR或BDR,或者不再成为DR或BDR,重复步骤2和3然后结束选举,这样做是为了确保路由器不会同时宣告自己为DR和BDR。
  • 路由器X在和邻居建立双向(2-Way)通信之后,检查邻居的Hello包中Priority,DR和BDR字段,列出所有可以参与DR/BDR选举的邻居(priority不为0)。
  • 如果有一台或多台这样的路由器宣告自己为BDR(也就是说,在其Hello包中将自己列为BDR,而不是DR),选择其中拥有最高路由器优先级的成为BDR;如果相同选择拥有最大路由器标识的,如果没有路由器宣告自己为BDR,选择列表中路由器拥有最高优先级的成为BDR,如果相同再根据路由器标识。
  • 按如下计算网络上的DR。如果有一台或多台路由器宣告自己为DR(也就是说,在其Hello包中将自己列为DR),选择其中拥有最高路由器优先级的成为DR;如果相同,选择拥有最大路由器标识的。如果没有路由器宣告自己为DR,将新选举出的BDR设定为DR。
  • 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包完成的,在一般的网络类型中Hello包周期性的以HelloInterval秒发送,有1个例外:在NBMA网络中路由器每经过一个PollInterval周期发送Hello包给状态为down的邻居:

1、邻居发现阶段

2、双向通信阶段:Hello报文都列出了对方的RID,则BC完成

3、数据库同步阶段:主从协商;DD交换;LSA请求;LSA传播;LSA应答

OSPF区域[ ]

  • 区域长度32位,可以用10进制也可以类似于IP地址的点分十进制,分3种通信量
  1. Intra-Area Traffic:域内间通信量
  2. Inter-Area Traffic:域间通信量
  3. External Traffic:外部通信量
  • 路由器类型
  1. Internal Router:内部路由器
  2. ABR(Area Border Router):区域边界路由器
  3. Backbone Router(BR):骨干路由器
  4. ASBR(Autonomous System Boundary Router):自治系统边界路由器
  • 虚链路(Virtual Link)

以下2中情况需要使用到虚链路:

  1. 通过一个非骨干区域连接到一个骨干区域
  2. 通过一个非骨干区域连接一个分段的骨干区域两边的部分区域

相关条目[ ]

参考来源[ ]