OSPF(Open Shortest Path First开放式最短路径优先)是一个内部网关协议(Interior Gateway Protocol,
简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由
ospf 协议号 89
不适用任何传输层协议来保证其可靠性,内置可靠传输协议。使用无类编码,支持VLSM和非连续网络。
Dijkstra算法
认证:明文和MD5
多播 224.0.0.5(所有SPF路由) 224.0.0.6(DR和BDR)
管理距离 110
LSA 链路状态通告
LSDB 链路状态数据库
邻居表–发现并建立邻居
拓扑表–建立DBD
路由表–根据SPF算法计算到各个路由器的最佳路径。
OSPF中的四种路由器
1. 内部路由器:所有端口在同一区域的路由器,维护一个链路状态数据库。
2. 主干路由器:具有连接主干区域端口的路由器。
3. 区域边界路由器(ABR): 具有连接多区域端口的路由器,一般作为一个区域的出口。ABR为每一个所连
接的区域建立链路状态数据库,负责将所连接区域的路由摘要信息发送到主干区域,而主干区域上的ABR则负
责将这些信息发送到各个区域。
4. 自治域系统边界路由器(ASBR): 至少拥有一个连接外部自治域网络(如非OSPF的网络)端口的路由器,负责将非OSPF网络信息传入OSPF网络。
ospf 五类数据包
1、hello 数据包
1.用于发现邻居
2.在成为邻居之前,必须对Hello包里的一些参数进行协商,hello时间间隔默认10s,死亡间隔4倍。
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
2、数据库描述DD(也有叫DBD的) 数据包
1、首个DD数据包用来选举主从(master and slave)关系 router ID最高的成为主路由器
2、虚链路中,MTU字段必须设置为 0 。
3、链路状态请求LSR 数据包 请求对方DD中的LSA
在部分路由数据库信息丢失或过时时发送
4、链路状态更新LSU 数据包 用来实施LSA泛洪
5、链路状态确认LSACK 数据包 用来对每条LSA进行确认,也会发送LSACK来对LSU进行确认
DR和BDR的选举 注意:只有MA和NBMA网络中需要选举DR和BDR
1.优先级为0的不参与选举;
2.优先级高的路由器为DR;
3.优先级相同时,以router ID 大为DR;router ID 以回环接口中最大ip为准;若无回环接口,以真实接口最大ip为准。
4.缺省条件下,优先级为1。
5.要注意的是,当网络中已经选举了DR/BDR后,又出现了1台新的优先级更高的路由器,DR/BDR是不会重新选举的。
6.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监听这个地址
7.先选举BDR,在选举DR。
8.ID的产生优先级:route id>loopback address>route接口最高IP
OSPF路由器在完全邻接之前,所经过的几个状态: 一般没有2
1.Down: 初始化状态,表明尚未从邻居收到任何数据包。
2.Attempt: 只适于NBMA网络,在NBMA网络中邻居是手动指定的,在该状态下,路由器将使用HelloInterval
取代PollInterval来发送Hello包
3.Init: 表明在DeadInterval里收到了Hello包,但是2-Way通信仍然没有建立起来,只建立起单项通信。
4.two-way: 双向会话建立,2-way状态下选举DR和BDR,DROther间保持2-way状态。
5.ExStart: 信息交换初始状态,在这个状态下,本地路由器和邻居将建立Master/Slave关系,并确定DD
Sequence Number,RID接口等级高的的成为Master。Master最先发送LSA。
6.Exchange: 信息交换状态,本地路由器向邻居发送数据库描述包,
7.Loading: 信息加载状态,本地路由器和邻居交换LSA
8.Full: 完全邻接状态,这种邻接出现在Router LSA和Network LSA中
常用LSA
1类LSA:路由器LSA 表明此路由器连接到某链路的状态、代价,只在本区域泛洪
2类LSA 网络LSA 网络LSA有DR生成,没有DR就不存在网络LSA,只在本区域泛洪
3类LSA 网络汇总LSA 由ABR生成,将区域内的网络宣告到其他区域,3类LSA只在一个区域扩散,ABR
会重新生成3类LSA扩散到其他区域。 //汇总LSA并不承载任何详细路由拓扑信息,只通告网络前缀。
4类LSA ASBR汇总LSA 用来通告ASBR的信息
5类LSA 外部LSA 描述了ospf区域外的路由,有ASBR通告。
7类LSA NSSA外部LSA 用于通告NSSA区域引入的ospf外部路由,由ABR将7类转为5类传播。
ospf区域
骨干区域 area0区域
标准区域 允许存在的所有内部和外部路由
末节(stub)区域 不允许存在外部路由(5、4类)
完全末节(stub)区域 不允许外部路由和汇总路由(3.4.5类)
stub特征 1.该区域存在一个或多个ABR
2.该stub区域中所有路由器都需要配置stub区域特征
3.该区域不存在ASBR
4.该区域不能是区域0
5.该区域没有虚链路穿越
次末节(NSSA)区域 不接受外部路由(4.5类)
完全次末节(NSSA)区域 不接受外部路由和汇总路由(3.4.5类)
NSSA特征 1.5类被禁止进入
2.该区域允许ASBR
3.该区域ASBR引入外部路由产生7类LSA
4.该区域7类传播是由ABR转换成5类
网络类型
点到点类型 通常用PPP或HDLC进行封装
OSPF能自动检测邻居
通过组播地址224.0.0.5发送
广播多路访问网络 通常用于LAN网络,以太网或令牌环
ospf自动发现邻居接口类型
需要选举DR和BDR
DR发送使用组播224.0.0.5,接受使用224.0.0.6
默认hello间隔10s dead间隔40s
非广播多路访问网络NBMA 支持多台路由器但不具备广播能力
常用ATM、X.25、帧中继
不能自动发现邻居
需要选举DR和BDR
默认hello间隔30s dead间隔120s
点到多点网络类型 该环境需要手工指定网络类型
不需要选举DR和BDR,只使用一个子网
通过组播发送,自动发现邻居
默认hello间隔30s dead间隔120s
虚链路(Virtual Link)以下2中情况需要使用到虚链路:
1. 通过一个非骨干区域连接到一个骨干区域.
2. 通过一个非骨干区域连接一个分段的骨干区域两边的部分区域.
虚链接是一个逻辑的隧道(Tunnel),配置虚链接的一些规则:
1. 虚链接必须配置在2个ABR之间.
2. 虚链接所经过的区域叫Transit Area,它必须拥有完整的路由信息.
3. Transit Area不能是Stub Area.
4. 尽可能的避免使用虚链接,它增加了网络的复杂程度和加大了排错的难度.
OSPF协议主要优点如下:
1、快速收敛,OSPF是真正的LOOP- FREE(无路由自环)路由协议?源自其算法本身——链路状态及最短路径树算法
2、区域划分?提出区域(Area)划分的概念,将自治系统划分为不同区域后,通过区域之间的对路由信息的摘要,大大
减少了需传递的路由信息数量,也使得路由信息不会随网络规模的扩大而急剧膨胀。
3、开销控制?将协议自身的开销控制到最小,目的如下所示:
用于发现和维护邻居关系的是定期发送的不含路由信息的hello报文,非常短小,包含路由信息的报文是触发更新
的机制,而且只有在路由变化时才会发送,但为了增强协议的健壮性,每30分钟全部重发一次。
4、在广播网络中,使用组播地址(而非广播)发送报文,减少对其他不运行OSPF的网络设备的干扰。
5、在各类可以多址访问的网络中(广播型网络和非广播型多路访问),通过选举DR(指定路由器),使同网段的路由器之间的路由交换(同步)次数由O(N×N)次减少为O(N)次?
6、OSPF协议提出STUB区域的概念,使得STUB区域内不再传播引入的ASE路由。
7、在ABR(区域边界路由器)上支持路由聚合,进一步减少区域间的路由信息传递。
8、在点到点接口类型中,通过配置按需播号属性(OSPF over On Demand Circuits),使得OSPF不再定时发送
hello报文及定期更新路由信息,只在网络拓扑真正变化时才发送更新信息。
9、路由可信,通过严格划分路由的级别(共分4级),提供更可信的路由选择。
10、安全性高,良好的安全性,OSPF支持基于接口的明文及MD5 验证。
11、适应性广,OSPF适应各种规模的网络,最多可达数千台。
(2)OSPF协议主要缺点
OSPF协议主要缺点如下:
配置相对复杂,由于网络区域划分和网络属性的复杂性,需要网络分析员有较高的网络知识水平才能配置和管理
OSPF网络。
路由负载均衡能力较弱?OSPF虽然能根据接口的速率?连接可靠性等信息,自动生成接口路由优先级,但在通往
同一目的的不同优先级路由中,OSPF只选择优先级较高的转发,不同优先级的路由中,不能实现负载分担?只有相
同优先级的,才能达到负载均衡的目的,不像EIGRP那样可以根据优先级不同,自动匹配流量。
排除ospf故障
一、ospf邻居列表为空
1、路由器接口未参与ospf进程
2、网络1、2层故障
3、路由器接口设置为ospf passive模式
4、ospf hello 数据包被访问列表拦截
5、广播链路俩端的ip子网/子网掩码不匹配
6、ospf邻居所发hello数据包的hello/dead interval字段值不匹配
7、认证类型不匹配
8、认证密钥不匹配
9、区域ID不匹配
10、stub/NSSA区域选项不匹配
11、企图用接口secondary IP来建立ospf邻接接口 用独臂路由技术划分子接口
12、企图通过路由器的异步接口来建立ospf邻居关系 异步接口必须激活才能使用
二、ospf邻居路由器逗留在Attempt状态
本故障只能发生在NBMA环境中设有neighbor命令的ospf路由器上。
1、neighbor配置有误
2、NBMA环境中的ip单播连通性遭到破坏
①帧中继或ATM交换机映射错误DLDC或VPI/VCI标号
②访问列表破坏单播连通性
③单播ospf协议数据包包头中的ip地址经过NAT转换
三、ospf邻居路由器逗留在Init状态
1、ospf邻居中一方设有访问列表,单向拦截ospf hello数据包
2、多播连通性遭到单向破坏(6500交换机启用protocol filter)
3、单方启用ospf认证
4、fame-rely map/dialer map命令中为包含broadcast关键字
5、第2层故障导致hello数据包丢失
四、ospf邻居路由器逗留于2-way状态
原因: 把所有路由器ospf优先级都设为 0
五、ospf邻居路由器处于exstart/exchange状态
1、ospf邻居路由器MTU值不匹配
2、ospf邻居路由器间router-id冲突
3、接口不能发送长度超出MTU值的数据包
4、ip单播连通性遭到破坏
①帧中继或ATM交换机映射错误DLDC或VPI/VCI标号
②访问列表破坏单播连通性
③单播ospf协议数据包包头中的ip地址经过NAT转换
5、PRI和BRI拨号接口的ospf网络类型为point-to-point
五、ospf邻居处于loading状态
1、MTU值不匹配
2、LSR数据包遭到破坏
ospf通告故障
一、ospf不通告路由
1、通告接口为参与ospf进程
2、接口问题
3、同一路由器主Ip和secondary ip处于不同区域,这样不会通告secondary ip。
二、ABR不通告汇总路由
1、将常规区域配置为 totally nssa区域
2、ABR位于未于区域0相连
3、区域0未能连成一气
三、ospf路由器不通告外部路由
1、将ospf常规区域配置为stub或nssa区域 在配置常规区域错误为stub区域时,进入rip重分布后,将stub区域转为NSSA区域//将rip的路由条目由为7类LSA转5向外发布
2、NSSA ABR为能将7类转换为5类
四、ASBR不通告默认路由
1、ASBR上未设有default-information originate命令
2、ASBR上设有default-information originate命令,但路由表中没有默认路由。
3、常规区域配置为stub区域。
五、ospf路由重分布故障
一、ospf未通告外部路由器
1、ASBR上的router ospf配置命令redistribure未包含subnets关键字
2、ASBR出站方向的distribute-list命令阻止了外部路由的通告