OSPF的概念
链路状态路由选择协议又被称为最短路径优先协议,它基于SPF(shortest path first )算法。他比距离矢量协议复杂的多。路由器的链路状态的信息称为链路状态,包括:接口的IP地址和子网掩码,网络类型,(如以太网链路或串行点对点链路),该链路的开销,该链路上的所有的相邻路由器。
OSPF特点
链路状态路由协议是层次式的,网络中的路由器并不向邻居传递“路由项”,而是通告给邻居一些链路状态。链路状态协议只是通告给邻居的一些链路状态。运行该路由协议的路由器不是简单地从相邻的路由器学习路由,而是把路由器分成区域,收集区域的所有的路由器的链路状态信息,根据状态信息生产网络拓扑结构,每一个路由器再根据拓扑结构计算出路由。
OSPF工作过程
(1)了解直连网络
(2)向邻居发送hello包(邻居指启用了相同链路状态路由协议的其他任何路由器)
(3)建立链路状态数据包,
(4)将链路状态数据包泛洪给邻居 路由器将其链路状态信息泛洪到路由区域内的其他所有链路状态路由器,他一旦收到来自邻居的LSP,不经过中间计算,立即将这个LSP从除接收该LSP口以外的所有接口发出,此过程在整个路由区域内的所有路由器上形成LSP的泛洪效应。LSP在路由器初始启动期间,或路由协议启动过程期间,或在每次拓扑发生更改(包括链路接通和断开)时,或是邻接关系建立,破裂时发送,并不需要定期发送。
PS:距离矢量路由协议则不同,她必须首先运行贝尔曼-福特算法来处理路由更新,然后才将他们发送至其他路由器,而链路状态协议则是再泛洪完成后在计算SPF算法,因此到达收敛的速度比距离矢量路由协议速度要快。
(5)每台路由器使用数据库建立一个完整的拓扑图并计算通向每个目的网络的最佳路径。
OSPF的网络类型
点到点连接
将一对路由器连接起来的网络,使用的是PPP HDLC协议
使用组播224.0.0.5来发送各种数据包
没有DR/BDR的选举,直接形成full邻接关系,不用手动指邻居
广播
多路访问网络,如以太网,需要DR和BDR的选举,不用手动指邻居
通常以组播发送HELLO报文,LSU报文,和LSACK报文,以单播形式发送DD和LSR报文
DR和BDR给非指定路由器发送消息使用的是组播224.0.0.5
非指定路由器给DR和BDR发送消息使用的是组播224.0.0.6
非广播多路访问(NBMA, Non-Broadcast Multiple Access)
连接的路由器超过两台但是没有广播功能,帧中继网络和ATM网络
所有数据包均单播发送,有DR的选举,需要手动指定邻居
点到多点
Hello包以组播形式发送,其他类型数据包由单播发送
不选举DR,不用手动指邻居
OSPF报文
OSPF报头格式
OSPF直接封装在IP数据包中
OSPF数据包
Hello包
作用:建立邻居关系
各字段功能:
Network Mask :发送数据包的源IP地址对应的子网掩码
Hellointerval:Hello时间间隔,默认10S,失效间隔默认为Hello间隔的3倍
Rtr Pri:路由器优先级用于选举DR和BDR
DR:指定路由器的IP地址,开始时为空
BDR:备份指定路由器的IP地址,开始是也为空
Neighbor:里面标识了邻居的路由器ID,可以表示多个邻居
Stub and Flag :末节标识符
邻居关系建立条件:HELLO和失效间隔要一致,区域号要相同,区域末节标识符要相同,有认证的话,认证要相同,区域ID要相同,子网掩码要一致
DBD包(Datebase Description)
作用:在OSPF邻居关系建立之后,DBD包负责描述本地的LSDB,接收到的路由器通过和自