链路状态路由协议,基于Edsger Dijkstra的最短路径优先(SPF)算法。每台路由会站在自己的角度根据SPF算法确定开销。
链路状态过程
1. 每台路由器了解其自身的链路。
2. 每台路由器负责“问候”直连网络中的相邻路由器,通过直连网络中的其他链路状态路由器呼唤hello数据包来达到目的。
3. 每台路由器创建一个链路状态数据包(LSP),其中包含与该路由直连的每条链路的状态。这通过记录每个邻居的所有相关信息,包括邻居ID、链路类型和带宽来完成。
4. 每台路由器将LSP泛洪到所有邻居,然后邻居将收到的所有LSP存储到数据库中。接着,各个邻居将LSP泛洪给自己的邻居,直到区域中的所有路由器均受到那些LSP为止。
5. 每台路由器使用数据库构建一个完整的拓扑图并计算通向每个目的网络的最佳路径。
距离矢量路由协议必须首先运行贝尔曼-福特(Bellman-Ford)算法来处理路由更新,然后才将它们发送给其他路由器;而链路状态路由协议则在泛洪完成后再计算SPF算法。因此,链路状态路由协议达到收敛状态的速度比距离矢量路由协议快很多。
LSP仅在以下情况才需要发送:
在路由初始启动期间,或该路由协议启动期间。
每次拓扑发生更改时,或是邻接关系建立或破裂。
OSPF包含5中LSP
Hello: Hello数据包用于与其他OSPF路由器建立和维持邻接关系。
DBD:数据库描述(DBD)数据包包含发送方路由器的链路状态数据库的简略列表,接收方路由器使用本数据库包与其本地链路状态数据库对比。
LSR:接收方路由器可以通过发送链路状态请求(LSR)数据包来请求DBD中任何条目的更详细信息。
LSU:链路状态更新(LSU)数据包用于回复LSR和通告新信息。LSU包含7种类型的链路状态通告(LSA)。
LSAck:路由器收到LSU后,会发送一个链路状态确认(LSAck)数据包来确认收到了LSU。
Hello数据包的作用:
发现OSPF邻居并建立邻接关系
通告两台路由器建立邻接关系所需统一的参数
在以太网和帧中继等多路访问网络中选择指定路由器(DR)和备份指定路由器(BDR)
建立邻接关系前,需要统一:Hello间隔,无效间隔,网络类型。
OSPF支持链路身份认证。
根据以下顺序确定路由器ID
1. 使用通过OSPF router-id命令配置的ip地址。
2. 如果未配置路由器ID,则路由器会选择其所有环路接口的最高IP地址。
3. 如果未配置环回接口,则路由器会选择其所有物理接口的最高活动地址。该接口不需要启动OSPF,但是必须处于活动状态(up)。
路由器ID可使用OSPF router-id命令后的IP来修改,但必须通过重新加载路由器或运行一下命令
clear ip ospf process
常用检查命令:
show ip protocols
show ip ospf
show ip ospf interface
show ip neighbor
OSPF的度量:
使用累积带宽作为度量,公式如下
10^8/带宽(bit/s)
快速及更快速度的以太网 1
以太网 10
E1 48
T1 64
等等
如果同一个OSPF域内出现重复的路由器ID,则无法工作
指定路由器和备份指定路由器的工作原理:
其他OSPF路由器只与DR和BDR建立完全的邻接关系,其他OSPF路由器只需使用组播地址224.0.0.6将其LSA发送给DR和BDR即可。DR负责将来自该路由器的LSA转发给其他所有路由器。DR使用组播地址224.0.0.5。
DR选举原则:
1. DR:具有最高OSPF接口优先级的路由器
2. BDR具有第二高OSPF接口优先级的路由器。
3. 如果接口优先级相等,则取路由器ID最高者。
ip ospf priority {0~255}
OSPF进程号范围为1 ~ 65535
OSPF默认等价负载均衡为4条
本文出自 “极客斌” 博客,请务必保留此出处http://geekbin.blog.51cto.com/1967243/1405768
CCNA Routing OSPF,布布扣,bubuko.com
原文地址:http://geekbin.blog.51cto.com/1967243/1405768