OSPF 详解【开放最短路径优先】
OSPF 共有三个版本。目前用的是版本二。版本三在将来的IPV6网络中启用。
OSPF V2OSPF V3的不同之处:OSPF V3不向后兼容。每个链路上的协议处理。
取消了寻址的概念,
邻居总是通过路由器ID来标识。【路由器ID很重要】
每一台路由器计算树的时候都是以自己为根来计算最短路径树。最短路径树是路由器和路由器之间,和路由没有关系。
OSPF的基本原理与实现:
1.       HELLO:路由器从所有启动OSPF的接口上发出HELLO包。主要用来发现邻居。
2.       邻接关系:如果发现对方的HELLO信息里发现自己,那就是邻接关系建立。
LSA:链路状态通告。
3.在形成邻接关系后,路由器在邻接关系之间传递LSALSA描述了,路由器所有的链路,接口,路由器的邻居,以及链路状态信息。发送LSA主要是用来画图的。 
3.每一台路由器接收从邻居发来的LSA,并把这些LSA信息记录在自己的链路状态数据库里边,并拷贝一份发送给自己的邻居。
4.通过LSA扩散泛洪到整个区域。所有的路由器都会形成相同的LSA数据库。
5.当路由器的数据库全都相同时。就会以自己为根。使用SPF算法来计算一个无环路的拓扑。
6.每一台路由器都从SPF算法树中创建自己的路由表。
7数据库同步。路由表创建完毕之后。OSPF就变成了一个安静的路由协议。邻居之间的HELLO包之间的联系称为KEEPA LIVE,并每隔30分重传一次LSA. 如果网络拓扑稳定,那么网络中将不会有什么活动或行为发生.
ROUTER ID的选举:可以手工指定,手工指定的最优先。如果没有手工指定。那就选路由器上虚拟接口最大的IP。如果没有虚拟接口,那就选物理接口最大的IP。最好不要用物理地址做ROUTE ID 因为不稳定。
LSA包的类型:
1.     HELLO :主要是为了发现邻居。在两台路由器成为邻居之前必须互相发送对方认可的消息。HELLO数据包在邻居之间担当KEEPALIVE的角色。它保持了邻居路由器直接按双向通信。用来在一个广播网络或非广播多路访问网络。选取BR BDR。在CISCO路由器上对于广播型网络HELLO默认是10S,非广播网络默认是30S
HELLO包包含以下信息:
1始发路由器的ID   2 始发路由器接口的区域ID  3 始发路由器的IP和掩码
4始发路由器的认证类型和认证信息   5 始发路由器接口的HELLO时间间隔
6 路由器的优先级。 7 DR BDR    8 标识可选性能的5个标记位
9 始发路由器的所有有效的邻居ID
链路状态数据库描述:主机发出DBD描述。从机再来响应。从机再根据对方目录里需要的条目来发送LSA.DBD就是一个目录,就是一个数据库的描述。
链路状态请求:发现邻居发过来的目录里面有比自己新的。那么就会发一个LSR请求。
链路状态更新:收到邻居的请求会发一个更新。LSU
链路状态应答:收到更新后。马上给一个回复。LSA ACK
OSPF的网络类型:1点到点网络   2 广播型网络  3非广播多路访问  4 点到多点  5虚链路
1.     点到点网络:在点到点网络上的有效邻居总是可以形成邻接关系。目的地址也是保留的224.0.0.5
2.     广播型网络:以太网就是广播型网络。要选DR BDR
3.     非广播多路访问网络:像X.25 ATM 帧中继 可以连接两台以上的路由器但是他们没有广播的能力。在NBMA网络上要选DR BDR 但是需要手工指定。
4.     点到多点网络:可以看做是一群点到点的集合,这些网络上路由器不需要选DR BDR数据包都是以单播的方式发送。
5.     虚链路:在区域没有和区域0连接时可以用虚链路来连接。
除了以上这些网络类型之外。所有网络还可以归纳为传送网络,和末梢网络。
DRBDR的选举:先看优先级。谁高就选谁。CISCO路由器默认是1,如果优先级相同。再看拥有最高路由器ID。优先级0永远不能成为DR 或者BDR
DR是一个尾节点。或者相当于一台虚拟路由器。网络中的任何一台路由器都和DR BDR形成邻接关系。指定路由器是指路由器接口的特性,而不是整个路由器的特性。注意:路由器的优先级可以影响一个选举过程。但是他不能强制更换已经有效的DR BDR路由器。一但DRBDR选举成功。其他路由器【称为DROTERS】将和DR BDR形成邻接关系。
OSPF邻居状态机:
1.    失效状态【DOWN】:这是一个邻居会话的初始状态。用来指明在最近的一段时间内还没有收到邻居的HELLO数据包。
2.    尝试状态:这种状态仅仅适用于NBMA网络。
3.    初始状态【ATTEMPT】:这一状态表明在最近的时间里路由器收到了邻居路由器的HELLO包。但是双向通信没有建立起来。
4.    双向通信【2-WAY】:在邻居路由器哪里收到的HELLO包里看见了自己的路由器ID。在这个状态下,可以进行DR BDR的选举。
5.    信息交换初始状态【EXSTART】:在这一状态下。本地路由器和它的邻居将建立主从关系。并确定数据包描述的序列号。为交换数据库描述做准备。路由ID高的为主。低的为从
6.    信息交换状态【EXCHANGE】在这里路由器向它的邻居发送数据库描述。同时在这个状态下,本地路由器也会发送链路状态请求。请求最新的LSA
7.    信息加载状态:【LOADING】在这一状态下。邻居路由器用来向它的邻居路由器发送链路请求数据包。用来请求最新的LSA.通告。虽然在上一步已经发送了LSA通告。但是本地还没有收到LSA通告。
8.    完全邻接状态:【FULL】在这一状态下。邻居路由器之间将建立完全邻接关系。
LSA的类型:
1.路由器LSA  2.网络LSA   3.网络汇总LSA   4.ASBRLSA  5.AS外部LSA  7.NSSA外部LSA
LSA的老化时间为60分钟。如果达到老化时间。那么路由器就把这条LSA从路由表里删除。
当一台路由器收到一个LSA先看它的序列号序列号大的优先。如果相同,比较老化时间。如果老化时间相同,在比较校验和。
COS值是接口上的,不是链路上的。OSPF 是以自己为根。先看自己的COS再加到目的地的COS
LSA1:里面有三个参数:第一个点到点的主要是为了画图。第二个。穿越的主要应用在NBMA网络中。第三个STUB主要是描述子网。LSA1只描述和DR之间的关系,不通告子网。
LSA2:是由DR产生的,是用来通告子网的。
LSA3:是由ABR来通告的。是一个汇总的LSA。它隐藏了网络。
LSA4:LSA5:他两经常一起出现。LSA4是为LSA5提供服务的。LSA5是由ASBR产生的。主要是用来通告外部的路由。LSA4是告诉ASBR的位置。为什么要用LSA4ASBR的位置呢。那是因为。LSA5是没有资格汇总路由的。只能由ABR汇总。如果路由汇总了以后。那别的区域的路由器就找不到ASBR和谁相连。这时候就需要LSA4给指明ASBR和谁相连。路由怎么走。
LSA7:允许外部路由。但是外部路由只能出现在NSSA网络中。如果这条路由要传到别的网络中区,那只能转换成5进去。
OSPF数据包:
32
 
8
8
8
8
版本
类型
数据长度
路由器ID
区域ID
校验和
认证类型
认证
认证
数据包数据
如果认证类型=2,那么认证字段就是:
0*0000
密钥ID
认证数据长度
加密序列号
 
版本:就是版本号。类型:就是指跟在后面的数据包类型。数据包长度:就是指OSPF数据包的长度。包括数据包头部的长度。以八位组字节计。  路由器ID     区域ID:如果一个数据包是在虚链路上发的。那么它的区域ID0.0.0.0因为虚链路被认为是骨干区域的一部分。 校验和:是指对一个数据包的标准IP校验和。  认证类型:是指正在使用的认证模式。
OSPF的协议号是89  管距是110.  OSPF的组播地址是224.0.0.5  224.0.0.6
普通路由器监听224.0.0.5   DRBDR监听224.0.0.6
40S没接收到邻居的HELLO就宣告邻居DOWN掉。是HELLO时间的四倍。
四种OSPF的类型是:内部路由器。 骨干路由器。  区域边界路由器  自治系统边界路由器
四种OSPF路径类型是:域内路径   域间路径   类型1外部路径   类型2外部路径
CISCO计算一个接口的出口代价:108次方除以带宽。