OSPF单区域配置实验
1.OSPF简介:
OSPF(Open Shortest Path First)即开放式最短路径优先协议,是 IETF 组织开发的基于链路状态的内部网关协议(IGP) ,用于在单一自治系统(AS)内进行路由决策。以下从多方面详细介绍:
1.1基本概念:
- 链路状态协议:把网络中的链路(可看作路由器接口)及接口与相邻路由器关系等状态信息收集起来,形成链路状态数据库(LSDB) 。每个路由器依据 LSDB,使用最短路径优先(SPF)算法(即迪杰斯特拉算法 )计算到达各网络的最短路径,构建路由表。
- 自治系统(AS)与区域:AS 是由同一技术管理机构管理、使用统一路由策略的网络集合。OSPF 网络可由单个区域或多个区域组成。区域 0 是骨干区域,用于在非骨干区域间传递区域间路由信息。单区域 OSPF 网络中,各路由器维护描述整个 AS 拓扑的数据库;多区域网络里,路由器维护自身所在区域拓扑数据库,同时保留其他区域汇总拓扑。
1.2运行过程:
- 邻居发现:路由器通过发送 Hello 分组发现并建立与邻居路由器的邻接关系。Hello 分组周期性发送,包含路由器自身相关信息及对邻居的期望信息。若收到邻居回应的 Hello 分组且各项参数匹配,就建立起双向通信。
- 链路状态信息交换:
- 数据库描述(DBD)分组:路由器首次连入网络或从故障恢复后,通过 Hello 分组建立双向通信,接收邻居反馈的 DBD 分组,其包含链路状态数据库中条目的概要。
- 链路状态请求(LSR)分组:收到 DBD 分组后,若路由器发现自身链路状态数据库缺少某些条目或条目过期,就发送 LSR 分组,向邻居请求特定链路状态信息的详细内容。
- 链路状态更新(LSU)分组:用来应答 LSR 分组,将请求的链路状态信息发送给对方;网络运行中链路状态变化时,也用 LSU 分组以洪泛方式向全网更新链路状态。
- 链路状态确认(LSAck)分组:接收方收到 LSU 分组后,发送 LSAck 分组进行确认,确保链路状态更新的可靠传输。
- 路由计算:路由器收集到完整链路状态信息,构建好 LSDB 后,运用 SPF 算法计算到达各网络的最短路径,生成路由表。
1.3度量值:
OSPF 使用 “开销(cost)” 作为路由度量值,计算公式为:接口 cost = 参考带宽 / 接口带宽 。默认参考带宽是 100M ,比如 100M 带宽接口 cost 值为 1 ,10M 带宽接口 cost 值为 10 。cost 值越小,路径越优。可通过 bandwidth - reference
命令修改参考带宽,但建议全网路由器统一配置,以免计算不准确。
1.4分组类型:
- Hello 分组:用于发现、建立和维护邻居关系,周期性发送,包含路由器的 Router ID、掩码、Hello 间隔、Dead 间隔等参数。
- 数据库描述(DBD)分组:在邻居建立初期,用于交换链路状态数据库的摘要信息,帮助路由器了解邻居数据库概况。
- 链路状态请求(LSR)分组:向邻居请求特定链路状态信息的详细内容。
- 链路状态更新(LSU)分组:携带完整链路状态通告(LSA)信息,用于更新链路状态数据库。
- 链路状态确认(LSAck)分组:对收到的 LSU 分组进行确认,确保更新信息可靠传输。
1.5优点:
- 适应大规模网络:对路由跳数无限制,支持广泛网络规模,在组播网络中能支持数十台路由器协同工作。
- 触发式更新:收敛完成后,以触发方式发送拓扑变化信息,减少网络带宽占用,且组播发送对其他设备干扰小。
- 收敛速度快:网络拓扑变化时,能快速发送报文扩散新拓扑信息,且使用周期短的 Hello 报文维护邻居状态。
- 选路合理:以开销为度量值,考虑链路带宽因素,带宽越高开销越小,使选路更合理。
- 避免路由环路:基于最短路径算法,根据链路状态生成路径,理论上可避免路由环路。
1.6缺点:
- 配置复杂:需对网络细致规划,对网络分析员技术水平要求高,需深入理解协议才能完成配置和日常维护。
- 负载分担能力有限:在同一区域内,路由协议倾向通过优先级最高接口转发数据,优先级低的接口难以参与负载分担。
2.具体配置:
实验拓扑及IP分配:
2.1RA配置:
2.1.1修改主机名:
Router>enable
Router#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#hostname RA
RA(config)#
2.1.2配置环回:
RA(config)#interface loopback 0
RA(config-if)#
%LINK-5-CHANGED: Interface Loopback0, changed state to up
%LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to up
RA(config-if)#ip address 20.1.1.1 255.0.0.0
RA(config-if)#no shutdown
RA(config-if)#exit
2.1.3配置接口:
RA(config)#int g0/0
RA(config-if)#ip address 192.168.20.1 255.255.255.0
RA(config-if)#no shutdown
RA(config-if)#
%LINK-5-CHANGED: Interface GigabitEthernet0/0, changed state to up
RA(config-if)#exit
RA(config)#interface s0/0/1
RA(config-if)#clock rate 128000 # 设置时钟频率为128KHz
RA(config-if)#bandwidth 128 # 设置带宽为128Kbps
RA(config-if)#ip address 192.168.10.1 255.255.255.0
RA(config-if)#no shutdown
2.1.4OSPF宣告:
RA(config)#router ospf 10 # 启动OSPF进程,进程号为10,进程号本地有效
RA(config-router)#router-id 20.1.1.1 # 配置路由器ID,一般使用环回接口地址,确保全网唯一
RA(config-router)#network 192.168.10.0 0.0.0.255 area 0 # 宣告192.168.10.0/24网段,反掩码0.0.0.255,区域0
RA(config-router)#network 192.168.20.0 0.0.0.255 area 0
RA(config-router)#network 20.0.0.0 0.255.255.255 area 0
RA(config-router)#
2.1.5保存配置:
RA(config)#do wr
Building configuration...
[OK]
RA(config)#
2.1.6查看邻居列表:
2.1.7查看路由表:
2.1.8查看接口数据结构:
2.2RB配置:
2.2.1修改主机名:
Router>enable
Router#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#hostname RB
RB(config)#
2.2.2配置环回:
RB(config)#interface loopback 0
RB(config-if)#
%LINK-5-CHANGED: Interface Loopback0, changed state to up
%LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to up
RB(config-if)#ip address 10.1.1.1 255.0.0.0
RB(config-if)#exit
RB(config)#
2.2.3配置接口:
RB(config)#interface s0/0/1
RB(config-if)#ip address 192.168.10.2 255.255.255.0
RB(config-if)#no shutdown
RB(config-if)#
%LINK-5-CHANGED: Interface Serial0/0/1, changed state to up
RB(config-if)#
%LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/0/1, changed state to up
RB(config-if)#
2.2.4OSPF宣告:
RB(config)#router ospf 10
RB(config-router)#router-id 10.1.1.1
RB(config-router)#network 192.168.10.0 0.0.0.255 area 0
RB(config-router)#network 10.0.0.0 0.255.255.255 area 0
RB(config-router)#exit
2.2.5保存配置:
RB(config)#do wr
Building configuration...
[OK]
2.3RC配置:
2.3.1修改主机名:
Router#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#hostname RC
RC(config)#
2.3.2配置环回:
RC(config)#interface loopback 0
RC(config-if)#
%LINK-5-CHANGED: Interface Loopback0, changed state to up
%LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to up
RC(config-if)#ip address 30.1.1.1 255.0.0.0
RC(config-if)#exit
RC(config)#
2.3.3配置接口:
RC(config)#int g0/0
RC(config-if)#ip address 192.168.20.2 255.255.255.0
RC(config-if)#no shutdown
RC(config-if)#
%LINK-5-CHANGED: Interface GigabitEthernet0/0, changed state to up
%LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/0, changed state to up
RC(config-if)#
2.3.4OSPF宣告:
RC(config)#router ospf 10
RC(config-router)#router-id 30.1.1.1
RC(config-router)#network 192.168.20.0 0.0.0.255 area 0
RC(config-router)#network 30.0.0.0 0.255.255.255 area 0
RC(config-router)#
2.3.5保存配置:
RC(config-router)#exit
RC(config)#do wr
Building configuration...
[OK]