OSPF:开放式最短路径优先协议;
无类别链路状态IGP协议;触发更新+周期更新(30min)
组播更新:224.0.0.5 通用地址 224.0.0.6 DR/BDR专用地址
基于拓扑进行收敛,更新量巨大—–结构的部署—-1、区域划分 2、IP地址规划
一、OSPF的5种数据包类型:
1、hello 包
OSPF hello包 以太网链路 需要检查掩码 :
2、DBD包 -数据库描述包
OSPF DBD包 需要检查mtu如果对进入下一阶段,忽略检查命令:ip ospf mtu-igone 则不检查mtu,下边是exstart阶段的DBD包 :
下边是exchange阶段的DBD包,装载有LSA描述信息:
3、LSR链路状态请求
LSR包:
4、LSU链路状态更新
LSU包:
5、LSack 链路状态确认
注:数据包结构:跨层封装于3层报头,协议号89;
二、OSPF的状态机
1、Down:一旦本地发出ospf的hello包进入下一个状态
2、Init初始化:接收到的hello包中存在本地的RID,进入下一状态
3、2way双向通信:邻居关系建立的标志;
条件匹配:点到点直接进入下一状态;MA网络进行DR/BDR选举(40s),非DR/BDR间不进入下一状态
4、Exstart预启动:使用类似hello 的DBD包来进行主从关系选举,RID数值大为主,优先进入
下一状态;
5、Exchange准交换:使用真实的DBD包来共享数据库目录;
6、Loading加载:使用LSR/LSU/LSack来获取未知的LSA信息;
7、Full转发:邻接关系建立的标志
三、各种类别的LSA
类型 ADV router link-id 内容与作用 泛洪范围
Routerr 本台路由器RID 本台路由器RID 描述本区域拓扑结构 本区域
Network DR的RID DR的接口地址 描述本区域MA网络的结构 本区域
DR的信息及MA网络掩码
Summary ABR的RID 域间目标路由前缀 描述OSPF区域间路由信息 OSPF区域
(stub除外)
Asbr-summary 本区域ABR 的RID ASBR的RID 通告ASBR的RID及位置 除了ASBR所在
区域之外的OSPF区域
(NSSA,STUB除外)
External ASBR的RID 域外目标路由前缀 描述OSPF域外路由信息 OSPF区域
(stub,nssa除外)
NSSA-external NSSA的ASBR-RID 域外路由前缀 为NSSA区域描述ospf域外路由 NSSA区域
(只是本NSSA区)
OSPF的LSA更新量优化:
汇总—减少骨干区域的LSA–OSPF不支持区域内部的接口汇总,因为内部传递拓扑
<1>域间路由汇总–将一个区域的路由汇总到其他区域
在ABR上配置,配置完成后本地生成空接口防环路由
r3(config)#router ospf 1
r3(config-router)#area 1 range 4.4.4.0 255.255.254.0
切记:ABR必须是工作在被汇总路由的区域内;只能将本地通过1/2类LSA计算所得路由进行汇总
<2>域外路由汇总—在ASBR上配置;自动产生空接口防环路由
r4(config)#router ospf 1
r4(config-router)#summary-address 99.1.0.0 255.255.252.0
四、OSPF网络类型 —-ospf的接口网络类型
网络类型 OSPF的接口网络类型 工作方式
环回-LOOPBACK LOOPBACK 无hello包,主机路由发送
点到点–PPP/HDLC/GRE POINT_TO_POINT hello time10s;自动建邻,不选DR/BDR
BMA–以太网 BROADCAST hello time10s;自动建邻,选DR/BDR
NBMA–帧中继、MGRE POINT_TO_MULTIPOINT hello time30s;自动建邻,不选DR
在MGRE环境中运行OSPF,因为OSPF协议在tunnel接口默认的工作方式为点到点,这种方式只能建立一个邻居,故多点端将出现邻居关系翻滚;
解决方法:修改接口的工作方式
r1(config-if)#ip ospf network ?
broadcast Specify OSPF broadcast multi-access network
non-broadcast Specify OSPF NBMA network
point-to-multipoint Specify OSPF point-to-multipoint network
point-to-point Specify OSPF point-to-point network
1)修改为 broadcast ,所有节点必须全部修改,否则无法建立邻居关系,后者无法正常收敛,卡在exstart状态机;
2)在全连网状结构中,建议不使用点到多点;因为将全网邻接关系,重复更新;
五、配置
1、基本配置:
R1(config)#router ospf 1 启动时需要配置进程号,仅具有本地意义;
R1(config-router)#router-id 1.1.1.1 配置RID; 手工–环回最大地址–物理最大地址-无法启动
宣告:1、激活–收发ospf信息 2、通告直连接口的拓扑 3、区域划分
R1(config-router)#network 12.1.1.1 0.0.0.0 a 0
R1(config-router)#network 1.1.1.1 0.0.0.0 a 0
必须携带反掩码
2、度量为cost值=开销值=参考带宽/接口带宽
默认参考带宽为100M;优先cost值之和最小的路径;
注:当接口带宽大于参考带宽时,度量值为1;可能导致选路不佳;可以修改所有OSPF设备的参考带宽;
R1(config)#router ospf 1
R1(config-router)#auto-cost reference-bandwidth ?
<1-4294967> The reference bandwidth in terms of Mbits per second
R1(config-router)#auto-cost reference-bandwidth 1000
3、认证:
六、OSPF的不规则区域
OSPF协议的规则区域-星型结构,非骨干区域必须同时工作骨干区域;否则该非骨干区域的ABR不能进行区域间路由共享;
1、远离了骨干的非骨干区域
2、不连续骨干
解决方法:
1、tunnel 在两台ABR上建立隧道,然后将其宣告到OSPF协议中;
缺点:对周期、触发更新和保活流量对中间区域存在资源占用
选路不佳;
2、OSPF虚链路–在两台ABR上进行虚链路的建立,之后让骨干区域ABR对非法ABR进行授权;使得非法ABR可以进行路由共享;
过程:两台ABR使用hello包建立邻居关系,生成邻居表;然后非法ABR将数据库共享给合法ABR,由合法ABR进行审核,通过后对其授权;因为在两台ABR间没有建立实际的网段链路,故不存在选路不佳问题;未避免周期的保活和更新信息对中间区域的资源占用,取消了该机制;—-导致虚链路不可靠,不稳定;
r2(config)#router ospf 1
r2(config-router)#area 1 virtual-link 4.4.4.4
中间穿越区域 对端ABR的RID
3、多进程双向重发布
(1)多进程—一台设备上同时运行多个进程时,不同进程存在各自的RID和数据库;当从各自邻居处学习到了信息后,存储在自己的数据库中,数据不共享;仅将计算所得路由加载到同一张路由表中; 若将一个接口同时宣告于多个进程,仅最先宣告进行工作;
(2)双向重发布–两种协议或两个进程间,进行路由条目的双向共享;
解决不规则区域时,将处于不规则点的ABR不同接口宣告到不同进程,最后使用双向重发布来实现路由共享—选路正常,无周期信息,可靠和稳定的;
r4(config)#router ospf 1
r4(config-router)#redistribute ospf 2 subnets
r4(config-router)#exit
r4(config)#router ospf 2
r4(config-router)#redistribute ospf 1 subnets
七、特殊区域
–减少非骨干区域的LSA –所有特殊区域配置,需要该区域每台设备均配置
不能是骨干区域,不能存在虚链路:
{1}同时不能存在ASBR
<1>末梢区域–该区域拒绝4/5的LSA;
r5(config)#router ospf 1
r5(config-router)#area 2 stub
<2>完全末梢区域—在末梢区域的基础上,进一步拒绝3类LSA,仅保留一条3类缺省;
先将该区域定义为末梢区域,然后仅在ABR上定义完全即可;
r1(config)#router ospf 1
r1(config-router)#area 2 stub no-summary
{2}同时存在ASBR
<1>NSSA 非完全末梢区域;该区域拒绝4/5的LSA;为避免环路产生,不自动产生缺省;在管理员确定了网络无环的情况下手工添加缺省路由;本区域的ASBR产生的域外路由使用7类标记,离开本区域进入骨干时,转换回5类,进行转换的ABR成为新的ASBR;
NSSA的意义在于拒绝从网络中其他区域的ASBR产生的4/5类LSA信息;
r4(config)#router ospf 1
r4(config-router)#area 1 nssa
<2>完全NSSA—在NSSA区域的基础,进一步拒绝3类LSA;自动产生3类缺省;
但使用时,应该考虑是否会产生环路;
先将该区域配置为NSSA区域,然后仅在ABR上定义完全即可;
r3(config)#router ospf 1
r3(config-router)#area 1 nssa no-summary