OSPF路由协议
文章目录
OSPF路由协议概述
内部网关协议和外部网关协议:开放的最短路径优先协议
- 自治系统(AS)AS是指同一个技术管理机构管理、使用统一选路策略的一些路由器的集合
- 内部网关协议(IGP)
- 外部网关协议(EGP)
外部网关协议现在主要用BGP
OSPF是链路状态路由协议,协议号是89
传信的过程,一层一层叠加发送
OSPF的工作过程(3个表)
- 邻居列表
- 链路状态数据库
- 路由表
建立邻接关系(传信的过程)——>链路状态数据库(所有链路状态学习后汇总到库里简称LSDB)——>形成最短路径(通过算法)——>形成路由表
OSPF区域
为了适应大型的网络,OSPF在AS内划分多个区域
每个OSPF路由器只维护所在区域的完整状态链路状态信息
区域ID
区域ID可以表示成一个十进制的数字
也可以表示成一个IP
骨干区域Area 0
负责区域间路由信息传播
非骨干区域
Router ID
OSPF区域内唯一标识路由器的IP地址
Router ID选取规则
自动:
- 选取路由器loopback接口上数值最高的IP地址
- 如果没有loopback接口,在物理端口中选取IP地址最高的
手动
- 也可以使用router-id命令指定Router ID
DR和BDR(2种路由器)
指定路由器(DR)
其他路由器(DRothers)只和DR及BDR形成邻接关系
DR为老大,BDR为老二
如果不选举DR和BDR,会构成n(n-1)/2个邻接关系,n为路由器个数,导致线路占用过多。
DR和BDR的选举方法
自动选举DR和BDR
- 网段上Router ID最大的路由器将被选举为DR,第二大的将被选举为BDR
手工选择DR和BDR
- 优先级范围是0~255,数值越大,优先级越高,默认为1
- 如果优先级相同,则需要比较Router ID
- 如果路由器的优先级被设置为0,它将不参与DR和DBR的选举
DR和BDR的选举过程
路由器的优先级可以影响一个选举过程,但是它不能强制更换已经存在的DR或BDR路由器
先开机的是老大,并且之后不会自动更改
OSPF的组播地址
224.0.0.5
224.0.0.6
如何选举OSPF
路由器刚开机刚开始大家都以为自己是老大,再通过发送hello包选举选择DR和BDR
- 第一步大家通过0.5发送hello确认谁是DR谁是BDR
- 然后其他路由器通过0.6,把自己的链路发送给DR和BDR
- DR和BDR再通过0.5发送给其他路由器
OSPF的度量值为COST
COST=10^8/BW
最短路径是基于接口指定的代价(cost)计算的
接口类型 | 代价(108/BW) |
---|---|
Fast Ethernet | 1 |
Ethernet | 10 |
56k | 1785 |
OSPF的数据包类型(5种数据包)
OSPF数据包:
承载在IP数据包内,使用协议号89
OSBF的包类型
OSPF的包类型 | 描述 |
---|---|
Hello包 | 用于发现和维持邻居关系,选举DR和BDR |
数据库描述包(DBD) | 用于向邻居发送摘要信息以同步链路状态数据库 |
链路状态请求包(LSR) | 在路由器收到包含新信息的DBD后发送,用于请求更详细的信息 |
链路状态更新包(LSU) | 收到LSR后发送链路状态通告(LSA),一个LSU数据包可能包含几个LSA |
链路状态确认包(LSAck) | 确认已经收到DBD/LSU,每个LSA需要被分别确认 |
OSPF邻接关系的建立(7种转态)
OSPF启动的第一个阶段是使用Hello报文建立双向通信的过程
**一、Down状态:**初始化----路由器启动后开始向外发Hello,但是没有收到对方的Hello报文。
**二、Init状态:**收到第一个hello包----路由器已经接收到相邻路由器发送来的Hello数据包,但自身的IP地址并没有出现在该Hello数据包内,也就是说,双方的双向通信还没有建立起来。
**三、2-Way状态:**双向建立会话----路由器看到自身已经处于相邻路由器的Hello数据包内,双向通信已经建立
OSPF启动的第二个阶段是建立完全的邻接关系
**四、ExStart状态:**建立主从关系----在此状态协商DD报文发送的主从,开始的时候都认为自己是
主路由器,发送一个空的DD报文I=1,M=1,MS=1,自己定义一个DD开始序列号,对方认同(比较Router-ID谁大)则回一个相同序列号的DD报文,I=0,M=1,MS=0。不认同则回一个不同的序列号的DD报文I=1,M=1,MS=1。同时检查MTU是否一致,不同将一直停在Exstart状态。
**五、Exchange状态:**交换摘要信息----在这个状态,路由器向相邻的OSPF路由器发送数据库描述数据包来交换链路状态信息,每一个数据包都有一个数据包序列号。如果发现DBD里有新信息,路由器向相邻路由 器发送链路状态请求数据包来请求其相应数据。
**六、Loading状态:**加载详细信息----根据之前的报文发送LSR请求LSU更新,直到LSACK确认完全同步
**七、Full状态:**完全连接----收敛(同步)成功,双方达成一致
OSPF的网络类型(4种类型)
OSPF将网络划分为四种类型
- 点到点网络------自动发现邻居,不需要DR/BDR、组播224.0.0.5
- 广播多路访问网络(BMA)-----自动发现邻居、选DR/BDR、组播
- 非广播多路访问网络罗(NBMA)------手工指定邻居,选DR/BDR、单播
- 点到多点网络------自动发现邻居,不需要DR/BDR、组播224.0.0.5
OSPF的使用场景
- 网络规模,网络拓扑,其他特殊要求,路由器自身要求
OSPF的特点
- 可适应大规模网络
- 路由变化收敛速度快
- 无路由环
- 支持变长子网掩码VLSM
- 支持区域划分
- 支持以组播地址发送协议报
OSPF:属于链路状态路由协议,没有跳数限制,支持可变长子网掩码(VLSM),收敛速度快,使用组播发送链路状态更新
路由协议或路由种类 | 优先级 |
---|---|
Direct | 0 |
OSPF | 10 |
IS-IS | 15 |
Static | 60 |
RIP | 100 |
OSPF ASE | 150 |
BGP | 255 |
OSPF配置实验
以下配置图片为例
首先配完所有路由器的对应网口IP(int进入,ip add IP➕子网掩码)
其次就是重点要在每个路由器上都配一个Router ID也就是路由器ID
int loopback 0-----##进入回环网口 0为名称(每个路由器可重复)
ip add 随意的IP地址,最好能对应上路由器以便分辨,子网掩码为32
上述配完以后进行ospf配置
ospf 1 router-id 1.1.1.1-----##创建ospf进程,配置路由ID
area 0------##在上述命令基础上进入区域0,区域0是骨干区域
network 192.168.10.0 0.0.0.255----##宣告ospf区域内的直连网段,并且加上反掩码(此图有两个直连网段所以配置两个)
network 10.0.0.0 0.0.0.3
network 1.1.1.1 0.0.0.0----###记得不要忘记宣告回环网口的ID和反掩码
dis ip routing-table-----##查看路由器里的数据库信息
最后ping一下pc1与pc2(不要忘记设置各自参数)
这样我们就完成了!