1.OSPF概述: OSPF属于链路状态路由协议、也就是说不像距离矢量那样只考虑“我到那个目标要多远?要多少跳?”而是考虑的更多,不如你现在的链路状态是怎样的,负载怎么样?该怎么走合适? 这就是链路状态。

OSPF在共同的管理域下运行着一组相同的路由协议的集合称之为一个自制系统 (Autonomous System ,AS)

可以是一个企业或者一个运营商等等。

OSPF分为内部网关路由协议和外部网关路由协议如下所述:

内部网关路由协议(IGP):用于单一的自制系统(AS)内决策路由。

ospf链路状态路由协议概念概述工作原理_第1张图片

外部网关路由协议(EGP): 用于在多个自制系统之间执行路由! 他、用于连接不同的AS

ospf链路状态路由协议概念概述工作原理_第2张图片

OSPF名词解析

邻居路由器:

为同一条物理链路上的路由器,或者网段。

链路状态数据库:

也称之为拓扑数据库,记录了所有路由器的状态以及到所有网段的路径。

邻接关系:

两台运行OSPF路由协议的路由器的链路状态数据库一致时他们就是完全邻接了。


2.OSPF工作过程

OSPF与RIP的一个不同之处,RIP保存一张路由表,而OSPF是保存着3张

邻居列表:

列出每台路由器已经建立邻接关系的全部邻居路由器。

链路状态数据库:(LSDB)

列出了网络中全部的路由器信息,由此判断整个网络拓扑状态。

路由表:

列出用SPF算法算出的到达每个相连网络的最佳路径。

    

运行着OSPF的路由器试图与邻居路由器建立关系,然后同步数据库,最后根据最短路径算法(SPF)算出最短路径写入路由表。

SPF:是Edsger Wybe Dijkstra (艾兹格.迪克斯彻) 是Dijkstra最短路径算法的创造者。


3.OSPF基本概念:

ospf链路状态路由协议概念概述工作原理_第3张图片

OSPF将自制系统分为很多区域,路由器只用学习自己区域内的路由。

区域为骨干区域,他用来连接资质系统内部所有其他区域。用来连接骨干区域和其他区域的路由器叫做区域边界路由器,

他了解所连接的连个区域的完整链路状态信息,并且连接状态信息汇总后发给区域内的其他路由器,减小了每台路由器都

要保存两路状态数据库所占用的空间。

2)routeID

标识在整个网络中的唯一路由器

思科路由器通过下面的方法得到了路由ID。

1.路由器选举所有Lookback接口上树枝最高的IP地址。

2.如果没有配置lookback IP,那么就选所有活动的物理口IP最大的。



4.DR与BDR

网络中如果路由器有很多,如果所有路由器和其他路由器全部建立连接关系,不仅浪费时间而且浪费带宽,

所以为了防止这些问题,路由器会选举DR和BDR。

DR:指定路由器。

BDR:备份指定路由器。

只要网络拓扑中所有路由器全部都与DR和BDR相连,这样就不会出现上述情况。

所有路由器与DR和BDR形成邻接关系,然后DR和BDR形成邻接关系。


DR的选举:

1)自动选举:ID最大的是DR第二大的是BDR。   不合理之处:如果cisco7200和3800两台路由器,3800的大怎么办?

2)手动选举:设置优先级:1-255 (越大优先级越高)默认1  

ip ospf priority    //更改优先级

如果优先级0 则不参加选举

如果想用就比较RouteID 

选举过程:

1)当路由器启动时(运行着OSPF的),去发现他的邻居路由器,如果有DR和BDR了,它就不再选举了。

2)如果没有BR和DBR的话,就执行一个选举过程,先看优先级,然后是RouteID,如果选举已经结束,又一台运行ospf路由协议的路由器并且优先级高于他们所有的优先级,也不会替代现有DR和BDR。除非DR或者BDR不在了。


3)ospf的组播地址

一旦DR和BDR选举成功以后,其他路由(称之为DRother)将只与DR和BDR建立关系。 组播地址:224.0.0.5代表所有参加OSPF的路由器,而组播地址224.0.0.6只有DR和BDR去侦听这个地址,但是BDR只侦听,不响应。  

  在广播多路访问网络上,链路更新信息先发到224.0.0.6然后在有DR路由器使用组播地址224.0.0.5泛洪更新报文到其他所有路由器上


