一、基本信息
1. 概述
·OSPF:开放最短路径优先/Open Shortest Path First;链路状态路由协议;内部网关路由协议。
·仅通过在IP包头中的目标地址来转发IP包。IP包在AS中被转发,而没有被其他协议再次封装。IP协议号89;管理距离110。
·完整的网络拓扑LSDB和SPF算法。快速地探知AS中拓扑的改变,并在一段时间的收敛后计算出无环路的新路径。.
·收敛的时间很短且只使用很小的路由流量。
·支持CIDR和VLSM。
·支持负载均衡
2. 三张表:
邻居表:存储邻居信息,只能和相连的路由建邻。
拓扑表:又称为LSDB(链路状态数据库),记录整个区域的完整拓扑
路由表:算出开销最小的路径,加入路由表。开销计算方式:10^8/带宽(bit)。
3. OSPF存在的问题
存在问题:因为链路状态路由协议需要整个网络的链路状态,因此当网络规模大时LSDB会非常庞大,SPF算法的计算频率很高,LSA的泛洪也会更多,极大消耗设备资源。
解决方法:1.划分区域。2.在MA网络中选举DR
4. OSPF的区域
·骨干区域 作为其他区域通信的桥梁
·常规区域 通常连接用户和资源
·特殊区域 常规区域的优化策略
·ABR 骨干区域与常规区域的边界,连接两个区域
·ASBR 至少有一个接口与其他域相连
5. DR
在MA的网络环境下,每个广播域中选一个DR,BDR作为DR的备份。
把交换LSA的邻居称为邻接关系,不交换LSA的邻居仅是邻居关系。Other和DR、BDR为邻接关系。
Other路由器将LSA以224.0.0.6组播给DR、BDR。DR/BDR监听224.0.0.6和224.0.0.5。
6. OSPF的数据包类型
类型 数据包名称 协议功能
______________________________________________________________
1 Hello 发现/维持邻居关系
2 DBD 数据库内容汇总
3 LSR 请求自己没有的LSA
4 LSU 更新LSA,确认LSR
5 LSAck 确认LSU
二、OSPF状态机
1. down 关闭
发送hello。
·建邻条件:RID 不一样
Hello 和 dead time一样
区域ID一样
验证信息匹配
末节信息匹配
2. init 初始化
接收到hello,发现邻居
3. twoway 双向运行 非邻接邻居止步于这一状态 邻接邻居继续
收到的hello包中,邻居的邻居表中有自己的RID
MA网络:
等待40s。选举DR/BDR:优先级(选大,默认1,0为不参与选举)—>比较RID(选大)
4. exstart
选举主从关系:发送第一条DBD,flag块有3个bit,第一个bit说明是否是第一条DBD;第二条说明是否有更多DBD;第三个bit说明master/slaver。选择RID大的为主。
5. exchange
主向从发送DBD,从向主确认。
Flag:001-000结束。
6. loading 载入
根据DBD,发送LSR和LSU,恢复LSAck。
7. full
每30分钟同步LSDB,60分钟超时。(和邻接邻居)
触发更新:收到一条LSU时,先看有无,再比seq大小。
OSPF卡在各个状态的解析:
1.down 一端配置了stub,一端没有配置stub。
2.attempt 只有在NBMA中才会出现ATTEMPT状态,ATTEMPT状态是路由器在NBMA模式中必须经过的一个普通状态。
如果路由器如果一直停滞于ATTEMPT状态,则表明路由器发送了Hello分组给一个邻居,但是没有收到回应。
这个问题仅仅在定义了neighbor语句的NBMA网络中才会出现。
①Neighbor指向了错误的邻居
②在NBMA中单播连接中断。例如:ACL 阻止了单播
3. INIT
路由器收到第一个分组将使路由器进入正常的INIT状态。
当一个路由器从邻居收到一个OSPF Hello 分组的时候,它在Hello分组中包含进邻居的路由器ID并发送这个Hello分组。
如果它不包含邻居的路由器ID,那么邻居将停滞于INIT状态。
① 验证只在某一边启用。
② ACL在某一边阻止了Hello分组。
4. 2-WAY
正常情况下,在MA网络等广播介质中,Drother之间的邻居状态是2-WAY状态,Drother与DR和BDR之间形成FULL状态。
停滞于 2-WAY 状态的原因:路由器上都配置了优先级0,DRother与DR/BDR关系都为full ,DRother与DRother之间全部都是2-way
5.EXSTART
在EXSTART状态阶段:
路由器选择一个主设备、一个从设备、一个初始序列号。(EXSTART状态)
整个数据库交换。(EXCHANGE状态)
停滞于EXSTART / EXCHANGE状态的原因:
不匹配的接口MTU 。(邻居关系还没有建立好时)重传25次后DOWN掉后,等待一分钟,然后再次建立邻居关系
6.LOADING
LSA条目数超过MAX-LSA。
7 FULL,有邻居无路由。
两端网络类型不匹配导致无法算出下一跳。
三.LSA类型
为了实现OSPF区域间通信,设计多类型LSA。
LSA类型 LSA名称 LSA 描述
______________________________________________________________________________
1 Router-LSA 由所有路由器产生。该LSA表述了在路由器在一个区域内所有接口的状态。仅在一个区域内洪泛。
______________________________________________________________________________
2 Network-LSA 由广播或NBMA网络中的指定路由器产生。该LSA包含了接入该网络的路由器列表。仅在一个区域内洪泛。
______________________________________________________________________________
3,4 Summary-LSA 由ABR产生,并在与该LSA相关联的区域内洪泛。每条Summary-LSA描述了一条在区域外,但在AS内的路径(区域间路径)。类型3描述到达网络的路径。类型4描述到达ASBR的路径。
______________________________________________________________________________
5 AS-external-LSA 由ASBR产生,并在整个AS内洪泛。每条AS-external-LSA描述了另一AS中的一条路径。AS的默认路径也可被描述为AS-external-LSA。
______________________________________________________________________________
7 NSSA-LSA 由NSSA区域的ASBR产生,在NSSA区域内洪泛。每条NSSA-LSA描述了另一AS中的一条路径。
四.OSPF特殊区域
1.末节 标识符 stub
a.末节区域(stub): 拒绝5类LSA 、ABR自动下发默认路由(3类LSA)
有ABR 当有一个以上的ABR,手动改变默认路由的COST帮助选路,否则负载均衡
不能有ASBR
不能是0区域
区域内所有路由器都要配置末节
被虚链路穿越的区域不能配置末节
b.完全末节区域: totally stub 拒绝3、5类LSA、ABR自动下发默认路由(3类LSA)
2. a.非完全末节区域 not-so-stubby areas NSSA (拒绝5类)
b.完全的非完全末节区域 totally nssa 在非完全末节基础上加no summary 拒绝3类和5类
解决末节后面还有其他网络
因为末节拒绝了5类,因此NSSA区域的ASBR生成7类LSA在NSSA区域内泛洪,发送到其他区域内时,由ABR把7类转换为5类(NSSA区域的ABR也可能产生5类)。
手动在ASBR或ABR(视情况而定)上配置下发默认路由。该默认路由以7类LSA发送。
五.OSPF汇总
OSPF没有自动汇总
同区域不能汇总
只能在ABR上汇总3类LSA
在ASBR上汇总5、7类LSA
自动生成指向空接口的默认路由 防环
六.OSPF验证
1.支持明文、密文两种验证方式
2.有区域验证和接口验证两种方式
七.OSPF网络类型
OSPF网络类型有6种:loopback、broadcast、NBMA、p2p、p2mp、p2mpnb
不同网络类型的特点
帧中继上的OSPF:
网络类型 选举DR HELLO包 MAP
Broadcast 手动 自动 手动添加
NBMA 手动 手动单播 手动添加
P2MP 不选 自动/30s 无需添加
P2MPNB 不选 手动单播/30s 无需添加
P2P-P2MP 不选 改HELLO时间 手动添加
八.OSPF虚链路
由于网络的拓扑结构复杂,有时无法满足每个区域必须和骨干区域直接相连的要求,为解决此问题,OSPF提出了虚链路的概念。
虚连接是指在两台ABR之间,穿过一个非骨干区域(转换区域——Transit Area),建立的一条逻辑上的连接通道,可以理解为两台ABR之间存在一个点对点的连接。
虚链路的验证:只要在配置虚链路时后面加上链路认证的方式。
本文出自 “pingu的学习笔记” 博客,请务必保留此出处http://pingurto.blog.51cto.com/2323735/1016336