4 链路状态路由协议-OSPF(开放式最短路径优先协议)
4.1 优点
- 无环路
- 收敛快
- 扩展性好
- 支持认证
4.2 原理
OSPF的收敛过程由链路状态公告LSA(Link State Advertisement)泛洪开始,LSA中包含了路由器已知的接口IP地址、掩码、开销和网络类型等信息。收到LSA的路由器都可以根据LSA提供的信息建立自己的链路状态数据库LSDB(Link State Database),并在LSDB的基础上使用SPF算法进行运算,建立起到达每个网络的最短路径树。最后,通过最短路径树得出到达目的网络的最优路由,并将其加入到IP路由表中。
4.3 RouterID
Router ID是一个32位的值,它唯一标识了一个自治系统(AS)内的路由器,管理员可以为每台运行OSPF的路由器手动配置一个Router ID。如果未手动指定,设备会按照以下规则自动选举Router ID:如果设备存在多个逻辑接口地址,则路由器使用逻辑接口中最大的IP地址作为Router ID;如果没有配置逻辑接口,则路由器使用物理接口的最大IP地址作为Router ID。
Router ID可以是任意的IP地址。
注意:重新配置Router ID后,需要重置OSPF进程来更新Router ID。如果RouterID重复了,不能建立邻居关系。
建议:手动配置Router ID,以防止Router ID因为接口地址的变化而改变。
4.4 DR&BDR
- DR可以减少广播型网络中的邻接关系的数量。
- DR&BDR可监听以224.0.0.6为目的地址的OSPF报文。
- Drother只监听以224.0.0.5为目的地址的OSPF报文。
每一个含有至少两个路由器的广播型网络和NBMA网络都有一个DR和BDR。BDR在DR发生故障时接管业务,一个广播网络上所有路由器都必须同BDR建立邻接关系。
注意:BR&BDR是接口
4.4.1 DR&BDR 选举
- DR/BDR选举不强占,即当网络中已经有DR角色了,优先级再高也不会马上强占,除非重启进程重新选举
- DR是基于端口的DR优先级的值进行选举的,默认都为1,最大为255,如果优先级为0表示不参加选举,可以手动修改优先级:[R1-GigabitEthernet0/0/0]ospf dr-priority X
- 优先级一致的情况下,通过比较Router ID较大的为DR。
4.5 邻居状态机与OSPF报文
4.5.1 OSPF报文
-
OSPF报文封装在IP报文中,协议号为89。
-
OSPF报文类型有5种:
- Hello 报文(发现邻居,选取DR)
- DD(Database Description)数据库描述报文(首先比较(Seq)主从关系,比较后DR先发送LSDB摘要)
- LSR(Link State Request)链路状态请求报文(如果发现自己没有的,就发送LSR请求报文)
- LSU(Link State Update)链路状态更新报文
- LSACK(Link State Acknowledgment)链路状态回复报文
4.5.2 OSPF 状态
邻居和邻接关系建立的过程如下:
-
Down:这是邻居的初始状态,表示没有在邻居失效时间间隔内收到来自邻居路由器的Hello数据包。
-
Attempt:此状态只在NBMA网络上存在,表示没有收到邻居的任何信息,但是已经周期性的向邻居发送报文,发送间隔为HelloInterval。如果RouterDeadInterval间隔内未收到邻居的Hello报文,则转为Down状态。
-
Init:在此状态下,路由器已经从邻居收到了Hello报文,但是自己不在所收到的Hello报文的邻居列表中,尚未与邻居建立双向通信关系。
-
2-Way:在此状态下,双向通信已经建立,已经建立邻居关系,但是没有与邻居建立邻接关系。这是建立邻接关系以前的*状态。
-
ExStart:这是形成邻接关系的第一个步骤,邻居状态变成此状态以后,路由器开始向邻居发送DD报文。主从关系是在此状态下形成的,初始DD序列号也是在此状态下决定的。在此状态下发送的DD报文不包含链路状态描述。
-
Exchange:此状态下路由器相互发送包含链路状态信息摘要的DD报文,描述本地LSDB的内容。
-
Loading:相互发送LSR报文请求LSA,发送LSU报文通告LSA。
-
Full:路由器的LSDB已经同步。
4.5.3 邻居与邻接
-
邻居(Neighbor):
- OSPF路由器启动后,便会通过OSPF接口向外发送Hello报文用于发现邻居。状态到达2-way 即可称为建立了邻居关系。
-
邻接(Adjacency):
- 只有当双方成功交换DD报文,并同步LSDB后,达到Full状态,才形成真正意义上的邻接关系。
-
运行OSPF的路由器之间需要交换链路状态信息和路由信息,在交换这些信息之前路由器之间首先需要建立邻接关系。
4.6 OSPF支持网络类型
- 缺省情况下,OSPF认为以太网的网络类型是广播类型,PPP、HDLC的网络类型是点到点类型。
- 缺省情况下,P2P、Broadcast类型接口发送Hello报文的时间间隔的值为10秒;P2MP、NBMA类型接口发送Hello报文的时间间隔的值为30秒。
4.7 OSPF 区域类型
划分OSPF区域可以缩小路由器的LSDB规模,减少网络流量。
ABR:RTA,只有一个接口在骨干区域
ASBR:RTE,只要一个接口引入了外部路由。(ABR也可以是ASBR。)
4.8 OSPF 开销
- OSPF的接口开销=带宽参考值/带宽 (参考值缺省为100Mbit/s)
- 可以通过bandwidth-reference命令来设置带宽参考值。还可以通过ospf cost命令来手动为一个接口调整开销(流量出口调整)。
- 1M=1000K=1000000b,如一个64kbit/s串口的开销为1562,一个E1接口(2.048 Mbit/s)的开销为48。
配置
[RTA]ospf router-id 1.1.1.1
[RTA-ospf-1]area 0
[RTA-ospf-1-area-0.0.0.0]network 192.168.1.0 0.0.0.255
# 配置骨干路由
[RTA]display ospf peer
# 查看邻居相关的属性,包括区域、邻居的状态、邻接协商的主从状态以及DR和BDR情况。
RTA]interface GigabitEthernet0/0/0
[RTA-GigabitEthernet0/0/0]ospf authentication-mode md5 1 goktech
# OSPF认证,参数1表示接口加密认证中的认证密钥ID,它必须与对端上的key-id一致。
# ospf authentication-mode simple | cipher
[R1-GigabitEthernet0/0/0]ospf dr-priority 255
# 优先级取值范围为0-255,值越高越优先。缺省情况下,接口优先级为1。
[Huawei-GigabitEthernet1/0/0] ospf timer hello 15
# 使此接口发送Hello包时间为15秒(默认10)
[Huawei-GigabitEthernet1/0/0] ospf timer dead 60
# 使此接口邻居失效时间为60s(默认40)