OSPF基本原理和命令
作者:互联网
OSPF (Open Shortest Path First) , 开放式的最短路径优先协议
-概述
OSPF 协议是公有的标准协议,属于内部网关协议中的 链路状态 路由协议;
OSPF 的报文是直接封装在 IP 头部后面的,属于 OSI 模型 第三层;
OSPF 报文的协议号是 89 , 报文的发送方式是组播地址: 224.0.0.5(所有的OSPF路由器)
-OSPF的工作过程:
1.建立邻接表
*路由器启动OSPF协议后,会在链路上发送 Hello 报文,然后比较参数,如果一直则建立邻居;
*邻居建立之后,每个路由器都会周期性的发送 hello ,周期时间是 10s ;
*如果路由器在一定的时间内没有收到邻居设备发送过来的 hello,则认为邻居故障,断开邻居
这个“一定时间”,默认是 “hello周期”的4倍,即 40s ;
2.同步数据库
3.计算路由表
-OSPF 报文
1.hello ,用于OSPF邻居的建立、维护与拆除;
2.dd,database description ,数据库描述报文;
3.lsr,Link state request,链路状态请求报文;
4.lsu,link state update,链路状态更新报文;
5.lsack,link state ack ,链路状态确认报文;
OSPF 区域:
为了让 OSPF 可以支持更大规模的网络架构,实现 网络的层次化设计,以及便于
网络的后期扩展和管理,OSPF 协议引入了 “区域”这个概念。
区域的表示方法:
1.通过十进制表示;取值空间是: 0 — 4294967295 ;[实际工作中,都用这种格式]
2.通过点分十进制表示,即 区域 ID 是通过 4个字节表示的;
区域的类型分为:
-骨干区域 ,区域 ID 为0 ,则称之为骨干区域;
-非骨干区域 ,区域 ID 不为 0 ,则称之为“非骨干区域” ;
注意:
OSPF 多区域之间的互联原则是:
所有的非骨干区域,必须与骨干区域直接相连,
只有这样连接,不同的区域之间才能互通;
OSPF Router-id :
OSPF 协议为了区分多个路由器,则需要为每个路由器起一个名字,用于标识不同设备。
这个名字就是所谓的 Router-id ,格式类似于 IP 地址,例如: x.x.x.x ; (x=0~255)
router-id 的确定方式:
1.手动指定
2.自动选举
-首先,选择IP地址大的 Loopback 接口的IP地址,作为 router-id ;
-其次,选择IP地址大的 物理接口 的IP地址,作为 router-id ;
router-id 的特点:
稳定。
即当我们手动配置了 router-id以后,并不会立刻生效。
如果想让新配置的 router-id 起作用,必须 重启 OSPF 协议;
配置命令:
ospf 1 router-id x.x.x.x
reset ospf process
OSPF 邻居状态:
1.init ,初始化状态
2.two-way ,双向通信状态
在该状态下,会根据链路的网络类型,来判断邻居之间是否选择 DR/BDR ;
如果选择DR/DBR的话,那么这个选举过程是在“本状态下”进行的;
为了让 DR/BDR 选举的过程中更加的公平,所以在选举DR/BDR 的过程中,
邻居会在该 two-way 状态停留40s ;
3.exstart ,交换初始化状态,交换 DD 报文,准备开始进行数据库同步;
4.exchange,交换状态,交换的是 DD 报文内容,目的是为了实现数据库可靠和高效的同步;
5.loading ,加载状态 ,这个状态才是真正的用于数据库信息的同步;
6.full ,完全邻接状态,邻居关系最完美的状态;如果不是该状态,则说明邻居出现了问题。
OSPF 路由表分析:
preference,优先级:表示的是一个路由的稳定性,数值越小越好;默认是 10 ;
Cost , 开销:表示的是到达一个网段的距离,数值越小越好;
OSPF路由的开销的计算方法:
OSPF路由在传递过程中,所经过的每个入接口的 cost 值的累加和;
[每个OSPF接口的cost,默认是1]
修改OSPF接口的cost:
interface gi0/0/x
ospf cost ** --> 将开销更改为 **,取值范围是: 1-65535
quit
查看OSPF接口的 cost:
display ospf interface gi0/0/x -> 查看接口 gi0/0/x 上的 cost 开销;
注意:
每个 OSPF 接口的 cost ,默认是 1 ;
其实该数值,是通过以下的公式计算出来的:
Cost = 参考带宽/接口实际带宽 ,[参考带宽默认是 100M]
在实际工作中,通常都是将每个 OSPF 路由器的 “参考带宽”修改为“大于接口实际带宽”的数值:
修改命令如下:
bandwidth-reference 10000 // 修改该设备的 OSPF 参考带宽为 10000 M ;
OSPF DR/BDR (designated router / backup designated router ) : 指定路由/备份指定路由器
-场景
当一个网段中,同时存在多个 OSPF 路由器的时候,
为了让多个路由器同步 OSPF 数据库,更加的稳定、高效和可靠,
所以,
我们需要在多个 OSPF 路由器之间,选择出一个“指定路由器”,
该网段中的所有的OSPF 路由器,都仅仅和“指定路由器”进行数据库的同步。
但是,
考虑到 “指定路由器”的稳定性问题,即如果 DR 挂掉了,我们为了确保网络正常运行,
我们在选举 DR 的同时,还可以再选一个备份的DR;
那么,
当一个网段中,同时存在 DR 和 BDR 的时候,其他的路由器通常都称之为 DRother。
且DRother永远和 DR/BDR 建立邻接关系,同步数据库;
在 DRother 向 DR/BDR 同步数据库信息的时候,为了高效,发送“数据库信息”的方式
也是组播,组播地址: 224.0.0.6 [代表的是 DR 和 BDR ]
DR和BDR的选举原则:
1.首先,比较优先级,数值越大越好;默认是1;
2.其次,比较 router-id ,数值越大越好;
DR/BDR 的特点:
1.DR 不可以被抢占;
2.优先级为 0 的路由器,是没有资格参与 DR/BDR 竞选的;
这种优先级为0的路由,永远称之为 DRother ;
-配置命令:(修改 OSPF 接口的 DR 优先级)
例如: 将接口优先级修改为 30 ,确保成为 DR ;
interface gi0/0/1
ospf dr-priority 30
什么时候选举DR/BDR ?
当一个网络中存在很多 OSPF 路由器的时候;
什么情况下,可以看做是“一个网段包含很多OSPF路由器“ ?
此时,OSPF 判断一个网段是否具有多个 OSPF 路由器,是不看网段中的真实路由器的个数的,
看的是“OSPF接口”的 “网络类型” ,例如:
广播 ,broadcast ,此时选举DR/BDR
非广播 ,NBMA , 此时选举DR/BDR
点到点 ,point to point , 此时不选举DR/BDR
点到多点,point to multi-point ,此时不选举DR/BDR
修改OSPF接口的网络类型:
interface gi0/0/x
ospf network-type {broadcast/nbma/p2p/p2mp}
例如:
修改 R1和 R2 之间的邻居接口类型为 P2P,不选举 DR/BDR ;
interface gi0/0/0
ospf network-type p2p
常用命令:
ospf 1 router-id 1.1.1.1 // 运行 OSPF 进程1 ,并设置 router-id 为 1.1.1.1
bandwidth-reference 10000 // 修改 OSPF 计算每个端口的cost值时所使用的参考带宽,默认是100M
area 0 // 创建并进入 OSPF 骨干区域 0
network 192.168.1.0 0.0.0.255 // 将该网段宣告进入到 OSPF 协议;
interface gi0/0/0
ospf cost ** // 修改 OSPF cost ,默认是 1;
ospf network-type {broadcast/nbma/p2p/p2mp} // 修改 OSPF 的网络类型;
ospf dr-priority ** // 修改 参与 DR 竞选的 DR 优先级,默认是1
display ospf peer brief // 查看 OSPF 邻居表;
display ip routing-table protocol ospf // 查看 OSPF 路由表,关注优先级和cost;
display ospf interface gi0/0/0 //查看 接口的 OSPF 参数;比如:cost/优先级/网络类型
reset ospf process // 重启 OSPF 进程;
a664566 发布了9 篇原创文章 · 获赞 4 · 访问量 494 私信 关注标签:OSPF,ospf,基本原理,命令,cost,BDR,DR,路由器 来源: https://blog.csdn.net/a664566/article/details/104502255