我们知道静态路由是手动配置的路由,当网络拓扑或链路发生变化时,需要手动去修改路由表中的相关静态路由信息。不便于让网络管理员全面地了解整个网络拓扑,后期维护繁琐。运行OSPF协议的接口来寻找同样运行了OSPF协议的路由器,实现路由信息自动学习。避免静态路由信息需要手动调整路由信息的问题。
1、OSPF是一个链路状态内部网关路由协议,OSPF协议将自己的链路状态信息,通过启用了OSPF协议的接口发送给其它OSPF协议设备。同一个OSPF区域中的每台设备都会参与链路状态信息的创建、发送、接收与转发
2、一个OSPF协议网络可以被划分为多个区域(Area)。如果一个OSPF协议网络只包含一个区域,则被称为单区域OSPF协议网络;如果一个OSPF协议网络包含了多个区域,则被称为多区域OSPF协议网络。
- 每一个区域都有一个编号,称为区域ID(Area ID)。
- 区域为0的称为骨干区域,其它区域称为非骨干区域。
- 每一个非骨干区域都需要与骨干区域直连,当非骨干区域没有与骨干区域直连时,要采用虚链路(Vritual Link)技术从逻辑上实现骨干区域与非骨干区域的直连,也就是说非骨干区域之间的通信必须要通过骨干区域中转才能实现。
下图OSPF协议网络分为4个区域,Area 0为骨干区域,Area 1,Area 2,Area 3为非骨干区域,路由器AR1,AR2,AR3同时为骨干区域和非骨干区域。其它路由器只属于一个区域。
- 在OSPF协议网络中,如果一个路由器的接口都属于一个区域,则路由器被称为内部路由器IR(Internal Router)。如Area 0区域的AR8,AR9。Area 1区域的AR4,AR5。Area 3区域的AR7
- 如果一台路由器包含属于Area 0 的接口,则该路由器被称为骨干路由器BR(Backbone Router)。如AR1,AR2,AR3,AR8,AR9
- 如果一台路由器的部分接口属于Area 0,另一部分接口属于其它区域,则该路由器被称为**区域边界路由器ABR(Area Border Router)**如AR1,AR2,AR3
- 如果一台路由器与其OSPF协议网络(自治系统)之外的网络是相连的,并且可以将外部网络的路由信息引入其OSPF协议网络自治系统,则该路由器被称为自治系统边界路由器ASBR(Autonomous System Boundary Router),如AR6
3、链路状态及链路状态通告
OSPF协议是一种基于链路状态的协议,链路状态也指路由器的接口状态。每台路由器将自己的接口状态(链路状态)共享给其它路由器。每台路由器依据自身的接口状态和其它路由器的接口状态计算去往各个目的地的路由。路由的链路状态包含了该接口的IP地址和子网掩码等信息。链路状态(Link-State Advertisement,LSA)可查看本节
OSPF协议有5种报文类型:
- Hello 报文
- DD报文(Datebase Description Packet),用于描述自己的链路状态数据库(Link-State Datebase,LSDB)
- LSR报文(Link-State Request Packet),用于请求相邻路由器LSDB中的一部分数据
- LSU报文(Link-State Update Packet),向对端路由器发送多条LSA用于更新
- LSACK报文(Link-State Acknowledgement Packet),路由器在收到LSU报文后所发出的确认应答报文
路由器某一接口所发送的Hello报文携带的信息如下:
- OSPF协议的版本号
- 接口所属路由器的Router ID
- 接口所属的区域 Area ID
- 接口的密钥信息
- 接口的认证类型
- 接口IP地址的子网掩码
- 接口的Hellointerval(发送报文的间隔时间)
- 接口的Router Dead lnterval
- 接口所连的二层网络的DR和BDR
4、Router ID
Router ID 是OSPF协议区域中路由器的唯一标识
1.手动配置了Router ID,则路由器将使用该Router ID
2. 如果没有设置路由器的Router ID ,但在路由器上创建了逻辑接口(如环回接口),则路由器会选择这台路由器上所有逻辑接口的IPv4地址中数值最大的IPv4地址作为Router ID(无论接口是否参与了OSPF协议)
3. 如果以上两种情况都没有,则路由器会选择所有活动物理接口的IPv4地址中数值最大的IPv4地址作为Router ID(无论接口是否参与了OSPF协议)
一旦选定Router ID,只要OSPF协议进程没有重启,路由器的Router ID就不会改变,无论接口是否变化。Router ID的变化会对OSPF协议网络产生影响。
5、OSPF协议的网络类型
- 广播(Broadcast)类型,通常以组播形式(224.0.0.5和224.0.0.6)发送协议报文
- 非广播-多路访问(Non-Broadcast Multiple Access NBMA),链路层协议是帧中继、ATM或X.25时,OSPF协议默认的网络类型时NBMA。该类型的网络以单播形式发送协议报文。
- 点到多点(Point-to-Multiple Point,P2MP),该类型的网络必须由其它网络类型强制更改,常用做法是将NBMA改为点到多点的网络。该类型的网络,以组播形式(224.0.0.5)发送协议报文。
- 点到点(Point-to-Point,P2P)类型,当链路层协议是PPP、HDLC和LAPB时,OSPF协议的默认网络类型是P2P。该类型的网络以组播形式(224.0.0.5)发送协议报文。
6、邻居关系与邻接关系
- 在OSPF协议中,每台路由器的接口周期性地向外发送Hello报文。如果相邻两台路由器之间发送给对方的Hello报文完全一致。那么这两台路由器会成为彼此的邻居路由器,它们之间存在**“邻居”**关系。
- 邻接关系,在P2P,P2MP的二层网络中,两台互为邻居关系的路由器会同步彼此的LSDB,当这两台路由器成功地完成了LSDB的同步后,它们之间便建立起了邻接关系
如果两台路由器存在邻接关系,则它们一定存在邻居关系。如果两台路由器存在邻居关系,则它们之间可能存在邻接关系,也可能不存在邻接关系。
7、指定路由器与备份指定路由器
- 指定路由器(Designate Router,DR)和备份指定路由器(Backup Designate Router,BDR)只适用于广播网络或NBMA网络
- 在一个广播网络或NBMA网络中,路由器之间会通过Hello报文进行交互,Hello报文中包含了路由器的优先级和Router ID,优先级的取值范围是0~255,取值越大,优先级越高,根据Router ID和优先级进行DR,BDR选举。
优先级值最大的路由器将成为DR
优先级值相等,则Router ID值最大的路由器将成为DR
BDR的选举于DR的选举规则完全一样,BDR的选举发生在DR的选举之后,在同一个网络中,DR和BDR不能是同一台路由器。
如果DR和BDR都存在,则DR出现故障后,BDR将迅速代替DR角色。如果只存在DR而没有BDR,则DR出现故障后将重新选举新的DR,这就需要耗费一定的时间,如果一个路由器的优先级值为0,则不参加DR和BDR的选举
下图实验,三台路由器规划整个网络运行OSPF协议,采用单区域OSPF网络结构
接口IP配置;
R1:
interface GigabitEthernet0/0/0
ip address 1.1.1.1 255.0.0.0
#
interface GigabitEthernet0/0/1
ip address 2.1.1.1 255.0.0.0
#
interface GigabitEthernet0/0/2
ip address 10.1.1.1 255.255.255.0
R2:
interface GigabitEthernet0/0/0
ip address 1.1.1.2 255.0.0.0
#
interface GigabitEthernet0/0/1
ip address 11.1.1.1 255.255.255.0
#
interface GigabitEthernet0/0/2
ip address 3.1.1.1 255.0.0.0
R3:
interface GigabitEthernet0/0/0
ip address 12.1.1.1 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 2.1.1.2 255.0.0.0
#
interface GigabitEthernet0/0/2
ip address 3.1.1.2 255.0.0.0
OSPF协议配置;
[R1]ospf router-id 10.1.1.1
[R1-ospf-1]area 0 //创建区域为0
[R1-ospf-1-area-0.0.0.0]network 1.0.0.0 0.255.255.255 //将路由器的接口宣告进区域
[R1-ospf-1-area-0.0.0.0]network 2.0.0.0 0.255.255.255
[R1-ospf-1-area-0.0.0.0]network 10.1.1.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0]
[R2]ospf router-id 11.1.1.1
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]network 1.0.0.0 0.255.255.255
[R2-ospf-1-area-0.0.0.0]network 3.0.0.0 0.255.255.255
[R2-ospf-1-area-0.0.0.0]network 11.1.1.0 0.0.0.255
[R3]ospf router-id 12.1.1.1
[R3-ospf-1]area 0
[R3-ospf-1-area-0.0.0.0]network 2.0.0.0 0.255.255.255
[R3-ospf-1-area-0.0.0.0]network 3.0.0.0 0.255.255.255
[R3-ospf-1-area-0.0.0.0]network 12.1.1.0 0.0.0.255
通过 display ospf peer 命令查看路由器的邻居信息,可以看到R1于R2、R3已经成功建立了邻接关系。
执行display ospf 1 routing命令查看路由表。(执行OSPF协议命令时,输入OSPF协议进程号默认值为1)
R1 ping 测试R2、R3