1 路由的分类
-直连路由
-非直连路由
&:静态路由
&:动态路由
@:IGP:内部网关路由协议-在同一个AS内部使用(在企业内部或者数据中心内部使用)
-DV:距离矢量路由协议
-RIP(v1/v2)
-IGRP-思科私有协议
-EIGRP-思科私有协议
-LS:链路状态路由协议
-OSPF:开放式最短路径优先(企业用:功能多,可以精细化控制)
-ISIS:中间系统到中间系统(数据中心用,转发能力强,大流量转发)
@:EGP:外部网关路由协议:在不同的AS之间使用(AS:自治系统)
-BGP:边界网关协议
2 OSPF 的介绍
开放式最短路径优先OSPF(Open Shortest Path First)是IETF组织开发的一个基于链路状态的内部网关协议(Interior Gateway Protocol)。目前针对IPv4协议使用的是OSPF Version 2(RFC2328);针对IPv6协议使用OSPF Version 3(RFC2740)。如无特殊说明,本文中所指的OSPF均为OSPF Version 2。
OSPF概述
1、OSPF是什么
-开放式最短路径优先协议,一种最受欢迎的动态路由协议
-版本:OSPFv2(IPv4) 和OSPFv3(IPv6)
-OSPF位于OSI参考模型的第三层,数据封装在IP报头的后面
-协议号是89
2、场景:适用于中、大型网络规模,常见的场景有
& 政企网,层次化的网络架构中
& 数据中心内部,用于实现把不同的网段打通
3、作用:便于大型网络中对路由的管理和维护
3 OSPF 的报文
- -Hello 用于发现、建立、维护和断开邻居关系(交朋友)
- -DBD 用于描述数据库摘要信息(LSA头部信息)(发菜单)
- -LSR 请求自己数据库中没有的LSA信息(我要)
- -LSU 根据对方的请求信息,更新LSA给对方 (给你)
- -LSack 收到对方的更新LSA信息后,进行确认(说谢谢)
4 OSPF 的工作过程
⇒建立邻居表:和小姐姐成为朋友
⇒同步数据库:交换个人信息(家庭住址)
⇒计算路由表:计算出从我们家到她家的最优的路径
5 OSPF 的状态
Dec 15 2023 09:41:00-08:00 Huawei %%01OSPF/4/NBR_CHANGE_E(l)[2]:Neighbor changes
event: neighbor status changed. (ProcessId=256, NeighborAddress=2.1.168.192, Ne
ighborEvent=Hello Received, NeighborPreviousState=Down, NeighborCurrentState=Init
)
[Huawei-ospf-1-area-0.0.0.22]
Dec 15 2023 09:41:04-08:00 Huawei %%01OSPF/4/NBR_CHANGE_E(l)[3]:Neighbor changes
event: neighbor status changed. (ProcessId=256, NeighborAddress=2.1.168.192, Ne
ighborEvent=2Way Received, NeighborPreviousState=Init, NeighborCurrentState=ExSta
rt)
[Huawei-ospf-1-area-0.0.0.22]
Dec 15 2023 09:41:04-08:00 Huawei %%01OSPF/4/NBR_CHANGE_E(l)[4]:Neighbor changes
event: neighbor status changed. (ProcessId=256, NeighborAddress=2.1.168.192, Ne
ighborEvent=NegotiationDone, NeighborPreviousState=ExStart, NeighborCurrentState
=Exchange)
[Huawei-ospf-1-area-0.0.0.22]
Dec 15 2023 09:41:04-08:00 Huawei %%01OSPF/4/NBR_CHANGE_E(l)[5]:Neighbor changes
event: neighbor status changed. (ProcessId=256, NeighborAddress=2.1.168.192, Ne
ighborEvent=ExchangeDone, NeighborPreviousState=Exchange, NeighborCurrentState=L
oading)
[Huawei-ospf-1-area-0.0.0.22]
Dec 15 2023 09:41:04-08:00 Huawei %%01OSPF/4/NBR_CHANGE_E(l)[6]:Neighbor changes
event: neighbor status changed. (ProcessId=256, NeighborAddress=2.1.168.192, Ne
ighborEvent=LoadingDone, NeighborPreviousState=Loading, NeighborCurrentState=Ful
建立领居表
Down:发送hello报文
Init:接收到邻居发来的hello报文,但是该hello报文中没有自己的router id
Two-way:接收到的hello报文中,有自己的router-id
同步数据库
Exstart: 交互第一个dd 报文 ,确认主从关系,保证传输可靠
Exchange:交互数据库描述信息
Loading:数据库同步
Full:完全邻接状态
计算路由表
•DD报文部分字段解释
▫I:当发送连续多个DD报文时,如果这是第一个DD报文,则置为1,否则置为0。
▫M (More):当发送连续多个DD报文时,如果这是最后一个DD报文,则置为0。否则置为1,表示后面还有其他的DD报文。
▫MS (Master/Slave):当两台OSPF路由器交换DD报文时,首先需要确定双方的主从关系,RouterID大的一方会成为Master。当值为1时表示发送方为Master。
▫DD sequence number:DD报文序列号。主从双方利用序列号来保证DD报文传输的可靠性和完整性。
DD 报文按照顺序传输数据的
•R1开始向R2发送LSR报文,请求那些在Exchange状态下通过DD报文发现的、并且在本地LSDB中没有的链路状态信息。
•R2向R1发送LSU报文,LSU报文中包含了那些被请求的链路状态的详细信息。R1在完成LSU报文的接收之后,且没有其他待请求的LSA后,会将邻居状态从Loading变为Full。
R1向R2发送LSAck报文,作为对LSU报文的确认
6 OSPF 区域
1、区域划分:
OSPF适用于大型网络,采用分层设计,分为骨干区域和非骨干区域。
2、OSPF 骨干区域
区域号为0,表示的就是“骨干区域”
3、OSPF 非骨干区域
区域号不为0,表示的就是“非骨干区域”
4、非骨干区域必须和骨干区域“直接”相连,能实现“区域之间的互通”
5、OSPF 区域的表示
通过十进制表示,例如区域 0、1、2、3等
通过点分十进制表示,例如区域 0.0.0.0 、0.0.0.1、0.0.0.2等
6、为什么要引入区域
原因:只有一个区域的不足
如果只有一个区域,公司内所有路由器都要同步数据库**:**
不足:
- 1)数据报文非常多,所以设备压力大, 带宽占用多
- 2)由于数据报文多,所以同步数据库非常慢,占用时间多
- 3)由于数据库非常大, 所以计算路由慢,所以计算出来的路由表也非常大
- 4)由于路由表非常大,路由器转发数据的时候, 查路由表时会让设备压力大(CPU占用高),查表慢,最终导致,数据转发慢,公司网络性能差
所以我们要引入OSPF区域
引入多个区域的优势:
1)只有同一个区域内的路由器才需要同步数据库,不同区域的路由不需要同步数据库
2)所以同步数据库的设备少, 数据报文就少,设备压力也小,也不过多浪费带宽 3)由于数据报文少,所以数据库最终就小
4)数据库小,数据库同步的速度就快,计算路由的路由就快 5)数据库小,最终路由表也小,转发数据的速度就快,公司的网络质量就好
7 OSPF 单区域的实践
R1
interface GigabitEthernet0/0/0
ip address 192.168.11.254 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 192.168.1.2 255.255.255.0
#
interface GigabitEthernet0/0/2
#
interface NULL0
#
ospf 1
area 0.0.0.11
area 0.0.0.22
network 192.168.1.0 0.0.0.255
network 192.168.11.0 0.0.0.255
R2
#
interface GigabitEthernet0/0/0
ip address 192.168.1.1 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 192.168.12.254 255.255.255.0
#
interface GigabitEthernet0/0/2
#
interface NULL0
#
ospf 1
area 0.0.0.22
network 192.168.1.0 0.0.0.255
network 192.168.12.0 0.0.0.255
8 OSPF 领局表的解析
<Huawei>display ospf brief
OSPF Process 1 with Router ID 192.168.12.254
OSPF Protocol Information
RouterID: 192.168.12.254 Border Router:
Multi-VPN-Instance is not enabled
Global DS-TE Mode: Non-Standard IETF Mode
Graceful-restart capability: disabled
Helper support capability : not configured
Applications Supported: MPLS Traffic-Engineering
Spf-schedule-interval: max 10000ms, start 500ms, hold 1000ms
Default ASE parameters: Metric: 1 Tag: 1 Type: 2
Route Preference: 10
ASE Route Preference: 150
SPF Computation Count: 8
RFC 1583 Compatible
Retransmission limitation is disabled
Area Count: 1 Nssa Area Count: 0
ExChange/Loading Neighbors: 0
Process total up interface count: 2
Process valid up interface count: 2
Area: 0.0.0.22 (MPLS TE not enabled)
Authtype: None Area flag: Normal
SPF scheduled Count: 8
ExChange/Loading Neighbors: 0
Router ID conflict state: Normal
Area interface up count: 2
Interface: 192.168.12.254 (GigabitEthernet0/0/1)
Cost: 1 State: DR Type: Broadcast MTU: 1500
Priority: 1
Designated Router: 192.168.12.254
Backup Designated Router: 0.0.0.0
Timers: Hello 10 , Dead 40 , Poll 120 , Retransmit 5 , Transmit Delay 1
Interface: 192.168.1.1 (GigabitEthernet0/0/0)
Cost: 1 State: DR Type: Broadcast MTU: 1500
Priority: 1
Designated Router: 192.168.1.1
Backup Designated Router: 192.168.1.2
Timers: Hello 10 , Dead 40 , Poll 120 , Retransmit 5 , Transmit Delay 1
<Huawei>display ospf peer brief
OSPF Process 1 with Router ID 192.168.12.254
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
0.0.0.22 GigabitEthernet0/0/0 192.168.1.2 Full
----------------------------------------------------------------------------
<Huawei>display ospf lsdb
OSPF Process 1 with Router ID 192.168.12.254
Link State Database
Area: 0.0.0.22
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 192.168.12.254 192.168.12.254 211 48 80000008 1
Router 192.168.1.2 192.168.1.2 143 48 80000006 1
Network 192.168.1.1 192.168.12.254 211 32 80000003 0
<Huawei>display ospf interface GigabitEthernet 0/0/0
OSPF Process 1 with Router ID 192.168.12.254
Interfaces
Interface: 192.168.1.1 (GigabitEthernet0/0/0)
Cost: 1 State: DR Type: Broadcast MTU: 1500
Priority: 1
Designated Router: 192.168.1.1
Backup Designated Router: 192.168.1.2
Timers: Hello 10 , Dead 40 , Poll 120 , Retransmit 5 , Transmit Delay 1
重要字段解析:
Interface: 192.168.1.1 (GigabitEthernet0/0/0) : 接口号和接口IP地址
Cost: 1 :开销值默认为1
State: BDR :接口状态默认位 BDR(备份指定路由器)
Type: Broadcast :网络类型默认位 广播型网络
MTU: 1500 :最大传输单元,1500字节
9 OSPF无法建立邻居的原因
OSPF 简洁版
- 接口的状态是up状态 才可以开启领居连接
- router-id 不一致无法建立连接
- area 区域不一样无法建立连接
- 子网掩码 ip地址不一样无法建立连接
- hello时间不一样 无法建立连接
- dead死亡时间不一致 无法建立连接
- 网络类型不一致 无法建立连接
- Dr优先级不能为0 不能一样 否则无法建立连接
0,接口是up的状态
若物理接口不Up或是不稳定(有振荡现象),请排查物理链路和链路层协议,确保物理和协议状态都是Up,并且接口无错误计数。
1,OSPF中IP地址没有宣告 没有宣告连接失败
[R1-ospf-1-area-0.0.0.0]undo network 192.168.24.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0]undo network 192.168.10.254 0.0.0.0
PC>ping 192.168.20.1
Ping 192.168.20.1: 32 data bytes, Press Ctrl_C to break
Request timeout!
Request timeout!
Request timeout!
Request timeout!
Request timeout!
--- 192.168.20.1 ping statistics ---
5 packet(s) transmitted
0 packet(s) received
100.00% packet loss
** 还原**
[R1-ospf-1-area-0.0.0.0]network 192.168.24.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0]network 192.168.10.254 0.0.0.0
PC>ping 192.168.20.1
Ping 192.168.20.1: 32 data bytes, Press Ctrl_C to break
Request timeout!
From 192.168.20.1: bytes=32 seq=2 ttl=126 time=15 ms
From 192.168.20.1: bytes=32 seq=3 ttl=126 time=16 ms
From 192.168.20.1: bytes=32 seq=4 ttl=126 time=16 ms
From 192.168.20.1: bytes=32 seq=5 ttl=126 time=15 ms
--- 192.168.20.1 ping statistics ---
5 packet(s) transmitted
4 packet(s) received
20.00% packet loss
round-trip min/avg/max = 0/15/16 ms
PC>
2,两台路由器中的router-id相同时,建立邻居会失败。
更改router-id使两台路由器无法建立邻居。
例如:
R2:
[R2]ospf 1 route-id 1.1.1.1
//根据拓扑所示,原本的R2的router-id为2.2.2.2,现在更改为1.1.1.1,使其和R1保持一致。
[R2]return //返回到用户视图
<R2>reset ospf process //重启OSPF进程
<R2>dis ospf peer brief //查看邻居状态
OSPF Process 1 with Router ID 1.1.1.1
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
----------------------------------------------------------------------------
验证完之后回复配置:
[R2]ospf 1 route-id 2.2.2.2
[R2]return //返回到用户视图
<R2>reset ospf process //重启OSPF进程
<R2>dis ospf peer brief //查看邻居状态
OSPF Process 1 with Router ID 2.2.2.2
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
0.0.0.0 GigabitEthernet0/0/1 1.1.1.1 Full
----------------------------------------------------------------------------
- 更改router-id需要重新启动OSPF进程:**reset ospf process**
**[R1]display ospf error(OSPF的报错信息)**
OSPF Process 1 with Router ID 1.1.1.1
OSPF error statistics
General packet errors:
0 : IP: received my own packet 0 : Bad packet
0 : Bad version(考点:版本不同OSPFv2和OSPFv3) 0 : Bad checksum
0 : Bad area id (考点:区域不同) 0 : Drop on unnumbered interface
0 : Bad virtual link 0 : Bad authentication type(考点:认证不匹配)
0 : Bad authentication key 0 : Packet too small
0 : Packet size > ip length 0 : Transmit error
0 : Interface down 0 : Unknown neighbor
0 : Bad net segment 0 : Extern option mismatch
20 : Router id confusion(考点:route-id相同,当此时数值不为0的时候,表示收到了错误的报文)
3,两台路由器互联接口的area id 必须相同,才能建立邻居。
R2:
删除掉之前的area 0配置
ospf 1 router-id 2.2.2.2
area 0.0.0.0
undo network 192.168.12.2 0.0.0.0
undo network 192.168.20.254 0.0.0.0
quit
undo area 0
之后配置:
ospf 1 router-id 2.2.2.2
area 0.0.0.1
network 192.168.24.2 0.0.0.0
network 192.168.20.254 0.0.0.0
检查:
[R2]display ospf peer brief
OSPF Process 1 with Router ID 2.2.2.2
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
----------------------------------------------------------------------------
恢复配置:
ospf 1 router-id 2.2.2.2
area 0.0.0.1
undo network 192.168.12.2 0.0.0.0
undo network 192.168.20.254 0.0.0.0
quit
undo area 1
area 0.0.0.0
network 192.168.12.2 0.0.0.0
network 192.168.20.254 0.0.0.0
检查:
display ospf peer brief
OSPF Process 1 with Router ID 2.2.2.2
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
0.0.0.0 GigabitEthernet0/0/1 1.1.1.1 Full
----------------------------------------------------------------------------
4,两台路由器的接口IP地址的子网掩码必须一致(同网段),才可以建立邻居
例如:
R2:
interface GigabitEthernet0/0/1
ip address 192.168.21.1 24 //将R2的地址和R1的地址改为不在同一个网段。
[R2]display ospf peer brief
OSPF Process 1 with Router ID 2.2.2.2
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
完成后回复配置:
interface GigabitEthernet0/0/1
ip address 192.168.12.2 255.255.255.0
display ospf peer brief
OSPF Process 1 with Router ID 2.2.2.2
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
0.0.0.0 GigabitEthernet0/0/1 1.1.1.1 Full
----------------------------------------------------------------------------
特殊情况:**如果OSPF的网络类型是P2P的话**,是可以建立邻居的,但是没有路由。
R2:
interface GigabitEthernet0/0/1
ip address 192.168.21.1 24 //将R2的地址和R1的地址改为不在同一个网段。
ospf network-type p2p //网络类型改为P2P
R1:
interface GigabitEthernet0/0/1
ip address 192.168.12.1 24
ospf network-type p2p
检查:
display ospf peer brief
OSPF Process 1 with Router ID 2.2.2.2
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
0.0.0.0 GigabitEthernet0/0/1 1.1.1.1 Full
----------------------------------------------------------------------------
但是此时并不能相互通信:
PC1:
PC>ping 192.168.20.1
Ping 192.168.20.1: 32 data bytes, Press Ctrl_C to break
Request timeout!
Request timeout!
因为(OSPF工作原理)即使建立了邻居表,但并不能同步数据库,所以也无法建立路由表,自然无法通信。
恢复配置:
R1:
[R1-GigabitEthernet0/0/1]undo ospf network-type //删除P2P网络类型,恢复默认的广播类型
R2:
[R2-GigabitEthernet0/0/1]undo ospf network-type
[R2-GigabitEthernet0/0/1]ip address 192.168.12.2 24 //IP地址修改为和R1同网段
检查:
PC1:
PC>ping 192.168.20.1
Ping 192.168.20.1: 32 data bytes, Press Ctrl_C to break
From 192.168.20.1: bytes=32 seq=1 ttl=126 time=16 ms
From 192.168.20.1: bytes=32 seq=2 ttl=126 time=16 ms
5,两台路由器的网络类型要一致,否则无法建立邻居关系。
R2:
interface GigabitEthernet0/0/1
ospf network-type p2mp //将R2的网络类型改为P2MP
(注:改为P2P模式后效果不明显,因P2P模式的特性,还是可能会建立邻居,所以改为P2MP模式)
R1此时的网络类型广播 broadcast(默认)
检查邻居状态:
[R2]display ospf peer brief
OSPF Process 1 with Router ID 2.2.2.2
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
----------------------------------------------------------------------------
恢复配置:
R2:
interface GigabitEthernet0/0/1
undo ospf network-type
检查:
display ospf peer brief
OSPF Process 1 with Router ID 2.2.2.2
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
0.0.0.0 GigabitEthernet0/0/1 1.1.1.1 Full
----------------------------------------------------------------------------
6,两台路由器的hello时间必须一致,才能建立邻居关系
修改hello时间时,dead时间会自动更改。
![](https://secure2.wostatic.cn/static/3rTkeiyDfukCsmPfo6w5Tn/image.png?auth_key=1702606951-mV1cEdq1dcTKPtTTgBfgXz-0-103ece3f261b8fe9151b5fced792ab7d)
缺省情况下,hello时间10秒,dead时间是hello时间的4倍(40秒)
R2:
interface GigabitEthernet0/0/1
ospf timer hello 20 //hello时间改为20秒,此时和R1默认10秒不匹配。
ospf timer dead 40 //dead时间改为40秒,和R1默认时间40匹配。
检查:
[R2]display ospf peer brief
OSPF Process 1 with Router ID 2.2.2.2
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
----------------------------------------------------------------------------
恢复配置:
[R2-GigabitEthernet0/0/1]undo ospf timer dead
[R2-GigabitEthernet0/0/1]undo ospf timer hello
检查:
display ospf peer brief
OSPF Process 1 with Router ID 2.2.2.2
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
0.0.0.0 GigabitEthernet0/0/1 1.1.1.1 Full
----------------------------------------------------------------------------
7,两台路由器的dead时间必须一致,才能建立邻居关系
R2:
interface GigabitEthernet0/0/1
ospf timer dead 60 //dead时间改为40秒,和R1默认时间40匹配。
检查:
[R2]display ospf peer brief
OSPF Process 1 with Router ID 2.2.2.2
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
----------------------------------------------------------------------------
恢复配置:
[R2-GigabitEthernet0/0/1]undo ospf timer hello
检查:
display ospf peer brief
OSPF Process 1 with Router ID 2.2.2.2
Peer Statistic Information
------------------a---------------------------------------------------------
Area Id Interface Neighbor id State
0.0.0.0 GigabitEthernet0/0/1 1.1.1.1 Full
----------------------------------------------------------------------------
8,两台路由的DR优先级不能同时为0,否则无法建立邻接关系(full),但是可以建立(2-way)邻居关系。
R1:
interface GigabitEthernet0/0/1
ospf dr-priority 0 //DR优先级设置为0
R2:
interface GigabitEthernet0/0/1
ospf dr-priority 0 //DR优先级设置为0
检查:
[R1]display ospf peer brief
OSPF Process 1 with Router ID 1.1.1.1
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
0.0.0.0 GigabitEthernet0/0/1 2.2.2.2 2-Way
-------------------------------------------------------------------------
特殊情况:如果是P2P的情况下,是可以建立邻接关系的(full),并且可以传递路由。
R1:
interface GigabitEthernet0/0/1
ospf network-type p2p
R2:
interface GigabitEthernet0/0/1
ospf network-type p2p
检查:
display ospf peer brief
OSPF Process 1 with Router ID 2.2.2.2
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
0.0.0.0 GigabitEthernet0/0/1 1.1.1.1 Full
----------------------------------------------------------------------------
PC>ping 192.168.20.1
Ping 192.168.20.1: 32 data bytes, Press Ctrl_C to break
From 192.168.20.1: bytes=32 seq=1 ttl=126 time=16 ms
From 192.168.20.1: bytes=32 seq=2 ttl=126 time=16 ms
恢复配置:
R2:
[R2-GigabitEthernet0/0/1]undo ospf dr-priority
[R2-GigabitEthernet0/0/1]undo ospf network-type
R1:
[R1-GigabitEthernet0/0/1]undo ospf dr-priority
[R1-GigabitEthernet0/0/1]undo ospf network-type
检查:
display ospf peer brief
OSPF Process 1 with Router ID 2.2.2.2
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
0.0.0.0 GigabitEthernet0/0/1 1.1.1.1 Full
----------------------------------------------------------------------------
10 OSPF 中的路由角色
- 骨干路由器:路由器只要有一个接口在骨干区域
- 非骨干路由器:路由器的所有接口都在非骨干区域
- ABR(区域边界路由器) 同时连接着骨干区域和非骨干区域的路由器
- ASBR(自治系统边界路由器)具有产生外部路由能力的路由器