OSPF:开放式最短路径优先协议
1.距离矢量型协议:运行距离矢量路由协议的路由器周期性的泛洪自己的路由表。通过路由的交互,每台路由器都从相邻的路由器学习到路由,并且加载于自己的路由表中;对于网络中的所有路由器而言,路由器并不清楚网络的结构,只能简单的知道要去往某个地方方向在哪里,距离是多远。这既是距离矢量型协议的本质。
2.链路状态型协议:与距离矢量型协议不同,链路状态路由协议通告的是链路状态而不是路由表。运行链路状态型协议的路由器之间会首先建立一个协议的邻居关系,然后彼此之间开始交互LSA(链路状态通告)。每台路由器都会产生自己的LSA。路由器将自己接收到的LSA信息存储于本地的LSDB(链路状态数据库)中。路由器通过LSDB便掌握了全网的拓扑信息。最后,路由器将计算出的最优路径加载于本地的路由表中。
链路状态型协议流程图总结:
支持等开销负载均衡
基于组播进行更新 224.0.0.5 224.0.0.6
支持触发更新 ; 每30min周期更新一次
Ospf的保活-----10s更新包(hello包)
需要结构化的部署---区域划分 地址规划
相同区域传拓扑,不同区域传路由。
区域划分的规则:
1.星型结构 骨干区域为0区,大于0为非骨干区域,所有非骨干区域必须接入到骨干区域上
2.ABR----域间路由器 两个或多个区域相邻时,必须存在ABR设备。 ABR设备(同时工作在两个或多个区域)
Router-ID(用于在一个OSPF域中唯一的标识一台路由器)
RID(Router-ID)的设定可以已通过手工配置的方式,或者使用系统自动生成的方式。 (配置RID时,建议使用手工配置)
定义RID值,建议使用IP地址;要是不手工配置,将会自动配置环回的最大数值,若没有环回,则选择物理接口的最大数值。
COST值=参考带宽/接口带宽 默认参考带宽为100M 整段路径cost值之和越小越佳;若接口带宽大于参考带宽,则度量值默认为1,可能会导致选路不佳,故在接口带宽大于参考带宽的网络中,可以人为的修改带宽。
一:OSPF的数据包类型
1.hello包 用于邻居间的发现 关系建立 和 周期保活
2.DD/DBD包 数据可描述包 用于携带本地数据库目录
3.LSR包 链路状态请求包 在查看完对端的DD包后,基于本地的LSDB(链路状态数据库)进行查询,随后通过LSR包去索要自己没有的LSA信息。
4.LSU包 链路状态更新包 用于携带各种LSA信息的包
5.LSACK包 链路状态确认包 用于确认接收到对端的信息
二:OSPF的状态机
Down状态,表示未被激活的状态,一旦本地发出hello包则进入下一个状态机。
Init状态,表示初始化的状态 一旦本地发出hello包,则进入init状态;一但本地接收到hello包,则进入init状态
TOW-WAY状态,双向通讯 表示建立了邻居关系
条件匹配:在点到点网络类型中直接进入下一个状态机,在MA网络中,将进行DR/BDR的选举;所有非DR/BDR的设备间不能进入下一个状态机。
Ex-satart:预启动 使用不携带数据目录的DD包进行主从选举,RID数值大者为主,优先进入下一个状态机。
Exchange 状态:准交换 携带具体的数据库目录信息的DD包进行发送,需要ack确认。
Loading状态:加载 在查看完对端的DD包后,根据本地的LSDB得出自己需要哪些LSA的完整信息,随后通过LSR包去要,LSU包去给,LSACK包去确认。
FULL 状态: 转发 邻接关系的建立
三:OSPF的工作过程
启动配置完成后,本地组播224.0.0.5 发出hello包;
Hello中将携带自己的RID,以及本地已知所有邻居的RID;
若接收到对端的hello包中存在自己的RID,则视为双方认识,邻居关系建立,生成邻居表。
邻居关系建立后,将进行条件匹配,匹配失败则永久停留于邻居关系,仅hello包保活即可。
若条件匹配成功,则表明可以建立邻接关系。
先使用不携带数据库目录的DD包进行主从选举,RID大者为主,优先进入下一个状态机,优先共享自己的数据库目录(为从者也会进入下一个状态机,也会共享自己的数据库目录,但是先后顺序在主的后面进入);
在接收到对端携带具体数据库目录的DD包后,基于本地的LSDB(链路状态数据库)查询自己缺少哪些LSA信息;
之后使用LSR包去索要未知LSA信息;通过LSU包去更新LSA信息,LSACK去确认收到对端的LSA信息-----------同步LSDB------生成数据库表。
之后启动本地SPF算法,基于本地的LSDB生成有向图,在计算出最短路径树,在基于树形结构算出本地到达目的网段的最短路径,加载与本地的路由表中;
收敛完成后,hello包保活即可。
每30min进行一次周期更新-----进行LSDB的对比,若一致,则继续保活即可,若不一致,将重新收敛。
结构突变:
- 新增一个网段:直接增加网段设备,直接使用更新包告知邻接关系,需要ack确认。
- 断开一个网段:断开增加网段设备,直接使用更新包告知邻接关系,需要ack确认。
- 无法沟通:hello time 10s ,dead time 40s ,时间到了就直接删除邻居信息。
四:OSPF的基础配置
[R1]ospf 1 创建ospf进程
进行宣告:1.激活 2.传递路由或拓扑 3.区域划分
[R1]ospf 1 router-id 1.1.1.1 创建ospf进程1 同时定义RID为1.1.1.1
[R1-ospf-1]area 0 进入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
反掩码:掩码反过来
[R1]display ospf peer 查看详细邻居关系
[R2]display ospf peer brief 查看邻居关系表
[R2]display ospf lsdb 查看数据库目录
[R2]display ospf lsdb router 2.2.2.2 查看数据库中的详细信息
[R2]display ospf routing 查询由OSPF生成的路由
五:OSPF的扩展配置
1.从邻居关系建立成为邻接关系的条件
由TOW-WAY到EXstart 匹配条件:在点到点的网络类型中将直接进入下一个状态机;在MA网络中,将进行DR/BDR的选举,所有非DR/BDR设备间不能进入下一个状态机。
2.点到点的网络类型:在一个网段内仅支持存在两个节点
3.MA:多路访问------在一个网段内,存在的节点不限制
①BMA②NBMA
OSPF在点到点的网络类型中,所有邻居关系将直接成为邻接关系;
在MA网络类型中,若所有的设备间均为邻接关系,将可能导致大量的重复更新;故进行DR/BDR的选举;所有非DR/BDR设备间将维持邻居关系。
DR/BDR的选举规则:
①先比较参选接口的优先级,默认为1,范围0-255,大为优
②若参选接口优先级相同,则比较参选设备的RID,大为优
[R1]interface g 0/0/0 进入参选接口
[R1-GigabitEthernet0/0/0]ospf dr-priority 2 更改该接口在ospf中精选DR设备的优先级为2
切结:DR/BDR设备的选举是非抢占性质;故需要网段内部重新进行选举,需要重启该网段内的所有参选设备的OSPF进程;若参选接口的优先级为0,则默认放弃参选;一个网段中至少应该存在一台DR设备。
<R1>reset ospf process 重启OSPF进程
手工认证:
在邻居间相邻的接口上定义安全密钥
[R2]interface g 0/0/1 进入相邻接口
[R2-GigabitEthernet0/0/1]ospf authentication-mode md5 1 cipher 123456 在该接口上基于OSPF协议进行模式为md5的手工认证 密钥ID为1 密码为123456
手工汇总-----区域汇总;在ABR设备上将A区域的路由共享到B区域时,方可进行手工汇总的配置。 在域间路由器上进行配置
[R2-ospf-1]area 0 要汇总那个区域的网段,就进入哪一个区域
[R2-ospf-1-area-0.0.0.0]abr-summary 192.168.0.0 255.255.252.0
在0区中,使用ABR 的汇总功能 汇总网段为 192.168.0.0/22
被动接口-------沉默接口 仅接受不发送路由信息的接口,只能用于连接用户的接口,不得用于路由器之间的接口。
[R1-ospf-1]silent-interface g 0/0/1 在OSPF进程1中 设置g0/0/1为被动接口
加快收敛-----修改计时器
Hello time 10s dead time 40s
修改一台路由器的某个接口的hello time 时,该接口的dead time将自动关闭,邻居间直连接口的hello time 和 dead time 时间若不一致,将不能建立邻居关系 ;修改计时器不易修改的过小(不建议修改计时器)
缺省路由:在连接外网的边界路由器上,配置一条缺省路由后,该设备将向内部所有设备发送缺省路由的更新,下一跳方向指向该边界路由器方向。
[R3-ospf-1]default-route-advertise always 下发缺省路由