目录
一,ospf 数据包类型
1.hello包:用来邻居的发现,关系的建立,保活邻居关系
hello时间——10s/30s发送一次
dead time——死亡时间(默认等于四倍的hello时间40s)
OSPF在某些特殊的网络环境下会出现每30s发送一次hello包的情况(在NMBA网络)
RID——用来区分和标识不同的OSPF路由器的身份(32位二进制构成),就是ospf中的名称
1.唯一性
2.格式统一——按照ip地址的格式去执行ipv4
设备获取RID方法
1.手工配置
2.自动生成
如果路由器配置了环回地址,那么它会选择环回地址中数值最大的作为自己的RID,如果路由器没有环回地址,则会选择接口ip地址数值最大的作为自身的RID
30min 周期更新(更新量大,不够自信) + 触发更新
2.DBD包——数据库描述包(目录,对比)
LSDB数据库——用来存储LSA(拓扑信息)
3.LSR包——链路状态请求包
用来请求我没有的LSA信息
4.LSU包——链路状态更新包
真正携带LSA信息的数据包
5.LSACK包——链路状态确认包
LSA:链路状态通告 具体一条一条拓扑或路由信息:基于LSU包进行传递
二,七层状态
1.down
一旦接收到其他设备发送过来的hello包进入下一个状态机
2.init 初始化
接收到的hello包中若存在本地的RID,进入下一个状态机
3.TWO-way 双向通讯状态
标志着邻居关系的建立
关注条件:若点到点网络,邻居间直接进入下一个状态机,
在MA网络中将进行DR/BDR选举(40s),非DR/BDR间不能进入下一个状态机
条件匹配——只有条件匹配成功的设备,才能建立邻接关系(毗邻关系),如果条件匹配失败则停留在邻居关系,并通过hello包每10s进行保活
DR--指定路由器(指的是接口)
DR和其他广播域内所有的路由器均建立邻接关系
BDR--备份指定路由器
DRother--一个广播域,除了DR和BDR的其他路由器处于邻居关系
选择广播域中RID最大的作为DR,RID次大的成为BDR,剩余设备为DRother
DR和BDR的选举是非抢占的(当在次加入其他比DR的id大的环回,不会重新选举DR和BDR)
选举时间最大为死亡时间(四倍的hello时间)
主从关系的选举——选举标准看RID的大小,目的错开发送数据包
4.EXstart 预启动
标志可以建立为邻接关系
使用不携带目录信息的DBD包进行主从关系的选举,rid数值大为主,优先进入下一个状态机 ——排序
5.Exchange 准交换 :
使用携带目标的DBD包进行共享,由主先进行,从在收到主的DBD包后从在发出DBD包
6.LOading 加载
对比DBD目录后,基于本地未知的LSA信息,使用LSR向邻居发出请求,邻居使用LSU来进行更新共享LAS信息,本地在收到LSU后需要ACK确认;加载过程完成后,邻居间的数据库一致
7.FUll状态
标志着邻接关系的彻底建立(只有邻接状态才真正共享LSA信息)
三,ospf 的工作过程
启动OSPF的配置完成后,直连的邻居间组播收发hello包,建立邻居关系,生成邻居表,之后关注条件,条件不满足的邻居间将维持为邻居关系,仅hello包周期保活即可;
条件匹配的邻居间可以建立为邻接关系
先使用不携带数据库目录的DBD包进行主从关系的选举,目的在于有序进行数据的共享
再使用携带数据库目录的DBD,共享本地数据库目录;之后邻居基于所有的目录对比出本地未知的LSA目录;再使用LSR进行查询,对端所有LSU回复,本地LSACK表示确认;---使有DBD/LSR/LSU/LSACK来获取本地未知的LSA信息;生成数据库(LSDB)
当网络中所有路由器的数据库同步完成后,邻接关系建立;本地基于数据库生成有向图-->最短路径树-->计算本地到达所有未知网段的最短路径,然后将其加载到路由表
收敛完成后,仅hello包每10s周期保活邻居关系;每30min邻接间周期比对数据库目录,若不一致将马上使用LSU和LSACK进行不一致部分收敛
四,结构突变:
1.新增网段--直连新增网段的设备直接使用LSU向本地所有的邻接进行触发更新,收到的邻接需要ack确认
2.断开网段--直连新增网段的设备直接使用LSU向本地所有的邻接进行触发更新,收到的邻接需要ack确认
3.无法沟通:每10s一个hello包,存在四倍hello时间的一个dead time;在dead time到时时将断开邻接,邻居关系,删除路由
五,OSPF的配置操作
1.启动OSPF ——可以定制进程号和RID
[r6]ospf 1 router-id 1.1.1.1
[r6-ospf-1]
进程号仅具有本地意义,默认进程为1; RID的格式为IPV4地址,要求全网唯一;
RID的生成顺序
1.手工配置
2.环回接口最大数值的ip地址
3.物理接口最大数值的IP地址
2.创建区域
[r1-ospf-1] area 0
[r1-ospf-1-area-0.0.0.0]
3.宣告:
1.区域划分
2. 激活
3.接口信息:共享接口的拓扑或者路由
[r6-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0
[r6-ospf-1-area-0.0.0.0]network 12.1.1.0 0.0.0.255
ospf协议在宣告接口网段时,需要携带反掩码
4.查看ospf邻居表
[r7]display ospf peer
5.查看ospf邻居关系简表
[r7]display ospf peer brief
6.查看数据库表
[r7]display ospf lsdb
[r7]display ospf lsdb router 2.2.2.2 查看数据库表详情
7.手动修改参考宽带
默认优先级为10 ,度量为cost值;rip的度量为跳数
Cost=开销=参考带宽/接口带宽 默认参考为100M 当接口带宽大于参考带宽时,cost值为1;OSPF优选整段路径cost值之和最小为最短路径
故当接口带宽大于参考带宽的网络可能导致选路不佳,建议修改参考带宽
[r6-ospf-1]bandwidth-reference 1000 单位为兆 修改时整个网络所有设备需要一致
8.修改参选接口的优先级
[r1-GigabitEthemet0/0/2]ospf dr-priority 3
9.查看接口优先级
[r6]display ip routing-table protocol ospf
10.缺省路由
在连接内外网的边界路由器上,配置缺省命令后;该设备将向内网运行rip的路由器发送的缺省信息,之后内部所有运行OSPF协议的路由将生成缺省路由指向边界路由器方向;若边界路由器需要指向ISP(运营商)的缺省,还需要管理员在边界路由器上手动配置指向ISP的缺省指令
[r3-ospf-1]default-route-advertise always
11.ospf的认证
在直连的RIP邻居间设定一个共享密钥,用于核实身份,避免被攻击,保障更新的安全;华为设备在配置认证后,还可以对更新的数据进行密文传输
[R1-GigabitEthernet0/0/0]ospf authentication-mode simple cipher ht123123 /接口认证明文密码
[R3-ospf-1-area-0.0.0.0]authentication-mode md5 cipher ht123123/区域认证密文密码
12.ospf的手工汇总
在ABR接口上将0区域和1区域配置即可
[r1-ospf-1-area-0.0.0.0]abr-summary 192.168.1.0 255.255.255.128
13.ospf重启
<r1>reset ospf process
14.OSPF开启MTU检测
[r1-GigabitEthernet0/0/1]ospf mtu-enable 在直连邻接的接口上开启,必须两端均
15.查看所有本地学习以及共享出去的OSPF路由
[r1]display ospf routing
16.查看ospf的工作方式
[r1]display ospf interface LoopBack 0
17修改接口的ospf工作方式
修改该网段所有接口为 Broadcast
[r1]int t0/0/0
[r1-Tunnel0/0/0]ospf network-type broadcast
六,区域划分规则:
1.星型结构 --区域0为骨干区域,大于0为非骨干 ,所有的非骨干区域必须直连到骨干区域
2.ABR 区域边界路由器,两个区域互联时,必须基于ABR进行
当启动配置完成后,邻居间收发hello包,建立邻居关系,生成邻居表;
3.邻居间hello包中有五个参数必须一致,否则无法建立邻居关系
1.区域id
2.认证字段
3.hello时间,deadtime
4.特殊区域标记
5.华为设备还要求直连邻居间接口配置的ip地址其子网掩码长度一致
当邻居关系建立后,进行条件的匹配;匹配失败将维持邻居关系,仅hello包周期保活即可
匹配成功可以建立邻接关系;在建立邻接关系的过程中,将使用DBD/LSR/LSACK来获取本地所有未知LSA信息,与邻接(同步)出一样的数据库(LSDB)表;
LSDB--链路状态数据库 所有LSA的集合
七,收敛完成
当邻接关系间数据库同步完成后,本地基于数据库转换为有向图。之后将有向图转换为最短路径树型结构,再树型结构中以本地为起点,计算到达所有未知网段的最短路径,然后将它们加载到本地的路由表中
查看接口优先级
[r6]display ip routing-table protocol ospf
在华为设备中,ospf的优先级为10 度量为cost值,小优
cost值=参考带宽/接口带宽 ospf 优选 cost之和最小的为最佳路径
注意:若接口带宽大于参考带宽,则可能导致选路不佳,可以手工修改参考带宽
[r6-ospf-1]bandwidth-reference 1000 单位为兆 修改时整个网络所有设备需要一致
八,ospf的拓展配置
1.从邻居成为邻接关系的条件——和网络类型有关
1.点到点 一个网段物理上只能存在两个节点 ---串线链路上的HDLC/PPP技术
2.MA多路访问--在一个网段中物理节点的数量不限制--以太网
OSPF协议在点到点网络中,邻居间将直接建立为邻接关系
MA网络中由于OSPF协议需要邻接关系间进行数据库对比,故不支持接口水分割;若两两间均为邻接关系,将可能出现大量的重复更新,因此,在MA网络中将进行DR/BDR选举,所有非(DR/BDR)之间维持为邻居关系,仅收发hello包,不能进入下一个状态机;
1.1,DR和BDR选举规则:
先比较参选接口的优先级,数值大优,默认为1,取值范围0-255,若为0代表不参选
若优先级相同,比较参选设备的RID数值,大优
[r1-GigabitEthemet0/0/2]ospf dr-priority 3 修改参选接口的优先级
注意:该选举是非抢占的,故在修改优先级后,不会重新选举;在管理员希望重新去选举时,重启所有设备的ospf进程后方可重新选举
<r6>reset ospf process
Warning: The OSPF process will be reset. Continue? [Y/N]:y要求所有设备必须在40s之内全部重启ospf进程
注意:建议做法将DR优先级修改为最大,BDR修改为次大,其他所有设备修改为0放弃选举,每一个网段都会选举一个DR和BDR
2.手工认证
直连的邻居间进行认证配置后,可以实现设备间的身份核实,华为还可以对更新信息进行加密,保障更新的安全性,在直连邻居的接口上配置,邻居的认证模式,编号,密码必须完全一致
[r6-GigabitEthernet0/0/0]ospf authentication-mode md5 1 cipher 12345
3.沉默接口
用于连接终端设备的接口,被沉默接口将只能接收不能发送路由协议的信息,不能配置于连接邻居的物理接口,否则无法建立ospf的邻居关系
[r6-ospf-1]silent-interface GigabitEthernet 0/0/0
4.区域汇总
ospf协议不支持接口汇总,因为在同一个区域内传递的是拓扑信息,拓扑信息不能进行汇总配置,区域间的ABR在共享路由条目时可以汇总,故ospf支持的是区域汇总
[r7]ospf 1
[r7-ospf-1]area 0 本地通过该区域的拓扑信息,计算所得路由共享给其他区域时进行汇总
[r7-ospf-1-area-0.0.0.0]abr-summary 1.1.0.0 255.255.252.0
5.缺省路由
在连接外网的边界路由器上,配置缺省指令后,边界路由将向内部发送缺省信息,之后内部所有运行ospf协议的路由将自动生成缺省路由,指向边界路由器,若边界路由器需要缺省路由指向isp,需要手工在边界路由器上配置静态缺省路由
本地通过该区域的拓扑信息,计算所得路由共享给其他区域时进行汇总
[r8-ospf-1]default-route-advertise always
九,RIP和OSPF的相同点与不同点
相同点:
1.rip和ospf都是无类别的动态路由器协议,可以进行汇总和子网划分
2.都是使用组播发送数据包——rip224.0.0.9 ospf 224.0.0.5 224.0.0.6
3.都支持等开销负载均衡
不同点:
rip只能适用中中小型网络
ospf可以适用中大型的网络(世界80%网络都是靠ospf实现的)
注意:
OSPF链路状态路由协议中的距离矢量特征:
区域内部传递拓扑信息
区域之间——传递路由信息
ABR——区域边界路由器(接口)——必须同时属于两个区域
ospf的区域划分也要根据实际情况——没有规定大小
如果进行了区域划分——多区域ospf网络
如果没有进行了区域划分——单区域ospf网络
ospf设置了区域id——area id ——32位二进制构成——由点分十进制来表示
骨干区域——它的编号只能是0 area 0 = 0.0.0.0
十,hello包结构
邻居间hello包中必须完全一致的参数:否则无法建立邻居关系
1.hello 、dead time
2区域ID --区域划分规则--ABR
3认证字段
4末梢区域标记 -- 特殊区域
5华为系还要求邻居间直连接口ip的子网掩码必须一致;
邻居关系建立后,关注条件,条件不匹配设备间维持邻居关系,仅hello包周期保活即可;
十一,DBD包的扩展知识点:
1.DBD包中携带接口的MTU值
要求邻接间的MTU必须一致,否则将卡在exstart或exchange状态机;华为默认未开启MTU检测
[r1-GigabitEthernet0/0/1]ospf mtu-enable 在直连邻接的接口上开启,必须两端均开启
2.DBD包中的标记位
I M MS
I为1标识该DBD包为本地发出的第一个DBD
M为1标识该DBD包不是本地发出的最后一个DBD包
MS 为1标识本地为主,为0代表从
3.隐性确认
主从被选举后,从将使用主的序列号为确认接收到了主的DBD包,即使从设备已经不需要发送DBD,依然要使用未携带信息的DBD来进行隐性确认;
十二,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位主机路 由共享
2.点到点(HDLC/PPP/GRE) p2p hello time10s 不进行DR/BDR选举
3.BMA (以太网) Broadcast hello time 10s DR/BDR选举
4.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选举,所以建邻后无法正常收敛;因此该网段所有接口必须修改成一样的工作方式;
注意:在MGRE环境中,若网络拓扑为星型;且所有接口的工作方式,均修改为broadcast;
由于分支站点之间没有伪广播,无法知道对端的存在,故DR/BDR选举将混乱;只能让中心站点成为DR,没有BDR;
(2)修改所有接口的工作方式为p2mp(点到多点)
P2MP 工作方式 hello time为30,不进行DR和BDR选举,仅在一个中心站点接口上配置即可,会导致选路不佳,在MGRE环境中不建议使用
P2MP是为帧中继(FR)这种物理的NBMA网络设计使用
十三,关于MGRE的拓扑
- 星型 -- 中心站点固定ip地址,所有分支仅和中心注册
- 全连网状 --- 所有站点均为固定ip,所有设备均为中心,两两间均注册
- 部分网状 -- 部分设备为固定ip地址,存在部分中心和部分的分支
在以上三种环境中运行OSPF的方案:
都是在tunnel接口上改工作方式
- 星型 -- 所有接口工作方式为broadcast,仅中心站点为DR,无BDR
- 全连 -- 所有接口工作方式为broadcast;DR/BDR将默认自动选举成功
- 部分 -- 所有接口工作方式为broadcast;合理安排DR的位置