OSPF - open shortest path first 开放式 最短路径优先协议
链路状态型路由协议 --更新内容 --拓扑信息
距离矢量型路由协议 --更新内容 --路由表/路由信息
协议号:89
组播更新:224.0.0.5/6
更新内容--LSA--链路状态通告--一条包含了拓扑及路由的信息
RIP数据包---更新路由表
数据包 ----更新拓扑信息--LSA信息
Hello包 认识邻居 --告诉别人你是谁
DBD包 菜单 LSA
LSR-link-state request包 请求获取LSA
LSU -link-state update 包 更新包 LSA --
LSACK-link-state ack 包 确认包
去吃饭---去餐厅--hello-- 看菜单 ----点餐 ----上餐 ---付款
默认hello包周期10s发送
OSPF 不用 UDP 而是直接用 IP 数据报传送解封装快,协议号89。
OSPF 构成的数据报很短。这样做可减少路由信息的通信量。
数据报很短的另一好处是可以不必将长的数据报分片传送。
分片传送的数据报只要丢失一个,就无法组装成原来的数据报,而整个数据报就必须重传。
度量值
OSPF使用Cost(开销)作为路由的度量值。每一个激活了OSPF的接口都会维护一个接口Cost值,缺省时接口Cost值=100 Mbit/s /接口带宽。其中100 Mbit/s为OSPF指定的缺省参考值,该值是可配置的。
笼统地说,一条OSPF路由的Cost值可以理解为是从目的网段到本路由器沿途所有入接口的Cost值累加。
OSPF的更新内容---比较大--LSA信息
占用资源比较大
OSPF提出了
结构化部署---区域划分、地址规划
区域划分规则:1、必须满足星型结构,必须存在骨干区域0
- 必须存在ABR ---区域边界路由器
在区域和区域之间,必须存在一台路由器
Hello
DBD
LSR
LSU
LSack
OSPF的工作过程:
协议启动之后,邻居间组播224.0.0.5发送hello包,如果收到邻居的hello包,且hello包中有本地的Router ID ,则建立邻居关系。生成邻居表
邻居关系建立后,将进行条件匹配;条件匹配失败,则停留于邻居关系,仅hello包周期保活即可。若条件匹配成功,则建立邻接关系,邻接关系间将使用DBD、LSR、LSU、LSack来获取未知的LSA信息;当获取到所有的LSA信息后,本地生成LSDB--链路状态数据库表。再本地基于LSDB计算到达所有未知网段的最短路径,加载到路由表中。
条件匹配:
建立邻接关系的条件:
网络类型
MA网络 ---将进行DR和BDR的选举,仅DRother间建立邻居关系,其他关系均为邻接关系
点到点网络 --直接建立邻接关系
选举规则
先比较优先级 优先级默认为1 数值越大,表示优先级越高
再比较router ID 数值大
OSPF DR优先级更高的接口成为该MA的DR,如果优先级相等(默认为1),
则具有更高的OSPF Router-ID的路由器(的接口)被选举成DR,
并且DR具有非抢占性。--选举特性
状态机:
Down 当本地发出hello包时将进入下一个状态
Init 收到的hello中有本地的router id,则进入下一个状态
- Way 邻居关系建立的标志
Exstart 进行主从关系的选举,router ID大者为主,优先进入下一个状态
Exchange 交换DBD包,进行DBD比对
Loading 通过LSR、LSU、LSack来获取未知的LSA信息
Full 邻接关系建立的标志
邻居状态机
上述过程包含了OSPF邻居状态的变迁,我们称之为OSPF的邻居状态机,所谓状态就是之前做过什么,现在该作什么,接下来要做什么。比如我们可以把恋爱拆成状态机。---不认识---搭讪---认识----追求---答应----恋爱:每一步就是同一个状态做不同的事。
RIP ---协议启动之后,邻居间直接共享路由表 ---获取未知的路由条目
OSPF -- 协议启动之后 建立邻居关系 ----建立邻接关系---共享LSA ---生成LSDB --计算最短路径 ---加载路由表中
ospf配置
第一步、启动协议并配置router ID
1 为进程号,仅具有本地意义
routerID 建议手工配置;如果未手工指定,则默认采用本地最大的环回接口IP地址作为routerid,若无环回接口,则使用本地最大的物理接口IP地址作为routerID
第二步、进入区域
第三步、宣告区域内(看接口处于哪个区域)本地直连的网段
此种宣告方式为反掩码宣告
14.1.1.0 0.0.0.255 --反掩码
反掩码的作用: 精确匹配
匹配某个单独的地址
例 14.1.1.1 0.0.0.0 则代表匹配的就是14.1.1.1 这个主机
第四步、若设备为ABR,则需要进入不同区域宣告
查看R4邻居表:
由上图可看出R4与R1互联为串行链路互联,即点到点网络,不选举DR、BDR
Hello time为10s deadtime 40秒 ---默认是4倍匹配关系
查看R4邻居摘要
查看R1邻居
上图为R1与R2、R3的邻居关系
由于R1与R2、R3之间为以太网链路--MA网络,进行DR和BDR 的选举,由此看出三台设备中1.1.1.1为DR;2.2.2.2为BDR 3.3.3.3 为DRother
但是,上图中违背了DR和BDR的选举规则 ---优先级一致,routerID 数字大者为DR
为什么?选举特点---非抢占性选举
怎么解决---统一重启OSPF进程
要求,所有设备必须在10s内重启完成
再次查看R1 的邻居关系
恢复正常,3.3.3.3 为DR、2.2.2.2为BDR
上图为R1-R4的邻居关系
此实验中所有设备间均为邻接关系
OSPF环境中,至少出现两个DRother才会有邻居关系,不然其他均为邻接关系
查看LSDB
查看OSPF路由表
查看通过OSPF学习的路由的路由表
cost值计算
度量值
OSPF使用Cost(开销)作为路由的度量值。每一个激活了OSPF的接口都会维护一个接口Cost值,缺省时接口Cost值=100 Mbit/s /接口带宽。其中100 Mbit/s为OSPF指定的缺省参考值,该值是可配置的。
笼统地说,一条OSPF路由的Cost值可以理解为是从目的网段到本路由器沿途所有入接口的Cost值累加。
上图实验中,R2设备中 14.1.1.0/24 cost值为49 ,具体的计算方法为:
R1 的s4/0/0口cost + R2 的g0/0/0口的cost值 = 48+1 =49
怎么查看接口的cost值
上图中所展示除了cost之外,还有 状态 DR/BDR 、 类型 、MTU、接口优先级、hello时间等。
OSPF的扩展配置
- 缺省路由
只需要在 边界路由器上书写一条指令,内网的所有路由器会自动产生指向边界路由器的缺省,边界路由器去往外部的缺省路由需要手工静态书写
强制下放缺省(适用在边界路由器中无缺省路由的情况)
下放缺省(当边界路由器上已经存在缺省路由时,则不需要再书写always)
- 汇总--中级课程会讲
- 手工认证 --区域认证、接口认证
区域认证 --在区域内的所有路由器上配置
接口认证 --同rip
在接口视图下配置,直连的设备接口间
- 加快收敛速度
在OSPF中,通过修改hello时间来加快收敛速度,不宜修改的过小
在接口视图中配置,建议统一修改
- 干涉DR/BDR 选举
如何干涉:通过修改接口优先级的方式来干涉
选举规则中先比较优先级(默认为1) --手动增大
主动放弃选举--将优先级更改为0,表示放弃选举
上图中,默认R3为DR、R2为BDR
通过操作将使R1成为DR且R2与R3之间保持邻居关系
做法:将R2与R3的优先级改为0
接口视图下配置
效果
- 修改参考带宽---所有设备均需修改
抓包观看
上图中为ospf hello包 --组播224.0.0.5 基于IP封装,协议号89
上图中,当给区域0中的R2增加IP地址并宣告后,只出现LSU、LSack两个包,且组播更新地址为224.0.0.6---当DRother与DR沟通时,采用224.0.0.6
结构突变:
- 新增网段 直连新增网段的设备使用LSU告知本地所有邻接关系,之后扩散到全网
- 断开网段 直连断开网段的设备使用LSU告知本地所有邻接关系,之后扩散到全网
- 无法沟通 dead time 到时,断开邻接关系,清除通过该邻接生成的所有路由信息;
三表五包七状态
邻居表
链路状态数据库表
路由表
Hello
DBD
LSR
LSU
LSack
Down
Init
2-Way
Exstart
Exchange
Loading
Full