上面我们已经认识到了RIP(路由信息协议)&EIGRP(增强开内部网关路由协议)后,我们再来认识下面的这个路由协议OSPF(开放式的最短路径优先协议)也有人叫它为 接口敏感型路由协议。
OSPF 链路状态协议
(open short path first)开放式最短路径优先协议
下面让我们慢慢的一点一点的去了解OSPF协议吧.
1、OSPF 路由协议是一种典型的链路状态路由协议(link-state).
A、OSPF采用的是SPF算法,计算到达目的地最短的路径。
B、链路:就是指路由器接口。
C、状态:就是指描述当前接口及其与相邻路由器之间的关系。
所以别人也会把OSPF链路状态协议说是接口状态路由协议。
2、管理距离:
OSPF的管理距离是:120 EIGRP的管理距离:5、170、90 RIP:110
3、组播地址:
OSPF:224.0.0.5、224.0.0.6
EIGRP:224.0.0.10
RIP:224.0.0.9
4、度量值(metirc):
RIP:使用跳数来作为度量值(hops)。
EIGRP:度量值为=(10^7/带宽bandwidth+延迟delay)*256
OSPF:度量值是使用开销(cost)来算。
OSPF度量值cost计算公式 = 所有链路入接口的cost之和;
接口cost计算公式 = 100M/带宽(bps)取整;环回接口的cost值为1。
5、Router-ID
OSFP上的Router-id也就相似现实中的人名一样,同一个区域(AS号)内都是唯一的,所以也有人说:Router-id是一个ospf域内唯一标志的路由器ID
那Routre-id怎么来的呢?
Router-id确定的方法如下2种:
1、由管理员手工确定。
2、由路由器自动选取:
A、若有loopback口,Loopback 口IP地址最大的选择为该路由的Router-id
B、若没有Loopback口,即看当前活跃的物理接口IP地址,选择IP地址最大的的使用该路由器的Router-id。
注:1、在选择IP地址时,C 类IP地址优先于 B 类IP地址。
2、物理接口一定是要活跃状态。
3、RID不具有抢占性,如果要想新的RID起效,需要使用(clear ip ospf process)命令
4、如果活动的物理接口使用了(secondary 配置IP的),该物理接口不参与RID选举。
5、更改接口的COST命令:ip ospf cost XX(直接进入接口后,XX为要更改的数值)
6、OSPF的几种报文。
7、OSPF的三张表:
8、邻居关系 & 邻接关系
邻居:邻居可以是二台或者多台路由,并且这些路由器之间有一个或者多个接口连接在同一个网络中。
邻接:是指二台相邻,同时运行了OSPF进程的路由器之间的关系,这二台路由器允许二二之间直接交换路由信息数据更新,OSPF只与建立邻接关系的邻居交换路由信息,但不是所有的成为邻居的路由器都会建立邻接关系。
邻居关系的建立:二台相连的路由器,并且在各自相连的接口上都运行了OSPF进程,它们之间通过HELLO包交换互相发现对方,HELLO包信息(HELLO TIME/DEAD TIME/ROUTER-ID/认证)一致,双方的关系达到 2-WAY后,这时二路由器之间就建立了邻居关系。
这时二路由器之间还没有达到邻接关系,所以只是交换了HELLO报文,而没有交互链路状态数据库。
邻接关系的建立:双方在相邻的基础上,再发送DBD/LSR/LSU/LSACK报文,最后双方达到同步时,而且关系也转为FULL状态时,双方才算是建立了邻接关系。
邻居主要是通过 HELLO 包来发现与建立邻居关系。通过 224.0.0.5来发送ALLSPFROUTERS.
9、DR/BDR的选举:
为什么要选举DR/BDR?
答:OSPF中的多路访问广播弄网络会发生LSA泛洪,为了减少多路访问的OSPF流量,会在多路访问的广播型网络中选举一个DR/BDR,DR/BDR会监视224.0.0.4这组组播地址所以的广播流量,在多路访问的MA网络中,所有的Drouter路由器都只会与DR/BDR建立邻接的关系,不是与所有的邻居都建立邻接关系,这样话,泛洪就不会在全网里泛洪,只是通过DR/BDR使用单播224.0.0.5的发播。
1、DR、BDR有自己的组播地址:224.0.0.6
2、凡是“点到点”网络都不进行DR/BDR的选举,凡是"广播型”网络都会进行DR/BDR的选举。
3、DR/BDR的选举规则:
A、最高OSPF接口优先级拥有者被选举成DR,默认的情况下:多路访问网络默认的优先级别为 1,点到点访问网络的优先级别为 0.所以如果把默认的级别配置成O后,即不参与DR/BDR选举。
更改OSPF优先级的命令是:(在接口的进程中)使用 (config-if)#ip ospf priority 100)
B、如果接口优先级一致,那么拥有ROUTER-ID最高的接口被选举成DR。
4、DR/BDR 具有查抢占性。(也就是当DR/BDR选举成功后,就算新加入的路由器具有比现在的DR更高的接口优先级,也不给把DR抢占过来,也只有当DR挂掉,BDR不存在或者重新选举时,才可以抢占)
5、DR/BDR 重新选举的规则:
A、重新路由器(重置)
B、使用命令(clear ip ospf process) 不一定。
6、指定路由器(DR):用来更新�晒悴ヂ酚善髦�间的OSPF信息。
7、备用指定路由器(BDR):会监视DR,并在当DR发生故障时,替代DR用。
10、OSPF的网络类型:
11、区域(area):
为什么要分区域??
答:1、减少SPF运算量,使SPF运算只是涉及区域内的链路,减少CPU与内在的负荷。
2、减少LSA泛洪区域,有效的利用带宽。
3、在边界易于做流量控制。
4、在边界路由器做路由汇总,减少路由表条目,优化路由表。
5、多区域提高了网络的扩展性,有利于创建大规模的网络。
6、多区域有利于提高网络的收敛性。
7、多区域有利于提高网络的稳定性。
1、区域的分类:骨干区域、标准区域、末梢区别、完全末梢区域、虚拟链路
A、骨干区域(backbone):默认的情况下,area 0 为骨干区域。负责各区域之的信息交换。骨干区域内的路由必须是连续的,而且别的区域必须连接到骨干区域。
B、末梢区域(stub-area):只接收OSPF内部的更新,不接收LSA-5的更新。
C、虚拟链路:当骨干区域发生故障或者因设计的原因导致到当前的网络路由与骨干区域没有直接相连的一种补救网络。
D、完全末梢网络:只是接收区域内部的OSPF更新,不接收LSA-3。
===============================================================================
基本实验:
相关的基本配置:(也可以下载附件)
R1#conf t
R1(config)#no ip domain lo
R1(config)#lin co 0
R1(config-line)#logg sy
R1(config-line)#exec-t 0 0
R1(config-line)#lin vty 0 4
R1(config-line)#pass hznethome
R1(config-line)#login
R1(config-line)#end
--------------------------------------------------
R1(config)#int lo 0
R1(config-if)#ip add 1.1.1.1 255.255.255.0
R1(config-if)#no sh
R1(config-if)#int s0/1
R1(config-if)#ip add 192.168.12.1 255.255.255.0
R1(config-if)#no sh
R1(config-if)#int s0/0
R1(config-if)#ip add 192.168.13.1 255.255.255.0
R1(config-if)#no sh
---------------------------------------------------
R1(config)#router os 100
R1(config-router)#router-id 1.1.1.1
R1(config-router)#net 192.168.13.0 0.0.0.255 ar 0
R1(config-router)#net 1.1.1.1 0.0.0.255 ar 0
R1(config-router)#end
============================================================
R2#conf t
R2(config)#no ip domain lo
R2(config)#lin co 0
R2(config-line)#logg sy
R2(config-line)#exec-t 0 0
R2(config-line)#lin vty 0 4
R2(config-line)#pass hznethome
R2(config-line)#login
R2(config-line)#end
----------------------------------------------------
R2#conf t
R2(config)#int lo 0
R2(config-if)#ip add 2.2.2.2 255.255.255.0
R2(config-if)#no sh
R2(config-if)#int s0/2
R2(config-if)#ip add 192.168.12.2 255.255.255.0
R2(config-if)#no sh
R2(config-if)#int s0/0
R2(config-if)#ip add 192.168.24.2 255.255.255.0
R2(config-if)#no sh
R2(config-if)#end
--------------------------------------------------------
R2(config)#router os 100
R2(config-router)#router-id 2.2.2.2
R2(config-router)#net 192.168.12.0 0.0.0.255 ar 0
R2(config-router)#net 192.168.24.0 0.0.0.255 ar 0
R2(config-router)#net 2.2.2.2 0.0.0.255 ar 0
R2(config-router)#end
========================================================
R3#conf t
R3(config)#no ip domain lo
R3(config)#lin co 0
R3(config-line)#logg sy
R3(config-line)#exec-t 0 0
R3(config-line)#lin vty 0 4
R3(config-line)#pass hznethome
R3(config-line)#login
R3(config-line)#end
----------------------------------------------------
R3#conf t
R3(config)#int lo 0
R3(config-if)#ip add 3.3.3.3 255.255.255.0
R3(config-if)#no sh
R3(config-if)#int s0/0
R3(config-if)#ip add 192.168.13.3 255.255.255.0
R3(config-if)#no sh
R3(config-if)#int s0/3
R3(config-if)#ip add 192.168.34.3 255.255.255.0
R3(config-if)#no sh
R3(config-if)#end
-------------------------------------------------------
R3#conf t
R3(config)#router os 100
R3(config-router)#router-id 3.3.3.3
R3(config-router)#net 192.168.13.0 0.0.0.255 ar 0
R3(config-router)#net 192.168.34.0 0.0.0.255 ar 0
R3(config-router)#net 3.3.3.3 0.0.0.255 ar 0
R3(config-router)#end
==================================================================
R4#conf t
R4(config)#no ip domain lo
R4(config)#lin con 0
R4(config-line)#logg sy
R4(config-line)#exec-t 0 0
R4(config-line)#lin vty 0 4
R4(config-line)#pass hznethome
R4(config-line)#login
R4(config-line)#end
-----------------------------------------------------
R4#conf t
R4(config)#int lo 0
R4(config-if)#ip add 4.4.4.4 255.255.255.0
R4(config-if)#no sh
R4(config-if)#int s0/0
R4(config-if)#ip add 192.168.24.4 255.255.255.0
R4(config-if)#no sh
R4(config-if)#int s0/3
R4(config-if)#ip add 192.168.34.4 255.255.255.0
R4(config-if)#no sh
-----------------------------------------------------
R4#conf t
R4(config)#router os 100
R4(config-router)#router-id 4.4.4.4
R4(config-router)#net 4.4.4.4 0.0.0.255 ar 0
R4(config-router)#net 192.168.24.0 0.0.0.255 area 0
R4(config-router)#net 192.168.34.0 0.0.0.255 ar 0
R4(config-router)#end
=============================================================================
先看下路由表,检查路由表是否完整。
我们测试PING 后,可以看出来实验是成功的!
终于写完了,虽然还是不完整,但勉强过得去了,哈。。。。
祝各位好运!!!