一 ospf的数据包 (五种):
hello包 – 组播收发,用于邻居、邻接关系的发现、建立、周期保活
DBD – 数据库描述包-- 本地LSDB(链路状态数据库)目录
LSR—链路状态请求 – 用于询问对端本地未知的LSA信息
LSU-- 链路状态更新 – 用于共享具体的每一条LSA信息
LSack 链路状态确认 – 确认包
OSPF的数据包是跨层封装于3层报头后方 ,协议号89
二、OSPF的状态机 – 两台OSPF路由器间不同关系的阶段
Down :一旦接收到对端的hello包进入下一个状态
Init 初始化 : 若接收到的hello包中存在本地的RID,那么进入下一个状态机
2way :双向通讯邻居关系建立的标志
条件:点到点网络直接进入下一个状态机;MA网络进行DR/BDR选举,非DR/BDR之间能进入下一个状态机;
Exstart预启动 :使用不携带数据库目录信息的DBD包,进行主从关系的选举,RID数值大为主,优先 进入下一个状态机; 主从目的主要在于信息交互的有序性,避免同时收发造成网络拥塞
exchange准交换 :使用携带数据库目录信息的DBD包,进行目录共享,需要ACK确认
loading加载 :查看完邻接的目录信息后,针对本地未知的LSA,使用LSR包进行查询,对端使用LSU 进行应答, 本地接收到LSA后使用ack进行确认 --- 获取未知的LSA信息Full 转发标志着 邻接关系已经建立。
Full:转发 邻接关系建立的标志
三、OSPF的工作过程
启动配置完成后,邻居间组播收发hello包,建立邻居关系;生成邻居表;
邻居关系建立后,将进行条件的匹配,匹配失败将维持邻居关系,仅hello包周期保活即可;
匹配成功可以建立邻接(毗邻)关系;邻接关系间将使用DBD/LSR/LSU/LSack来获取本地未知的LSA信息;获取完成后,邻接关系间数据库同步一致;--- 数据库表;
之后本地基于本地的数据库所有内容整理出有向图--->最短路径树结构--->将本地到达所有未知网段的最短路径加载于本地的路由表中;
收敛完成后,邻居间仅hello包周期保活即可;每30min邻接关系间周期比对数据库目录,
若不一致将马上使用LSU和LSACK进行不一致部分收敛;
拓扑突变 :
1)新增网段:直连新增网段设备,用LSU直接进行触发更新
2)断开网段:直连断开网段设备,用LSU直接进行触发更新
3)无法沟通:dead time 为hello time4倍;在dead time到时时将断开邻接、邻居关系,删除路由;
四、配置OSPF 路由协议
1.在交换机配置 OSPF 路由
(1)指定进程号、router-id
[Switch]ospf 1 router-id 192.168.1.1
其中 router-id 必须唯一,用设备上某个接口 IP 表示。
(2)指定 OPSF 区域号
[Switch-ospf-1]area 0
(3)指定本地直连网络及其反掩码(255.255.255.255-网络掩码 )
[Switch-ospf-1-area-0.0.0.0]network 192.168.1.0 0.0.0.255
[Switch-ospf-1-area-0.0.0.0]network 192.168.2.0 0.0.0.255
[Switch-ospf-1-area-0.0.0.0]network 192.168.3.0 0.0.0.255
2.在R配置 OSPF 路由
[r1]ospf 1 router-id 1.1.1.1 启动时,定义进程号,仅具有本地意义;建议配置RID;
RID格式为ipv4地址,且需要全网唯一; 手工配置–环回接口上取最大数值的ip地址—物理接口上最大ip地址的数值
宣告:1、区域划分 2、接口激活协议 3、传递接口信息
[r1-ospf-1]area 0
[r1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0
[r1-ospf-1-area-0.0.0.0]network 12.1.1.0 0.0.0.255
区域划分规则:
1、星型结构 – 区域0为骨干 大于0为非骨干 非骨干区域必须直连骨干区域
2、ABR–区域边界路由器 两个区域间必须依靠ABR连接
启动配置完成后,邻居间使用hello包建立邻居关系,生成邻居表:
hello包 – 组播收发 周期发送 – hello time 10s 或30s dead time 为hello time 4倍
邻居间hello包中有一些参数必须完全一致,否则无法建立邻居关系;
Hello 和dead time 、区域ID、认证参数、末梢区域标记;另外在华为的设备中OSPF要求邻居间接口上配置的ip地址,其掩码长度必须一致;
[r2]display ospf peer 查看邻居表
[r2]display ospf peer brief 查看邻居关系简报
当邻居关系建立后,邻居间进行条件匹配,匹配失败,将保持为邻居关系;匹配成功,将建立为邻接关系,邻接关系将使用DBD/LSR/LSU/LSack来获取本地未知的所有LSA信息,同步生成数据库表—LSDB 链路状态数据库
[r2]display ospf lsdb 查看数据库表
数据库表同步完成后,邻接间的互动完成,仅hello包保活;之后本地基于本地的数据库表;
转换为有向图,再转换为树形结构,最终将本地到达所有未知网段的最短路径,加载于本地的路由表中:
display ip routing-table protocol ospf
默认ospf协议在华为设备中,优先级为10;度量为cost值
cost值=开销值= 参考带宽/接口带宽 默认参考带宽为100M
ospf协议将cost值之和最小定义为最佳路径,加载于本地路由表中
若接口带宽大于参考带宽,cost值为1,将可能导致选路不佳;可以修改默认的参考带宽
[r1]ospf 1
[r1-ospf-1]bandwidth-reference ?
INTEGER<1-2147483648> The reference bandwidth (Mbits/s)
[r1-ospf-1]bandwidth-reference 1000
切记:一旦修改,整个网络所有ospf路由器需要一致;
关于DBD包的扩展知识点:
- 、Ospf的DBD包中将携带接口的MTU值,要求邻接间的MTU必须一致,否则将卡在exstart或exchange状态机;
华为默认为开启MTU检测
[r1-GigabitEthernet0/0/1]ospf mtu-enable 在直连邻接的接口上开启,必须两端均开启
- DBD包中的标记位
I M MS I为1标识该DBD包为本地发出的第一个DBD M为1标识该DBD包不是本地发出的最后一个DBD包 MS 为1标识本地为主,为0代表从
- 隐性确认
主从被选举后,从将使用主的序列号为确认接收到了主的DBD包,即使从设备已经不需要发送DBD,依然要使用未携带信息的DBD来进行隐性确认;
邻接关系间数据库同步完成后,本地基于数据库生成---有向图 ---> 最短路径树--->将本地到达所有未知网段的最短路径加载于本地的路由表中;
默认优先级为10 ,度量为cost值;
Cost=开销=参考带宽/接口带宽 默认参考为100M 当接口带宽大于参考带宽时,cost值为1;OSPF优选整段路径cost值之和最小为最短路径
故当接口带宽大于参考带宽的网络可能导致选路不佳,建议修改参考带宽
[r1]ospf 1
[r1-ospf-1]bandwidth-reference ?
INTEGER<1-2147483648> The reference bandwidth (Mbits/s)
[r1-ospf-1]bandwidth-reference 1000 切记:全网设备参考带宽需要修改一致
[r1]display ospf routing 查看所有本地学习以及共享出去的OSPF路由
五、关于OSPF协议从邻居建立成为邻接的条件
点到点 --- 所有邻居直接建立为邻接关系
MA---由于OSPF协议需要邻接关系间进行数据库对比,故不支持接口水分割;若两两间均为邻接关系,将可能出现大量的重复更新;因此,在MA网络中ospf协议将进行DR/BDR选举,所有非DR/BDR设备间维持邻居关系,不进行数据库共享;
选举规则:1)先比较参选接口的优先级 0-255 默认为1,大优
2)若优先级相同,比较参选的RID,数值大优
若需要干涉选举,可以修改参选接口的优先级
[r1]int g0/0/1
[r1-GigabitEthernet0/0/1]ospf dr-priority 3
切记:选举是非抢占的,故修改后该网段依然维持原有角色,若希望重新选举,需要重启该网段所有设备的OSPF进程;
<r1>reset ospf process 重启ospf进程
Warning: The OSPF process will be reset. Continue? [Y/N]:y
建议直接将DR优先级修改最大,BDR次大,其他设备优先级修改为0,0标识不参选,可以不同重启任何设备的ospf进程;
六、OSPF的接口网络类型 — OSPF协议在不同的网络类型,其工作的方式不同
[r1]display ospf interface LoopBack 0
Interface: 1.1.1.1 (LoopBack0)
Cost: 0 State: P-2-P Type: P2P MTU: 1500
网络类型 ospf接口网络类型(工作方式)
1)环回 p2p 注:环回接口为虚拟接口,虽然显示工作方式为
p2p,但实际上不是真正的p2p,而是环回的
特有工作方式----无hello包收发 以32位主机路由共享
点到点(HDLC/PPP/GRE) p2p hello time10s 不进行DR/BDR选举
BMA (以太网) Broadcast hello time 10s DR/BDR选举
NBMA(帧中继、MGRE)
在MGRE中,由于MGRE和GRE均使用tunnel接口,故工作方式均默认为p2p
在普通的GRE中,由于GRE本身就是点到点网络类型,所有p2p工作方式正常;
而MGRE为多点的MA环境,再使用p2p公司将出现故障:
p2p工作方式仅允许存在一个邻居;华为默认仅和最先接收到的hello邻居建立;
Cisco 为循环建立邻居关系; --- 均无法在该网段正常收敛
解决方案:
修改接口的ospf工作方式:
1)修改该网段所有接口为 Broadcast
[r1]int t0/0/0
[r1-Tunnel0/0/0]ospf network-type broadcast
切记:由于p2p和 broadcast hello time均为10s,故将能建立邻居关系,但p2p不进行DR/BDR选举,所以建邻后无法正常收敛;因此该网段所有接口必须修改成一样的工作方式;
注解1:在MGRE环境中,若网络拓扑为星型;且所有接口的工作方式,均修改为broadcast;
由于分支站点之间没有伪广播,无法知道对端的存在,故DR/BDR选举将混乱;只能让中心站点成为DR,没有BDR;
- 修改所有接口的工作方式为p2mp
P2MP 工作方式 hello time为30,不进行dr、bdr选举
P2mp是为帧中继这种物理的NBMA网络设计,在MGRE环境中不建议使用
补充内容:关于MGRE的拓扑
星型 -- 中心站点固定ip地址,所有分支仅和中心注册
全连网状 --- 所有站点均为固定ip,所有设备均为中心,两两间均注册
部分网状 -- 部分设备为固定ip地址,存在部分中心和部分的分支
在以上三种环境中运行OSPF的方案:
星型 -- 所有接口工作方式为broadcast,仅中心站点为DR,无BDR
全连 -- 所有接口工作方式为broadcast;DR/BDR将默认自动选举成功
部分 -- 所有接口工作方式为broadcast;合理安排DR的位置
七、关于OSPF的不规则区域问题
1、远离骨干的非骨干
2、不连续骨干
解决方案:
1、tunnel 在骨干区域与非法ABR间建立一条隧道,之后将该隧道链路宣告到OSPF协议中
缺点:
1)周期的hello与更新,包括触发更新,将一致占用中间穿越区域;
2)选路不佳
2、OSPF的虚链路
由非法ABR设备,通过直连区域的合法ABR进行授权,来转发路由
由于没有新增链路,故不存在选路不佳问题
[r2]ospf 1
[r2-ospf-1]area 1 两台ABR间的直连区域(同时处于该区域)
[r2-ospf-1-area-0.0.0.1]vlink-peer 4.4.4.4 对端ABR的RID
[r2]display ospf vlink
缺点:虚链路上的两台ABR间的周期资源占用问题;
1)在思科中,取消两台设备的周期行为,hello、更新均收发一次;–不可靠
2)在华为中,保留周期–占资源
3、多进程双向重发布;
ospf多进程:一台路由器上的多个进程,每个进程拥有自己的数据库,独立计算路由条目,且计算所有不共享;最终将所有最佳路径加载于同一张路由表内;
路由器的一个接口只能工作在一个进程中;
可用于解决不规则区域,将不规则位置工作不同的进程中,实现分开,之后利用重发布技术来共享路由表; 解决了选路不佳和资源占用的问题
[r4]ospf 1
[r4-ospf-1]import-route ospf 2
[r4-ospf-1]q
[r4]ospf 2
[r4-ospf-2]import-route ospf 1
八、OSPF的数据库表
<r1>display ospf lsdb 查看OSPF数据库目录
LSDB中装载了所有可以学习到的LSA;
LSA-- 链路状态通告 一条拓扑或一条路由条目被称为一条LSA
OSPF协议的数据库是本地所有LSA的集合,不同网络环境下将产生不同类别的LSA;
LSA在共享时基于LSU数据包传递;
各种类别的LSA;
如何查看一条LSA的具体信息
<r1>display ospf lsdb router 2.2.2.2
类别 link-id
一下内容为所有类别LSA均携带的基本信息
Type : Router 类别名,此处为1类
Ls id : 2.2.2.2 在目录中页码号
Adv rtr : 2.2.2.2 通告者的RID,该条LSA发起源的设备RID
Ls age : 1532 老化时间,单位秒;周期1800归0,触发当下归0;最大老化3609;
Len : 48 长度
seq# : 80000026 序列号
chksum : 0x568e 校验码
传播范围 通告者 携带内容
LSA1 Router 单区域 该区域每台OSFP路由器 本地直连拓扑
LSA2 Network 单区域 该网段的DR设备 单个MA网段的拓扑
LSA3 summary 整个OSPF域 ABR 域间路由条目
LAS4asbr 注1 注2 ASBR位置验算
注1:除ASBR所在区域外的整个ospf域;ASBR所在区域通过1类告知ASBR位置
注2:ABR,和ASBR在同一区域路由器,该路由器同时连接骨干区域,是一台ABR
LAS5 ase 整个OSPF 域 ASBR 域外路由条目
Link-id 通告者
LSA1 通告者RID 该区域每台路由器
LSA2 DR接口的ip地址 该网段的DR设备
LSA3 域间路由的目标网络号 ABR,经过下一台ABR进入新的区域时,修
改为新经过的ABR
LAS4 ASBR的RID ABR,经过下一台ABR进入新的区域时,修
改为新经过的ABR
LAS5 域外路由的目标网络号 ASBR
九、OSPF优化–减少LSA的更新量
1、汇总 — 减少骨干区域的路由条目数量
2、特殊区域-- 减少非骨干区域的路由条目数量
【1】汇总–OSPF协议不支持接口汇总,在一个区域内,邻接间传递的是拓扑信息,不能进行汇总;故只能在交互路由的边界设备进行汇总
1)域间路由汇总–在区域间的ABR上,交互区域间路由条目时进行汇总配置
[r2]ospf 1
[r2-ospf-1]area 1 本地通过该区域1/2类LSA计算所得路由,可以汇总后传递给其他区域
[r2-ospf-1-area-0.0.0.1]abr-summary 3.3.0.0 255.255.252.0
2)域外路由汇总—ASBR在将外部的路由条目通过重发布协议,共享到OSPF协议中时;
可以进行汇总
[r4]ospf 1
[r4-ospf-1]asbr-summary 99.1.0.0 255.255.252.0
【2】 特殊区域 – 用于减少各个非骨干区域的LSA数量
不能为骨干区域,不能配置虚链路
[1] 同时不能存在ASBR
1)末梢区域–拒绝4/5类的LSA;由该区域连接骨干区域的ABR向该区域发布一条3类的缺省
[r2]ospf 1
[r2-ospf-1]area 1
[r2-ospf-1-area-0.0.0.1]stub
注:该区域内的所有路由器均需配置该命令
2)完全末梢区域 在末梢区域的基础上,进一步拒绝3类的LSA;仅保留一条3类的缺省路由
先将整个区域所有路由器配置为末梢区域;然后仅再在连接骨干区域的ABR上配置完全即可
[r2]ospf 1
[r2-ospf-1]area 1
[r2-ospf-1-area-0.0.0.1]stub no-summary
[2] 存在ASBR
1)NSSA 非完全末梢区域 – 该区域将拒绝4/5类LSA,由该区域连接骨干区域的ABR向该区域发布一条7类的缺省路由;该区域内的ASBR导入域外路由时,基于7类导入,之后通过该区域连接骨干的ABR传递到骨干区域时,转换为5类进入骨干区域;
NSSA设计的重点,不是减少该区域内ASBR产生的域外路由,而是网络中其他部分的ASBR产生的域外路由;
[r2]ospf 1
[r2-ospf-1]area 1
[r2-ospf-1-area-0.0.0.1]nssa 本区域内部所有设备均需配置
2)完成NSSA — 在NSSA的基础上,进一步拒绝3类LSA的进入,由该区域连接骨干区域的ABR向该区域发布一条3类的缺省
先将该区域配置为NSSA区域,之后仅在该区域连接骨干的ABR上配置完全即可
[r2]ospf 1
[r2-ospf-1]area 1
[r2-ospf-1-area-0.0.0.1]nssa no-summary
切记:NSSA和完全NSSA的工作环境,需要考虑ISP(运营商)所在位置,否则可能导致环路出现
十、OSPF的扩展配置
1、认证
【1】接口认证
1)接口明文
r1(config)#interface ethernet 0/0
r1(config-if)#ip ospf authentication 开启明文认证需求,开启后本地所有ospf数据包中认证类型字段被修改,邻居间若不一致将不能建立邻居关系
r1(config-if)#ip ospf authentication-key cisco123 配置明文密码
2)接口密文
r6(config)#int s0/1
r6(config-if)#ip ospf authentication message-digest 开启秘文认证需求,开启后本地所有ospf数据包中认证类型字段被修改,邻居间若不一致将不能建立邻居关系
r6(config-if)#ip ospf message-digest-key 1 md5 cisco123
【2】区域认证
例:在R1上开启关于区域0的明文或密文认证;然后仅仅只是将R1上所有属于区域0的接口,认证类型字段修改,相当于在R1上所有区域0接口配置明文或密文认证需求;但每个接口的秘钥还是需要逐一配置;
r12(config)#router ospf 1
r12(config-router)#area 2 authentication 明文
r12(config-router)#area 2 authentication message-digest 密文
【3】虚链路认证
r1(config)#router ospf 1
r1(config-router)#area 1 virtual-link 4.4.4.4 authentication
r1(config-router)#area 1 virtual-link 4.4.4.4 authentication-key cisco
r1(config-router)#area 1 virtual-link 4.4.4.4 authentication message-digest
r1(config-router)#area 1 virtual-link 4.4.4.4 message-digest-key 1 md5 cisco123
2、被动接口
r1(config)#router ospf 1
r1(config-router)#passive-interface ethernet 0/1
3、加快收敛—邻居间直连接口hello和dead 必须完全一致
r7(config)#interface s0/1
r7(config-if)#ip ospf hello-interval 5
r7(config-if)#ip ospf dead-interval 20
注:修改本端的hello time本端的dead time自动4倍关系匹配;
4、缺省
3类缺省—通过特殊区域自动产生;
末梢、完全末梢、完全NSSA自动产生;
5类缺省—本地路由表中必须已经存在缺省路由,通过什么方式产生的无所谓;
之后,可以使用专用指令将其重发布到OSPF协议中
r9(config)#router ospf 2
r9(config-router)#default-information originate
默认进入路由为类型2,OE2;度量为1;
类型1:在内部传递时不叠加内部度量;
类型2:在内部叠加度量; 默认
若网络中存在多台边界路由器,均进行重发布行为,建议修改为类型1;
r9(config-router)#default-information originate metric-type 1
r9(config-router)#default-information originate always 强制向内网发布缺省路由信息;
7类缺省–ASBR上通过其他协议学习到的缺省导入OSPF,同时所导入区域为NSSA区域;
r12(config)#router ospf 1
r12(config-router)#area 2 nssa default-information-originate
注:若一台设备同时学习多种缺省; 内部优于外部 3类优于5/7类;
若5类和7类相遇,先比度量,小优;若度量一致那么5类优于7类;
版权归原作者 DK_one 所有, 如有侵权,请联系我们删除。