5.OSPF的度量值

OSPF的度量值:COST(开销)

指的是从这台路由器发出去的出站接口开销。

ip ospf cost       //用于开销

默认10的8次方/接口带宽  就是接口开销。

现在的网络中已经不用这个标准了(10的8次方)。因为如果带宽大于100M算出的数据会小于1.

在IOS11.2以后解决了

用auto-cost reference-bandwidth 修正了这个问题 允许管理员改默认参考值。

OSPF建立邻接关系: 

OSPF使用TCP或者UDP 它承载在IP数据包内,使用协议号89.

OSPF的五中状态:

Hello包:用于维持状态,选举DR和BDR。

数据库描述包(DBD):向邻居发摘要信息,同步链路数据库。

链路状态请求包(LSR),接收到新的DBD时发送,用于请求更详细的信息。

链路状态更新(LSU):收到LSR后发送链路状态通告(LSA),一个LSU数据包可能包含好几个LSA、

链路状态确认包:LSAck 确认收到LSU,每个LSA需要被分别确认。

过程:

1)失效状态(down):

OSPF没有与任何链路建立连接。

2)初始状态(init):

路由器的各个接口通过224.0.0.5发送hello报文,R1发送给R2报文,R2收到后,进入init状态,R2已经收到了R1的报文,但是自身ID没有出现在R1发的报文内。

3)双向状态(2-Way):

这时R2回应R1一个Hello报文,这个报文中有R1的R1看有自己的ID报文,然后进入双向状态。
选举在这时候完成。 (发报文的时候会发自己R ID,)

4)准启动状态(ExStrat):

这个状态是DR和BDR和网络中其他路由器建立关系的时候,其他路由器也有主从之分(master/slave),RouteID大的是master,主用来发起通信。

5)交换状态(Exchange):

主/路由器之间交换对方的数据库(DBD)信息,确保双方都收到。

6)加载状态(loading):

如果收到DBD有更新的LSA条目摘要的时候,路由器将双方发送链路状态请求包(LSA),请求更详细的信息,对方路由器用链路状态更新包(LSU)回应LSR,确保双方都收到。

7)完全邻接(Full):

完成以上所有步骤,链路状态数据库同步完成,称为FULL、

然后使用最短路径算法SPF算出到目的网络的最短路径。


6.OSPF的网络类型

点到点网络(point-to-point)

一对路由器,不用选DR和BDR,报文目的地址总是2254.0.0.5,一般用PPP或者HDLC协议、

广播多路访问网络(MBA)

可以连接多于两台设备,一个网络,选DR和BDR,OSPF报文使用组播的方式发送。

非广播多路访问(NMBA)

可以连接两台以上路由器,但是没有广播数据包的能力,需要手动配置邻接关系,选举DR和BDR,所有OSPF报文都单播。
点到多点网络(Point-to-MultiPiont) 一群点到点链路的集合,不选DR和BDR,OSPF报文是组播。


7.OSPF特点

适应大型网络

路由收敛快

无环路

支持可变长子网掩码VLSM

支持区域划分

支持组播发送报文


OSPF VS RIP

1)RIP适用于小型企业网络低于10台R,最大条数15跳、

OSPF适应大型拓扑,智能选择带宽。

2)RIP 首先发送自己的报文,其他收到后马上回复,没收到报文30秒广播自己路由表。

RIP用Hello包建立关系,建立迅速,hello包10秒一次,若在发4次hello没回复,认为对方死了。 删掉路由表。 但是数据库里没删 1小时候就真删了。 OSPF的LSA也重发 30分钟一次。

3)OSPF占用带宽较少,占用CPU时间少,但是占用内部存储空间大,后期主要发hello包,但RIP是发路由表。hello包要比路由表小的多、

OSPF

RIP

链路状态

距离矢量

没有距离限制

有跳数限制

收敛快

支持可变长子网掩码

不支持 但是 RIPV2支持

链路状态变化才更新 周期性更新占带宽