提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
一、OSPF协议
OSPF:开放式最短路径优先协议;
无类别链路状态IGP协议;触发更新+周期更新(30min)
组播更新:224.0.0.5 通用地址 224.0.0.6 DR/BDR专用地址
基于拓扑进行收敛,更新量巨大-----结构的部署----1、区域划分 2、IP地址规划
一、OSPF的5种数据包类型:
一、 OSPF的数据包类型
1、 hello – 发现、建立、周期保活邻居关系(会建立表来区分邻接关系) 周期为10s;dead time 为 hello的4倍;
2、 DBD 数据库描述(目录)
3、 LSR链路状态请求(问)
4、 LSU链路状态更新(给)
5、 LSack 链路状态确认(确认)
数据包结构:跨层封装于3层报头,协议号89;
OSPF的状态机
Down:一旦本地发出ospf的hello包进入下一个状态
Init初始化:接收到的hello包中存在本地的RID,进入下一状态
2way双向通信:邻居关系建立的标志;
条件匹配:点到点直接进入下一状态;MA网络进行DR/BDR选举(40s),非DR/BDR间不进入下一状态
Exstart预启动:使用类似hello 的DBD包来进行主从关系选举,RID数值大为主,优先进入
下一状态;
Exchange准交换:使用真实的DBD包来共享数据库目录;
Loading加载:从邻接处使用LSR/LSU/LSack来获取本地没有的LSA信息;hello是用来发现本地直连未知网段的;
Full转发:邻接关系建立的标志
OSPF的工作过程
启动配置完成后,邻居间组播(224.0.0.5)使用hello包,建立邻居关系,生成邻居表;
邻居表生成后,基于邻居表中的各个邻居,进行条件的匹配;匹配失败将维持邻居关系,
仅hello包周期保活即可;
条件匹配成功者间将建立邻接关系,邻接关系间将使用DBD来共享本地的数据库摘要;邻接关系间可以通过识别摘要,来请求本地未知的LSA信息;请求时使用LSR,对端使用LSU来分享这些LSA信息; 当获取到网络中所有的LSA后,本地数据库建立完成,LSDB同步结束;数据库表可查看;
默认OSPF协议通过本地的数据库,启用SPF最短路径选路规则,计算本地到达所有未知网段的最佳路径,然后将其加载于路由表中;
收敛完成—hello包周期保活 邻接关系间每30min周期进行DBD的比对,若一致继续保持安静;
结构突变
【1】新增网段—直连新增网段的设备,使用DBD包来告知本地所有邻居;
【2】断开网段—直连断开网段的设备,使用DBD包来告知本地所有邻居;
【3】无法沟通—dead time到时时,断开邻居关系,是否能够重建关注hello包;
名词注解:
LSA:链路状态通告,在不同环境下产生不同类别的LSA;可以是拓扑也或者是路由条目;
LSDB:链路状态数据库—所有LSA的集合
LSA洪泛,LSDB同步-----OSPF收敛的称呼
配置
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
必须携带反掩码
注:区域之间的路由器(即ABR),宣告时应该精确宣告,用反掩码0.0.0.0宣告最好
区域划分的规则:
星型结构—骨干区域0;非骨干大于0;非骨干必须直连骨干区域;
必须存在ABR–区域边界路由器
【1】启动配置完成后,邻居间使用hello包建立邻居关系,生成邻居表;
R2#show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
1.1.1.1 0 FULL/ - 00:00:32 12.1.1.1 Serial1/0
3.3.3.3 0 FULL/ - 00:00:37 23.1.1.2 Serial1/1
邻居的RID 优先级 状态机 下一跳 出接口
邻居关系的建立依赖hello包;
邻接关系的建立依赖hello包和条件匹配;
*表示邻居间hello包中必须完全一致的参数:
1. Hello dead time
2.区域ID;
3. 认证参数;
4.特殊区域标记
【2】邻居关系建立后,邻居间进行条件的匹配;若匹配失败,将保持为邻居关系,仅hello包周期保活;若匹配成功,将入邻接关系的建立;先使用类hello 的DBD进行主从关系选举;
主RID数值大,优先级共享真实的DBD包,分析本地的数据库目录,便于邻居对比,之后通过LSR/LSU/LSack来获取未知的LSA信息;
这些LSA被保存在本地的LSDB中,通过数据库表呈现;
R2#show ip ospf database
DBD包–数据库描述表–lsdb的目录;
隐性确认–使用序列号进行确认
从设备复制主设备的序列号,来对DBD包进行确认
标记位 I位-为1 标识本地发出的第一个DBD包
M位为1 标识不是本地的最后一个
MS位为1 标识本地为主
MTU–在exchange状态时收发的dbd包中携带本地接口的MTU值;邻居间该值必须一致,否则将卡在exchange状态;
注:MTU为最大传输单元,因为OSPF更新量大,如果 MTU不一致,可能会导致拆分传输,这样会多加报头,造成更新量加大!!所以OSPF要求MTU一致,降低更新量!!
【3】当LSDB同步完成,本地将使用spf选路规则,计算本地到达所有未知网段的最短路径,然后将其加载到路由表中;
1、字母O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
O 本地区域的路由;本地通过该区域的拓扑信息计算所得
O IA 域间路由,其他区域的路由;是ABR共享到本区域的路由
O E1/2 域外路由,其他协议或进程的路由条目;是ASBR重发布到OSPF的路由
O N1/2 域外路由,其他协议或进程的路由条目;是ASBR重发布到OSPF的路由,同时本地
处于NSSA区域
管理距离–默认110
度量为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
【4】成为邻接关系的条件–关系到网络类型
点到点和MA;
点到点网络中所有邻居直接建立为邻接关系;
MA网络中需要进行DR/BDR选举,非DR/BDR间不建立邻接关系,保持为邻居关系;
OSPF水平分割–在区域间进行
DR/BDR选举规则:
先必须优先级,默认1;数值大优 若优先级为0,标识不参选
优先级一致比较RID,数值到优
干涉选举:
DR优先级最大,bdr次大,其余不修改
R1(config)#interface fastEthernet 0/0 参选接口上修改优先级
R1(config-if)#ip ospf priority 3
注:OSPF选举非抢占,修改优先级后,必须重启所有设备进程
DR优先级最大,bdr次大,其他设备修改为0;不需要重启进程
切记:不得将所有参选接口修改为0;至少存在DR;
【5】OSPF网络类型 ----ospf的接口网络类型 —
OSPF协议在不同的网络类型下,不同的工作方式
R1#show ip ospf interface loopback 0
Loopback0 is up, line protocol is up
Internet Address 1.1.1.1/24, Area 0
Process ID 1, Router ID 1.1.1.1, Network Type LOOPBACK, Cost: 1
Loopback interface is treated as a stub Host
网络类型 ----------------------- 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
修改为 broadcast ,所有节点必须全部修改,否则无法建立邻居关系,后者无法正常收敛,卡在exstart状态机;
在星型或部分网状建议使用 point-to-multipoint工作方式,如果使用broadcast将出现DR位置问题;
解决----DR固定在一个点;
在全连网状结构中,一般选择broadcast,建议不使用点到多点;因为将全网邻接关系,重复更新,broadcast会选DR不会存在重复更新;
注:NHRP服务器可以多台,用于备份服务器;开启全连网状,不是增加NHRP服务器的数量,而是在没有邻居关系的设备间,互相配置伪广播;
二、LAS优化、特殊区域
1.解决OSPF的不规则区域
OSPF协议的规则区域-星型结构,非骨干区域必须同时工作骨干区域;否则该非骨干区域的ABR不能进行区域间路由共享;
远离了骨干的非骨干区域
不连续骨干
解决方法:
tunnel 在两台ABR上建立隧道,然后将其宣告到OSPF协议中;
缺点:对周期、触发更新和保活流量对中间区域存在资源占用
选路不佳;
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
多进程双向重发布
多进程—一台设备上同时运行多个OSPF进程时,不同进程存在各自的RID和数据库;当从各自邻居处学习到了信息后,存储在自己的数据库中,数据不共享;仅将计算所得路由加载到同一张路由表中; 若将一个接口同时宣告于多个进程,仅最先宣告进行工作;
注:在一个路由器上运行多个OSPF进程相当于在一个路由器上起多个不同的协议
(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
【2】OSPF的数据库表
r1#show ip ospf database 查看数据库表的摘要
数据表为LSDB,是各种类别的LSA信息集合;LSA在不同条件下产生,路由信息或者拓扑信息;使用不同的类别来区分了不同条件的LSA信息;
具体查看某条LSA信息
r1#show ip ospf database router 1.1.1.1
类别名 link-id
所有类别的LSA信息,均存在以下参数
LS age: 328 老化时间,1800s周期更新归0,触发更新归0;最大老化3609s
Options: (No TOS-capability, DC)
LS Type: Router Links LSA类别名,此处为1类;
Link State ID: 1.1.1.1 link-id条目在目录中的番号
Advertising Router: 1.1.1.1 通告者的RID–该LSA的更新源设备的名字
LS Seq Number: 80000005 棒棒糖序列号规则
Checksum: 0x63FA
Length: 60
各种类别的LSA:
名称 --------------------------- 范围 -----------------------通告者 ------------------- 携带的信息
LSA1 router --------------- 设备所在区域 ---------- 该区域的每台设备 ------- 本地直连拓扑
LSA2 network ------------------ 设备所在区域 ------------ DR ---------------- MA网段部分的拓扑
LSA3Summary ---------------- 整个OSPF域 ------------ ABR ---------------- O IA 域间路由
(注意区域水平分割)
LSA4 asbr-summary ---------- ASBR所在区域外的 ----- ABR ----------- ASBR位置
整个OSPF域
LSA5External ----------------- 整个OSPF域 --------------- ASBR ---------- O E1/2 域外路由
LSA7nssa-external ---------- 单个NSSA区域 ----------- ASBR ----------- O N1/2域外路由
=====================================================================
名称 ----------------------------------- link-id ------------------------------------------------ 通告者ID
LSA1 router -------------------------- 通告者的RID ----------------------------- 该区域的每台设备
LSA2 network ------------------------ DR的接口ip ------------------------------- DR的RID
LSA3Summary ---- O IA 路由条目的网络号 – ABR-----经过下一台ABR时,修改为新的ABR RID
LSA4LSA4 asbr-summary ----- ASBR RID--------- ABR(与ASBR在同一区域)经过下一台ABR时,修改为 新的ABR RID
LSA5External ----------------------- O E1/2 路由条目的网络号 -------------- ASBR-默认在传播过程中不修改
LSA7nssa-external ---------------- O N1/2路由条目的网络号 ---------------- ASBR-在传递出该NSSA区域后,被新的ASBR转换为5类
【3】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上有多个OSPF进程也相当于不同协议。
在ASBR上的OSPF协议配置;自动产生空接口防环路由
r4(config)#router ospf 1
r4(config-router)#summary-address 99.1.0.0 255.255.252.0
特殊区域–减少非骨干区域的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类缺省;
但使用时,应该考虑是否会产生环路;
仅在ABR上定义完全即可,区域中其他路由器配置nssa就行了;
r3(config)#router ospf 1
r3(config-router)#area 1 nssa no-summary
切记:使用特殊区域时,ISP连接在哪个非骨干,该区域不做特殊配置;连接到域外协议时,OSPF中与该域外协议所相连的非骨干区域也不能做特殊区域配置;否则可能导致环路;
三、 扩展配置
1、 成为邻接关系的条件
网络类型相关
1) 点到点网络 – 在一个网段内仅支持存在两个节点
2) MA网络—多路访问网络—一个网段内的节点数量不限制
在点到点网络中,邻居关系必然成为邻接关系;
在MA网络中,若不限制邻接关系,将指数性增加重复更新;
需要进行DR/BDR选举;所有的非DR/BDR设备间仅建立邻居关系,不建立邻接关系;
选举规则:
先比较接口优先级,0-255;默认为1,数值越大越优;
若优先级相同,比较参选接口所在设备的RID,数值大优;
通过修改参选接口的优先级,可以起到干涉选举效果
[r2]interface GigabitEthernet 0/0/0
[r2-GigabitEthernet0/0/0]ospf dr-priority 2
DR/BDR选举非抢占;故修改优先级后,必须重启ospf的进程,才能重新选举
reset ospf process
Warning: The OSPF process will be reset. Continue? [Y/N]:y
若将接口优先级需改为0,标志着设备放弃选举;故在一个网段中至少必须存在DR;
2、 OSPF的认证 —邻居间用于安全的保障
[r1-GigabitEthernet0/0/1]ospf authentication-mode md5 1 cipher 123456
在直连邻居的接口上配置
邻居间秘钥的编号及密码必须完全一致
3、 OSPF的区域汇总—在ABR上将区域A的路由计算好后,传递到区域B时,方可进行汇总计算配置
[r2]ospf 1
[r2-ospf-1]area 0
[r2-ospf-1-area-0.0.0.0]abr-summary 1.1.0.0 255.255.252.0
在R2这台ABR上,把R2通过区域0学习到的拓扑计算所得路由,汇总成1.1.0.0/22共享到其他的区域;
4、 OSPF的沉默接口 —用于连接PC等终端设备的接口,不再发生路由协议的信息;
不得用于连接邻居的接口,否则无法正常收敛
[r1]ospf 1
[r1-ospf-1]silent-interface GigabitEthernet 0/0/2
5、 加快收敛 修改接口的计时器,hello time10s,dead time为hello time的4倍;
修改时需维持原有倍数关系,且ospf要求邻居间的hello time和dead time必须完全一致,否则无法正常建立邻居关系;修改本端的hello time,本端的dead time自动4倍关系匹配;且不建议修改过小
[r1-GigabitEthernet0/0/1]ospf timer hello 5
6、 缺省路由—在边界路由器上,配置缺省信息后,将向内网发布缺省路由,使得内部设备自动产生缺省指向边界路由器的位置;若边界路由器本地需要缺省指向ISP,需要手工配置了;
[r3]ospf 1
[r3-ospf-1]default-route-advertise always