一、OSPF基础
OSPFv2和RIPv2对比
相同点
1、两者都是无类别路由协议---传播时携带真实掩码
2、两者的更新方式相同----组播
RIPv2----224.0.0.9
OSPFv2----224.0.0.5\224.0.0.6
3、两者均支持等开销负载均衡
不同点
RIPv2只能应用在小型网络中,OSPFv2可以应用在中大型网络环境
二、OSPF区域划分----结构化部署
OSPF域(Domain)---将一系列的OSPF路由器组成的网络称为OSPF域。
OSPF多区域划分要求:
1、OSPF要求域中所有的非骨干区域(区域ID不为0的区域)都必须与Area0相连。
2、骨干区域不能被分割
OSPF区域结构部署规则的必要性
假定没有“所有非骨干区域都必须与骨干区域相连”这条规则----“远离骨干的非骨干”
定义了ABR(区域边界路由器)设备----确保所有人遵循上述规则
1、至少连接两个区域
2、连接的区域中至少有一个是区域0
3、在区域0中至少有一个活跃的邻居
作用:用于传递区域间路由
为了避免区域间的路由形成环路,非骨干区域之间不允许直接相互发布区域间路由。
假定没有“骨干区域不能被分割”这条规则----不连续骨干区域
OSPF规定:从非骨干区域收到的路由信息,ABR能接收,但不会使用这条路由信息(OSPF水平分割原则)。
总结:
OSPF有如下规则:
1、对于伪ABR设备不允许转发区域间路由信息。
2、对于真实ABR而言
能够将自己直连的非骨干区域的区域内路由信息传递给骨干区域。
能够将自己直连的骨干区域的区域内路由信息传递给非骨干区域。
能够将自己从骨干区域学习到的区域间路由信息传递给费骨干区域。
三、OSPF路由器角色
- 内部路由器(IR)
- 所有接口都接入同一个区域的路由器
- 区域边界路由器(ABR)
- 骨干路由器(BR)
- 接入Area0的路由器,包括ABR,但不包括ASBR
- ASBR(AS边界路由器)
- 工作在OSPF自治系统边界的路由器
- 并不是同时运行多种路由协议的OSPF路由器就一定是ASBR,ASBR一定是将外部路由引入到OSPF域的设备。
四、OSPF数据包
Hello
- 用来周期发现、建立、保活OSPF邻居关系,通过组播224.0.0.5发送。
- 10S发送一次来确认邻居的存在
- hold-time----四倍的hello时间
- Router-ID(RID)
- 全域唯一,标识路由器身份
- 用IP地址形式表示(32bit,点分十进制)
- 配置方法
- 手工配置
2.自动配置
- 默认最大环回IP地址,若没有最大环回则选择最大物理IP地址(路由器的RID选择)。
- [r1]display router id //查看路由器全局ID值
- 无论采用手工配置还是自动选择,一旦OSPF进程启动,RID被确定,则无法变化,必须重启进程才能生效。
- 命令:reset ospf process 重启所有OSPF进程
注意:
启动OSPF进程前,必须要有接口IP地址,若存在IP地址,则在第一次启动OSPF进程时,会选取第一个配置的IP地址为RID。
但是,若删除第一个配置的IP地址后,则恢复为上述规则。
在华为设备中,若没有接口IP地址,则OSPF启动后,RID为0.0.0.0
在思科设备中,若没有接口IP地址,则OSPF启动失败。
DBD
- 数据库描述报文
- 该报文携带的是路径信息的摘要(为了减少更新量,并不会直接给邻居发送TOPO信息,而是将TOPO信息的目录发送给邻居)
LSR
- 链路状态请求报文
- 基于未知的LSA(链路状态通告)信息进行查询。
LSU
- 链路状态更新报文
- 携带真正的LSA信息的数据包
LSAck
- 链路状态确认报文
五、OSPF七种状态机
- down---关闭状态----一旦启动了OSPF协议,则发出hello包,并进入下一状态
- init----初始化状态----收到的hello包中,存在自己的RID值,则进入下一状态
- 2-way----双向通讯状态-----邻居关系建立的标志。
条件匹配:匹配成功则进入下一阶段,不成功则停留在2-way
- exstart----预启动状态----使用未携带信息的DBD包进行主从关系选举,RID大的为主
- exchange-----准交换状态----使用携带目录信息的DBD报文进行目录共享
- loading------加载状态-----邻居间使用LSR/LSU/LSAck三种报文来获取完整的TOPO信息
- full----转发状态----修成正果------标志邻接关系的建立。
六、条件匹配
- 设备接口名称
- DR---指定路由器
- BDR---备份指定路由器
- DRother----其他路由器
- OSPF称为邻接关系的条件
- 点到点----不用选举DR和BDR----直接开始建立邻接关系(加快收敛的方法)
- MA网络----在一个网络中,不限制节点数(会选举DR和BDR)
- 选举规则
- 接口优先级----->0-255---->优先级越大,为DR,次一级为BDR(华为默认为1)
- RID----越大越优先
- 选举范围----一个广播进行一次条件匹配角色之间的关系
- 角色之间的关系
- DR和DRother---->邻接关系
- DR和BDR---->邻接关系
- BDR和DRother---->邻接关系
- DRother和DRother---->邻居关系
- 非抢占性选举模式
七、OSPF选举过程
1. DR、BDR的选举是通过Hello报文来实现的,选举过程发生在2-way状态之后
2. 路由器将自己的接口的DR优先级填写hello报文中的“DR优先级”字段
3. 在接口视图下可以修改DR优先级(若DR优先级修改为0,则代表不具备DR和BDR的选举资格)
4. 当路由器接口激活OSPF后,首先检查网络上是否已经存在DR设备,如果存在则接收DR角色。若不存在,则拥有最高DR优先级的设备称为DR(RID)
5. BDR的选举过程和DR选举过程相同,但是是在DR选举成功之后。
注意:
DR设备使用组播224.0.0.5想该MA网络发送消息。
而DR和BDR使用224.0.0.6监听该MA网络的消息。
DROther使用224.0.06发送自己的LSU报文。
NBMA网络类型中存在。
在NBMA网络类型下,如果需要启动OSPF协议,需要手工指定邻居,否则不会发送hello报文。
若不发送hello报文,则邻居状态处于attempt状态。
八、OSPF工作状态
- 启动OSFP配置完成后,OSPF将向本地所有运行OSPF协议的接口组播224.0.0.5发送hello报文;hello报文中携带有本地的RID以及本地已知的邻居RID;之后生成邻居表。
- 邻居关系建立后,进行条件匹配;匹配失败则停留在邻居关系;仅hello报文保活
- 匹配成功的邻居将开始建立邻接关系。
- 首先使用未携带数据的DBD报文来进行主从关系选举;之后使用携带数据的DBD报文来共享数据库目录;之后本地使用LSR/LSU/LSACK报文来获取未知的LSA信息;
- 完成本地数据库的建立---生成数据库表。
- 之后本地基于数据库生成有向图和最短路径树,之后计算本地到达拓扑中所有未知网段的最短路径,并将其添加到路由表中。
- 收敛完成,hello报文周期保活。每30min进行一次周期更新。
结构突变
1. 新增网段----直接在邻接关系的接口使用LSU进行更新,将内容告诉于邻居。并需要邻居的ACK确认。
2. 断开网段----直接在邻接关系的接口使用LSU进行更新,将内容告诉于邻居。并需要邻居的ACK确认。
3. 无法沟通----dead time----四倍的hello时间。
九、OSPF基础配置
1. 启动OSPF进程
- [r1]ospf 1 router-id 1.1.1.1 //进程号仅具备本地意义,手工配置RID方法
2. 创建区域
- [r1-ospf-1]area 0
3. 宣告
- [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.0.0.0 0.0.0.255 //宣告网段
- 宣告使用反掩码形式
- 32位二进制,使用点分十进制表示。连续的0+连续的1;并且0代表不可变;1代表可变。
注意
华为体系中,优先级为10;
OSPF的COST====参考带宽(100Mbps)/实际带宽
[r1-ospf-1]bandwidth-reference 1000 //修改参考带宽-----所有设备均需修改
一条OSPF路径的Cost等于从目的地到本地路由器沿途的所有设备的入接口Cost值的总和