基本概念
协议使用范围----IGP
链路状态型协议----传递拓扑
传递真实掩码信息----无类别路由协议
OSPF版本
- OSPFv1
- OSPFv2----IPv4
- OSPFv3----IPv6
SPF算法
OSPF传递的是LSA信息(链路状态通告)
OSPF更新方式
- 触发更新
- 周期链路状态刷新-----30min
OSPF更新地址---组播
- 224.0.0.5/224.0.0.6
OSPF开销值===参考带宽/实际带宽(参考带宽默认为100Mbps)
OSPF进行跨层封装----基于IP协议进行封装,协议号89
OSPF区域化结构
OSPF为了适应大中型网络环境,进行了结构化部署------区域划分
区域划分的特点
区域内部传递拓扑信息,区域间传递路由信息。
区域划分是基于路由器接口的。
区域编号----32bit
- 区域0-----骨干区域
- 非骨干区域----非0区域
区域划分规则
- 所有的非骨干区域都必须和骨干区域直接相连----星型拓扑
- 骨干区域唯一
区域边界路由器----ABR
- 同时属于多个区域,且至少有一个接口属于骨干区域。
- 在骨干区域中至少存在一个活跃的邻居。
OSPF数据包类型
hello报文建立和维护OSPF邻居与邻接关系,周期收发,周期保活,默认hello 包的hello time 为10s或30s , dead time 为hello time的4倍 ; 邻居间hello包中hello time和dead time必须是完全一致的参数.
用来周期性发现、建立、保活OSPF邻居关系。
10S发送一次hello报文,来确认邻居的存在
如果一个dead time时间没有收到邻居发送给自己的hello报文,则认为邻居不存在,dead time一般为hello时间的四倍,默认情况下为40S。
Router-ID------RID
- 全域唯一,标识路由器的身份
- 使用IP地址的表示形式
DBD报文 链路状态数据库描述信息(描述LSDB中LSA头部信息
- 数据库描述报文
- 包含了所有拓扑的目录信息。
LSR报文 链路状态请求,用于向OSPF邻居请求链路状态信息
- 链路状态请求报文
- 请求获取未知的链路信息(LSA信息)
LSU报文 链路状态更新(携带一条或多条LSA)
- 链路状态更新报文
- 携带有真正的LSA信息
LSAck报文 对LSU中的LSA进行确认
- 链路状态确认报文
OSPF七种状态机
- down----关闭状态-----一旦启动了OSPF协议,则发出hello报文,进入下一状态
- init-----初始化状态----当收到的hello报文中,存在本地RID值时,进入下一状态
- 2-way-----双向通讯状态-----------邻居关系建立的标志。
条件匹配:匹配成功则进入下一阶段,失败则停留在邻居关系。
- exstart----预启动状态-----使用未携带信息的DBD报文进行主从关系选举,RID大的为主
- exchange-----准交换----使用携带目录信息的DBD包进行目录共享
- loading-----加载状态-----邻居间使用LSR/LSU/LSACK三种报文来获取完整的拓扑信息
- full----转发状态----拓扑信息交换完成后进入该状态-----邻接关系建立的标志。
OSPF邻接关系建立过程
条件匹配
设备接口角色
- 指定路由器------DR
- 备份指定路由器-----BDR
- 其他路由器----DRother
角色之间的关系
- DR与BDR----邻接
- DR与DRother---邻接
- BDR与DRother---邻接
- DRother与DRother----邻居
OSPF条件匹配的情况
- 在以太网网络中-----必须进行条件匹配
- 在点到点网络中-----不需要进行条件匹配
选举规则
- 优先级,默认为1,0-255,越大越优
- RID,越大越优
选举范围
- 一个广播域,进行一次条件匹配。
条件匹配是属于非抢占模式-----一旦选举成功,不会因为新加入的设备而重新选举。
OSPF工作过程
OSPF协议启动后,路由器A向本地所有启动了OSPF协议的直连接口,使用组播地址224.0.0.5发送 hello报文。
- 该hello报文中携带了本地的全域唯一的RID值。
当对端路由器B接收到该报文后,也会回复hello报文
- 该hello报文中携带了A的RID值。
此时,A与B建立邻居关系,并生成邻居表。
邻居关系建立后,邻居之间进行条件匹配,匹配失败则停留在邻居关系,仅使用hello报文保活。
- 若匹配成功,则可以开始建立邻接关系。
邻接间共享DBD报文,将本地与邻接之间的DBD报文进行对比,查找本地没有的LSA信息,之后使 用LSR来询问,对端使用LSU回复具体的LSA信息,之后本地使用LSAck报文进行确认。
- 该过程全部完成后,生成数据库表(LSDB)。
在之后,本地基于数据库表,启用SPF算法,计算到达所有未知网段的最短路径,然后将其加载到 本地的OSPF路由表中。
- 并将OSPF路由表中的部分路由加载到本地全局路由表中。
- 此时,路由器完成路由收敛工作。
最后,使用hello报文进行周期保活,并且每30min进行一次链路状态刷新。
基本配置
1. 启动OSPF协议,配置进程号(仅具有本地意义),手工配置RID值
- 若没有配置RID值,则设备自动生成(环回接口最大IP>物理接口最大IP)
- [r1]ospf 1 router-id 1.1.1.1
2. 配置区域
- [r1-ospf-1]area 0
3. 宣告:激活接口,发布拓扑或路由
宣告网段
- [r1-ospf-1-area-0.0.0.0]network 1.1.1.0 0.0.0.255
- 反掩码:32位二进制,使用点分十进制表示,由连续0+连续1
接口宣告方式-----精准宣告
- [r1-ospf-1-area-0.0.0.0]network 12.0.0.1 0.0.0.0
OSPF邻居表
- [r2]display ospf peer ---查看OSPF邻居
- [r2]display ospf peer brief ----查看OSPF邻居简表
OSPF数据库表
- [r2]display ospf lsdb -----查看OSPF数据库表
OSPF路由表
- [r2]display ospf routing ---查看OSPF路由表
- OSPF优先级====10
reset ospf 1 process -----重置OSPF进程
OSPF扩展配置
修改OSPF默认参考带宽
- [r2-ospf-1]bandwidth-reference 10000 -----修改参考带宽,两端均需要修改
修改接口优先级,从而干涉条件匹配
- [r1-GigabitEthernet0/0/0]ospf dr-priority 10 -----在接口修改
- [r1-GigabitEthernet0/0/0]ospf dr-priority 0 ---优先级修改为0,代表放弃选举
手工汇总
- [r2-ospf-1-area-0.0.0.0]abr-summary 192.168.0.0 255.255.252.0
- 必须在ABR上配置
- 汇总的明细路由来源在那个区域,进入那个区域进行配置
缺省路由
- 在边界设备上
- [r1-ospf-1]default-route-advertise -----非强制性下发,要求边界路由器中存在缺省路由才可以下发
- [r1-ospf-1]default-route-advertise always -----强制性下发,不要求本地存在缺省路由
静默接口
- 不接受也不发送hello报文,与RIP的静默接口不同。
- [r3-ospf-1]silent-interface GigabitEthernet 0/0/1
接口认证
- [r1-GigabitEthernet0/0/0]ospf authentication-mode ?
- md5 Use MD5 algorithm -----MD5认证
- null Use null authentication -----不认证----OSPF默认情况
- simple Simple authentication mode ------简单认证----明文认证
- [r1-GigabitEthernet0/0/0]ospf authentication-mode md5 1 cipher 123456
- [r2-GigabitEthernet0/0/0]ospf authentication-mode md5 1 cipher 123456
加快收敛
- [r3-GigabitEthernet0/0/0]ospf timer hello ? -------一端修改,另一端必须修改,若不修改, 则会导致邻居关系无法建立。
INTEGER Second(s)
OSPF作为链路状态路由协议,路由器之间交互的是LSA(链路状态通告),路由器将网络中泛洪的LSA搜集到自己的LSDB(链路状态数据库)中,这有助于OSPF理解整张网络拓扑,并在此基础上通过SPF最短路径算法计算出以自己为根的、到达网络各个角落的、无环的树,最终,路由器将计算出来的路由装载进路由表中。