HCIA学习笔记Day3:路由技术与OSPF协议详解
一、路由基础
1、路由概念
1)什么是路由:路由就是数据包从一个网络到另外一外网络的过程
2)支持路由功能的设备:路由器、三层交换机、防火墙
3)每一台路由器都维护着一张路由表,路由器是依靠这张路由表来指导数据转发的
4)查看路由表
<Huawei>display ip routing-table //查看IP核心路由表 目的地址 /掩码 协议 优先级 开销值 下一跳 出接口 Destination/Mask Proto Pre Cost NextHop Interface 解析: Destination/Mask:表示此路由的目的网络地址与网络掩码。 Proto(Protocol):该路由的协议类型,也即路由器是通过什么协议获知该路由的。 Pre(Preference):表示此路由的路由协议优先级。 针对同一目的地,可能存在不同下一跳、出接口等多条路由 这些不同的路由可能是由不同的路由协议发现的,也可以是手工配置的静态路由。 优先级最高(数值最小)者将成为当前的最优路由。 Cost:路由开销:当到达同一目的地的多条路由具有相同的路由优先级时, 路由开销最小的将成为当前的最优路由。 NextHop:表示对于本路由器而言,到达该路由指向的目的网络的下一跳地址。 该字段指明了数据转发的下一个设备。 Interface:表示此路由的出接口。指明数据将从本路由器的哪个接口转发出去
5)路由分类:
- 直连路由:路由器接口所直连的网段形成的路由信息
- 静态路由:由管理员手动为路由器指定的路由信息
- 动态路由:路由器通过路由协议学习到的路由信息
2、路由分类体系
- 直连路由
(Direct Route)- 接口配置IP后自动生成的路由 - 非直连路由
(Indirect Route)- 需要手动或通过协议学习获得的路由- 静态路由
(Static Route)- 管理员手动配置的固定路由 - 动态路由
(Dynamic Route)- 路由器间自动学习更新的路由- IGP(内部网关协议) - 同一自治系统内部使用的路由协议
- DV(距离矢量路由协议)“ - 基于跳数和方向的路由协议
- RIP - 基于跳数的距离矢量协议
- IGRP - 思科私有的距离矢量协议
- EIGRP - 思科高级的混合路由协议
- LS(链路状态路由协议) - 基于网络拓扑状态的路由协议
- OSPF - 开放最短路径优先协议
- ISIS - 中间系统到中间系统协议
- DV(距离矢量路由协议)“ - 基于跳数和方向的路由协议
- EGP(外部网关协议) - 不同自治系统间使用的路由协议
- BGP - 边界网关协议,互联网骨干协议
- IGP(内部网关协议) - 同一自治系统内部使用的路由协议
- 静态路由
3、静态路由实验
1)拓扑
2)需求:实现PC1可以和PC2 互联互通
3)分析:
PC1在192.168.1.0/24网段
PC2在192.168.4.0/24网段
因为是跨网段通信,也叫非直连网段通信,所以我们使用静态路由 PC把目的地和自己不再同一网段的数据包,统统的交给网关,让网关帮忙转发数据
4)配置步骤:
- 基础网络配置
- 配置PC1和PC2的IP地址及子网掩码
- 配置路由器R1和R2各接口的IP地址
- 路由配置
- 在R1上配置去往192.168.4.0/24网段的路由
- 在R2上配置回程路由(去往192.168.1.0/24网段)
5)过程描述(参考-没有描述ARP协议和二层头部MAC地址封装的过程)
通信流程详解:请求路径(PC1 → PC2)
步骤1:源主机路由判断与ARP解析
- PC1(192.168.1.1)判断目标地址192.168.4.1与自身不在同一网段
- PC1查询ARP缓存,查找网关R1(192.168.1.254)的MAC地址
- 如无对应ARP条目,PC1发送ARP广播请求网关MAC地址
- 二层封装:
- 源MAC:PC1的MAC地址
- 目的MAC:R1 G0/0/0接口的MAC地址
- 源IP:192.168.1.1
- 目的IP:192.168.4.1
步骤2:R1路由查找与ARP解析
- R1收到数据包,解封装后根据目的IP 192.168.4.1查询路由表
- 初始状态下,R1路由表中无192.168.4.0/24路由条目
- 配置静态路由:添加192.168.4.0/24网段路由,下一跳指向R2(192.168.2.1)
- R1查询ARP缓存,查找下一跳R2的MAC地址
- 重新二层封装:
- 源MAC:R1 G0/0/1接口的MAC地址
- 目的MAC:R2 G0/0/0接口的MAC地址
- 源IP:192.168.1.1(保持不变)
- 目的IP:192.168.4.1(保持不变)
步骤3:R2路由查找与ARP解析
- R2收到数据包,解封装后查询路由表发现192.168.4.0/24为直连路由
- R2查询ARP缓存,查找PC2(192.168.4.1)的MAC地址
- 如无对应ARP条目,R2发送ARP广播请求PC2的MAC地址
- 重新二层封装:
- 源MAC:R2 G0/0/1接口的MAC地址
- 目的MAC:PC2的MAC地址
- 源IP:192.168.1.1(保持不变)
- 目的IP:192.168.4.1(保持不变)
通信流程详解:响应路径(PC2 → PC1)
步骤4:目标主机响应与ARP解析
- PC2收到请求数据包,准备发送响应
- PC2查询ARP缓存,查找网关R2(192.168.4.254)的MAC地址
- 二层封装:
- 源MAC:PC2的MAC地址
- 目的MAC:R2 G0/0/1接口的MAC地址
- 源IP:192.168.4.1
- 目的IP:192.168.1.1
步骤5:R2路由查找与ARP解析
- R2收到响应包,解封装后查询路由表发现无192.168.1.0/24路由条目
- 配置回程静态路由:添加192.168.1.0/24网段路由,下一跳指向R1(192.168.2.254)
- R2查询ARP缓存,查找下一跳R1的MAC地址
- 重新二层封装:
- 源MAC:R2 G0/0/0接口的MAC地址
- 目的MAC:R1 G0/0/1接口的MAC地址
- 源IP:192.168.4.1(保持不变)
- 目的IP:192.168.1.1(保持不变)
步骤6:R1路由查找与ARP解析
- R1收到响应包,解封装后查询路由表发现192.168.1.0/24为直连路由
- R1查询ARP缓存,查找PC1(192.168.1.1)的MAC地址
- 重新二层封装:
- 源MAC:R1 G0/0/0接口的MAC地址
- 目的MAC:PC1的MAC地址
- 源IP:192.168.4.1(保持不变)
- 目的IP:192.168.1.1(保持不变)
6)配置步骤:
第一步:分别配置PC1和PC2的IP地址、掩码、网关 第二步:配置R1路由器(接口IP地址和静态路由 ) R1的配置: <R1>un t m <R1>sys [R1]int g0/0/0 //进入接口g0/0/0 [R1-GigabitEthernet0/0/0]ip address 192.168.2.1 24 //配置接口IP地址 [R1-GigabitEthernet0/0/0]int g0/0/1 //进入接口g0/0/1 [R1-GigabitEthernet0/0/1]ip address 192.168.1.254 24 //配置接口IP地址 [R1-GigabitEthernet0/0/1]quit //退回到系统视图 [R1]ip route-static 192.168.4.0 24 192.168.2.2 //配置静态路由,目的地:192.168.4.0/24 网段,下一跳地址:192.168.2.2 第三步:配置R2路由器(接口IP地址和静态路由) R2的配置: <R2>un t m <R2>sys [R2]int g0/0/0 [R2-GigabitEthernet0/0/0]ip address 192.168.4.254 24 [R2-GigabitEthernet0/0/0]int g0/0/1 [R2-GigabitEthernet0/0/1]ip address 192.168.2.2 24 [R2-GigabitEthernet0/0/1]quit [R2]ip route-static 192.168.1.0 24 192.168.2.1 //配置静态路由,目的地:192.168.1.0/24 网段,下一跳地址:192.168.2.1 # 验证测试 <R1>display ip routing-table 192.168.4.1 //验证R1有没有去往4.1的路由 Destination/Mask Proto Pre Cost Flags NextHop Interface 192.168.4.0/24 Static 60 0 RD 192.168.2.2 GigabitEthernet0/0/0 <R2>display ip routing-table 192.168.1.1 //验证R2有没有去往1.1的回程路由 Destination/Mask Proto Pre Cost Flags NextHop Interface 192.168.1.0/24 Static 60 0 RD 192.168.2.1 GigabitEthernet0/0/1 重要字段解析: Destination:表示这条路由的目的地址 Mask:表示目的地址的子网掩码长度 NextHop:表示这条路由的下一跳地址, 下一跳地址就是指数据转发的下一个设备 Interface:表示这条路由的出接口,指明数据将从本地路由器哪个接口转发出去 测试:使用PC1 和 PC2 互相ping # 删除路由 删除静态路由:(静态路由的配置不能覆盖,如果配置错误需要删除才可以) [R2] undo Ip route-static 192.168.1.0 24 192.168.2.1
4、路由器转发数据包封装过程
1)路由器收到数据包后,查看数据包中的目的IP地址,根据目的IP地址,来查找路由表
2)数据包在网络中传输时,源IP地址和目的IP地址一直不变,但是源MAC地址和目的MAC地址每经过一个网段,就会发送一次变化
5、路由表总结
1)去往一个目的地址,如果有多条路由,路由器会根据最长掩码匹配原则,选择掩码最长的路由条目
2)当路由器有到达同一目的地的多条路由时(路由的目的地址及掩码相同)时,会选择路由优先级值最小的路由;
3)如果这些路由是相同的路由协议,优先级一致,则选度量值最优的。
4)路由表只要最优的路由条目
5)当路由器收到一个数据包时,会根据数据包的目的IP地址查找路由条目。如果能够找到匹配的路由条目,则依据路由条目的出接口及下一跳来转发数据;如果没有匹配的表项,则丢弃该数据包。
6)路由器判断路由是否有效,看路由条目的下一跳是否可达,如果下一跳可达,就认为路由有效
7)路由器的行为是逐跳的;是无连接网络,数据包从源到目的地沿路径每个路由器都必须有关于目标网段的路由,否则就会造成丢包,路由器只会把数据报文交给下一跳地址,如果下一跳设备没有路由,就会导致数据丢包。
8)数据通信往往是双向的,因此要关注流量的往返(往返路由)
二、缺省路由、路由迭代、等价路由
1、缺省路由(默认路由)
1)缺省路由(Default Route)是一种特殊的路由,当报文没有在路由表中找到匹配的具体路由表项时才使用的路由。如果报文的目的地址不能与路由表的任何目的地址相匹配,那么该报文将选取缺省路由进行转发。
2)缺省路由在路由表中的形式为0.0.0.0/0,缺省路由也被叫做默认路由。
3)缺省路由配置:
4)缺省路由一般用于企业网络出口,配置一条缺省路由让出口设备能够转发前往Internet上任意地址的IP报文
2、路由递归(路由迭代)
1)路由必须有直连的下一跳才能够指导转发,但是路由生成时下一跳可能不是直连的,因此需要计算出一个直连的下一跳和对应的出接口,这个过程就叫做路由递归。路由递归也被称为路由迭代。
3、等价路由
三、浮动路由
1、浮动路由概述
1)浮动路由是一种通过配置多条备用链路实现网络冗余的路由备份技术,又称路由备份。其核心原理是为相同目的地址设置不同下一跳的多条路由,通过调整管理距离(AD值)或优先级数值区分主备链路。主链路优先级较高(AD值较低),正常时优先生效;当主链路故障时,备用路由自动激活,维持网络连续性。
-
浮动路由又称为路由备份,由两条或多条链路组成浮动路由,这两条(或多条)静态路由的目的地址相同,但是下一跳地址不同。
-
给这多条静态路由设置不同的优先级,优先级高的那条静态路由做为主链路,优先级低的那条静态路由做为备份链路。
-
当主链路出现故障的时候,备份链路进入路由表中,顶替主链路承担数据转发任务,当主链路故障恢复的时候,主链路进入路由表,承担数据转发任务,备份链路变为不可用状态移出路由表。
2)浮动路由的作用:预防单路径故障,保持网络的不中断
3)浮动路由特点:浮动路由在同一时刻,数据只会由一条路径进行转发
2、路由的优先级
1)当去往同一个目的地有多条路由时,为了判断最优路由,各路由协议(包括静态路由)都被赋予了一个优先级。
2)优先级高的(数值小)的路由会成为最优路由,路由器会将最优路由条目放入本地IP核心路由表中。
3)路由优先级:优先级用数值表示,数值越小优先级越高
| 路由类型 | 英文标识 | 默认优先级 | 优先级说明 |
|---|---|---|---|
| 直连路由 | Direct | 0 | 最高优先级,接口配置IP后自动生成 |
| OSPF路由(内部) | OSPF | 10 | 内部网关协议,收敛速度快 |
| IS-IS路由 | IS-IS | 15 | 中间系统到中间系统协议 |
| 静态路由 | Static | 60 | 手动配置,优先级可调整 |
| RIP路由 | RIP | 100 | 距离矢量路由协议 |
| OSPF ASE路由 | OSPF ASE | 150 | OSPF外部路由 |
| BGP路由 | BGP | 255 | 边界网关协议,用于不同AS间 |
3、浮动路由实验
1)拓扑
2)需求:配置浮动路由,实现链路冗余(让192.168.2.0/24那条链路成为主链路)
3)配置步骤:
-
配置PC的IP地址,掩码,网关
-
交换机配置VLAN,接口加入指定的VLAN
(1)SW1交换机创建VLAN 10
(2)SW1交换机的所有接口都设置为Access模式,并加入指定的VLAN 10
(3)SW2交换机创建VLAN 40
(4)SW2交换机的所有接口都设置为Access模式,并加入指定的VLAN 40
-
路由器配置接口IP地址
-
路由器配置浮动路由
(1)配置一条静态路由为主链路,静态路由默认优先级为60
(2)配置一条静态路由为备份链路,指定路由优先级为70
- 验证与测试
(1)验证是否主链路转发数据
(2)验证是否主链路那条路由进入路由表
(3)让主链路出现故障,验证备份链路是否起作用
4)配置命令
第一步:配置PC的IP地址,掩码,网关
第二步:交换机配置VLAN,接口加入指定的VLAN
# SW1配置: [SW1]vlan 10 [SW1-vlan10]quit [SW1]port-group group-memb [SW1]port-group group-member g0/0/1 to g0/0/3 [SW1-port-group]port link-type access [SW1-port-group]port default vlan 10 # SW2配置: [SW2]vlan 40 [SW2-vlan40]quit [SW2]port-group group-member g0/0/1 g0/0/2 [SW2-port-group]port link-type access [SW2-port-group]port default vlan 40
第三步:路由器配置接口IP地址
R1配置: [R1]int g0/0/0 [R1-GigabitEthernet0/0/0]ip address 192.168.1.254 24 [R1-GigabitEthernet0/0/0]int g0/0/1 [R1-GigabitEthernet0/0/1]ip address 192.168.2.1 24 [R1-GigabitEthernet0/0/1]int g0/0/2 [R1-GigabitEthernet0/0/2]ip address 192.168.3.1 24 R2配置: [R2]int g0/0/0 [R2-GigabitEthernet0/0/0]ip address 192.168.4.254 24 [R2-GigabitEthernet0/0/0]int g0/0/1 [R2-GigabitEthernet0/0/1]ip address 192.168.2.2 24 [R2-GigabitEthernet0/0/1]int g0/0/2 [R2-GigabitEthernet0/0/2]ip address 192.168.3.2 24
第四步:路由器配置浮动路由
1)配置一条静态路由为主链路,静态路由默认优先级为60
2)配置一条静态路由为备份链路,指定路由优先级为70
R1配置: //配置静态路由并指定优先级 [R1]ip route-static 192.168.4.0 24 192.168.2.2 //配置静态路由 [R1]ip route-static 192.168.4.0 24 192.168.3.2 preference 70 R2配置: //配置静态路由并指定优先级 [R2]ip route-static 192.168.1.0 24 192.168.2.1 //配置静态路由 [R2]ip route-static 192.168.1.0 24 192.168.3.1 preference 70
第五步:验证与测试
1)验证是否主链路转发数据
2)验证是否主链路那条路由进入路由表
3)让主链路出现故障,验证备份链路是否起作用
使用路由追踪或数据抓包验证 PC1>tracert 192.168.4.3
[R1]display ip routing-table //查看进入路由表的最优路由 [R1]display ip routing-table 192.168.4.3 [R1]display ip routing-table protocol static //查看静态路由 Static routing table status : <Active>-活跃 Destination/Mask Proto Pre Cost NextHop Interface 192.168.4.0/24 Static 60 0 192.168.2.2 G0/0/1 Static routing table status : <Inactive>-不活跃的-停用的 Destination/Mask Proto Pre Cost NextHop Interface 192.168.4.0/24 Static 70 0 192.168.3.2 G0/0/2
备注:shutdown 掉R1的g0/0/1 让主链路故障,验证备份链路是否会进入路由表,承担数据转发任务
四、OSPF协议
1、OSPF概述
1、基本概念:开放式最短路径优先(Open Shortest Path First, OSPF)是广泛使用的一种动态路由协议,它属于链路状态路由协议,目前版本有:OSPFv2(IPv4) 和OSPFv3(IPv6)
-
OSPF位于OSI参考模型的第三层,数据封装在IP报头的后面
-
OSPF的协议号是89
2、适用场景:适用于中、大型网络规模,常见的场景有:政企网(层次化的网络架构中)、数据中心内部(用于实现把不同的网段打通)
3、协议优势:便于大型网络中对路由的管理和维护
2、OSPF的工作过程
OSPF的工作流程大致分为三步:
-
建立邻居: 邻居表
-
同步数据库: 链路状态数据库
-
计算路由: ospf协议路由表
3、OSPF的5种报文类型、7种状态机
OSPF五种报文类型
| 报文类型 | 英文全称 | 功能描述 |
|---|---|---|
| Hello | Hello Packet | 用于发现邻居、建立和维护邻居关系,周期性发送以维持连接 |
| DBD | Database Description | 数据库描述报文,交换LSA头部信息,用于数据库同步 |
| LSR | Link State Request | 链路状态请求,请求本地缺失的LSA详细信息 |
| LSU | Link State Update | 链路状态更新,携带完整的LSA信息进行数据库更新 |
| LSack | Link State Acknowledgment | 链路状态确认,确保LSA可靠传输的确认机制 |
OSPF七种邻居状态机
| 状态机 | 状态描述 | 关键行为 |
|---|---|---|
| Down | 初始状态 | 未收到任何Hello报文,尝试发送Hello报文建立连接 |
| Init | 单向通信 | 收到邻居Hello报文,但报文中未包含本机Router ID |
| Two-way | 双向通信 | 双方Hello报文中均包含对方Router ID,建立邻居关系 |
| Exstart | 主从协商 | 交换第一个DBD报文,确定主从关系,协商序列号 |
| Exchange | 数据库摘要交换 | 相互发送DBD报文,描述各自的链路状态数据库摘要 |
| Loading | 链路状态请求 | 基于DBD比较结果,通过LSR/LSU获取缺失的LSA |
| 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报文传输的可靠性和完整性。
-
R1开始向R2发送LSR报文,请求那些在Exchange状态下通过DD报文发现的、并且在本地LSDB中没有的链路状态信息。
-
R2向R1发送LSU报文,LSU报文中包含了那些被请求的链路状态的详细信息。R1在完成LSU报文的接收之后,且没有其他待请求的LSA后,会将邻居状态从Loading变为Full。
-
R1向R2发送LSAck报文,作为对LSU报文的确认
4、OSPF区域
1、区域划分: OSPF适用于大型网络,采用分层设计,分为骨干区域和非骨干区域。
-
OSPF 骨干区域:区域号为0,表示的就是“骨干区域”
-
OSPF 非骨干区域:区域号不为0,表示的就是“非骨干区域”
2、非骨干区域必须和骨干区域“直接”相连,能实现“区域之间的互通”
3、OSPF 区域的表示
-
通过十进制表示,例如区域 0、1、2、3等
-
通过点分十进制表示,例如区域 0.0.0.0 、0.0.0.1、0.0.0.2等
4、OSPF支持网络的层次化设计,并引入了区域的概念,OSPF引入区域的作用是:
-
分层管理网络:降低网络复杂性、提高网络的稳定性
-
优化路由计算:缩减数据库和路由表规模,减少路由计算量,降低设备压力,加快路由收敛速度
-
提高网络安全性:防止路由环路、根据需求限制路由传播
5、OSPF路由角色
- 骨干路由器:路由器只要有一个接口在骨干区域
- 区域内路由器:路由器的所有接口都在同一个区域
- ABR(区域边界路由器) 同时连接着骨干区域和非骨干区域的路由器
- ASBR(自治系统边界路由器)具有产生外部路由能力的路由器
6、OSPF邻居表解析
<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/0 2.2.2.2 Full ----------------------------------------------------------------------------
1、Process : 进程号
ospf 1 :指定ospf进程号1
1)作用:在同一个设备上,区分不同的ospf路由协议
2)通过不同的进程号所学习到的路由信息是不会自动相互传递的,从而实现各个ospf 协议之间的隔离
3)ospf 进程号只在本地路由器起作用,不同的路由器的进程号,可以相同,也可以不同
4)进程号范围 <1-65535>
2、Router ID :路由标识符
router-id 1.1.1.1 //指定router-id 为1.1.1.1
1)ospf协议给路由器分配了一个标识符,格式为点分十进制(注意这与IP地址并无关系)
2)在ospf 网络中,router-id 唯一标识一台路由器
3)router-id 的生产方式可以是手动指定(优先级最高)或自动选举,建议使用手动指定
4)router-id 自动选举规则:
-
首先选举本设备上的loopback接口的IP地址,选择IP地址最大的
-
如果没有配置loopback 接口选举物理接口IP地址最大的
-
如果某一个接口先启用ospf,那么该接口的IP地址,就被选举为router-id
5)router-id 手动指定
手动指定命令 [huawei] ospf 1 router-id 1.1.1.1
重启ospf 进程(用户视图):<huawei> reset ospf process
备注:路由器的router-id 具有不可抢占性,如果要更换,需要重启ospf进程
3、Area Id :区域号
1)ospf 对网络进行了分层的设计,引入区域的概念
2)引入区域的作用: 降低设备压力, 提高设备转发性能,提高网络的安全性
3)区域号的表示方式有两种
-
十进制数: 0-4294967295
-
点分十进制: 0.0.0.0 - 255.255.255.255
4)区域分为两类:
-
骨干区域: 区域号为 0
-
非骨干区域 : 区域号不为 0
__4、Interface :__使用哪个接口与对端建立的邻居
__5、Neighbor id :__邻居的router-id
__6、State :__邻居之间的状态
上述 State 为 full,即表示完全邻接状态: 既建立好邻居了, 又同步完数据库了
7、OSPF报文字段解析
OSPF头部报文字段解析
| 字段名称 | 英文名称 | 长度 | 功能描述 | 技术要点 |
|---|---|---|---|---|
| OSPF版本 | OSPF Version | 1字节 | 标识OSPF协议版本 | v2: IPv4网络 v3: IPv6网络 v3不兼容v2 |
| 报文类型 | Message Type | 1字节 | 标识OSPF报文类型 | 1: Hello 2: DBD(DD) 3: LSR 4: LSU 5: LSack |
| 报文长度 | Packet Length | 2字节 | 整个OSPF报文的字节长度 | 包括头部和数据部分 用于报文完整性检查 |
| 路由器ID | Source OSPF Router | 4字节 | 发送报文的路由器唯一标识 | 格式类似IP地址 全网必须唯一 用于路由计算和邻居识别 |
| 区域ID | Area ID | 4字节 | 发送接口所属区域号 | 邻居必须在同一区域 Area 0为骨干区域 支持层次化路由 |
| 校验和 | Packet Checksum | 2字节 | 报文完整性校验 | 检测传输错误 错误报文会被丢弃 |
| 认证类型 | Auth Type | 2字节 | 认证机制类型 | 0: 不认证 1: 简单密码 2: MD5加密 |
| 认证数据 | Auth Data | 8字节 | 认证相关信息 | 密码或加密密钥 确保邻居合法性 |
Hello 报文字段解析
| 字段名称 | 英文名称 | 长度 | 功能描述 | 技术要点 |
|---|---|---|---|---|
| 网络掩码 | Network Mask | 4字节 | 接口子网掩码 | 邻居接口掩码必须相同 确保在同一网段 |
| Hello间隔 | Hello Interval | 2字节 | Hello报文发送间隔 | 默认10秒 邻居间隔必须一致 影响收敛速度 |
| 选项字段 | Options | 1字节 | 特殊功能标志位 | E: 外部路由能力 MC: 组播能力 N/P: NSSA相关 |
| 路由器优先级 | Router Priority | 1字节 | DR/BDR选举优先级 | 范围0-255 0表示不参与选举 影响DR/BDR选举结果 |
| 失效间隔 | Router Dead Interval | 4字节 | 邻居失效超时时间 | 默认40秒(4×Hello) 可手动配置 超时则删除邻居 |
| 指定路由器 | Designated Router | 4字节 | DR的Router ID | 广播/NBMA网络需要 减少LSA泛洪 提高网络效率 |
| 备份指定路由器 | Backup Designated Router | 4字节 | BDR的Router ID | DR的备份 DR故障时接替 保证网络稳定性 |
| 活跃邻居 | Active Neighbor | 可变 | 已知邻居列表 | 已建立双向通信的邻居 Router ID列表 用于邻居状态维护 |
五、OSPF网络类型
OSPF运行在不同的链路层就会有不同的问题,比如运行在以太网,默认为广播的网络环境下,就会存在共享网段中邻居数量多的问题,占用设备资源的问题,所以有了多种网络类型来适应不同的网络环境。
-
广播类型(Broadcast):数据链路层协议为以太网时,OSPF默认的网络类型为广播
-
非广播类型(NBMA):当链路层协议是fr(帧中继)时,OSPF运行在这个网络环境中,默认使用NBMA的网络类型 (国内都已经不用了,不常见)
-
点到点(P2P):数据链路层运行的协议为PPP或者HDLC时,默认的网络类型为P2P
-
点到多点(P2MP):由管理员手工修改
1、OSPF单区域实验案例
1)拓扑
2)需求:按照如上IP地址规划,使用OSPF实现全网互通
3)配置思路
-
配置PC接口IP地址
-
配置路由器的接口IP地址
-
配置OSPF
-
创建ospf进程,定义router-id
-
指定相应区域
-
宣告网段进入ospf
- 验证结果
4)配置步骤
第一步:配置PC接口IP地址 第二步:配置路由器接口IP地址 第三步:配置OSPF
# R1:配置 ospf 1 router-id 1.1.1.1 //指定ospf进程号, 指定router-id area 0.0.0.0 //指定区域id network 192.168.1.0 0.0.0.255 //宣告直连网段 network 192.168.12.0 0.0.0.255 //宣告直连网段 # R2:配置 ospf 1 router-id 2.2.2.2 area 0.0.0.0 network 192.168.23.0 0.0.0.255 network 192.168.12.0 0.0.0.255 # R3:配置 ospf 1 router-id 3.3.3.3 area 0.0.0.0 network 192.168.23.0 0.0.0.255 network 192.168.2.0 0.0.0.255
第四步:验证结果
查看邻居表简要信息:display ospf peer brief
查看路由表:display ip routing-table
PC1 ping PC2 验证结果
<R1>display ip routing-table protocol ospf Route Flags: R - relay, D - download to fib ------------------------------------------------------------------------------ Public routing table : OSPF Destinations : 2 Routes : 2 OSPF routing table status : <Active> Destinations : 2 Routes : 2 Destination/Mask Proto Pre Cost NextHop Interface 192.168.2.0/24 OSPF 10 3 192.168.12.2 G0/0/0 192.168.23.0/24 OSPF 10 2 192.168.12.2 G0/0/0
Q & A
1)问: PC1 可以ping通PC2 为什么?
答: 因为有ospf路由
2)问: 为什么有ospf路由?
答: 因为运行ospf的路由器会计算ospf路由
3)问:为什么运行ospf的路由器会计算出来OSPF路由?
答:因为路由器有计算路由的原材料
4)问:什么是计算路由的原材料
答:拓扑信息 + 网段信息
5)问:什么是拓扑信息?什么是网段信息?
答:拓扑信息:我是哪台路由器,我连着哪个邻居,我用哪个接口连着哪个邻居
网段信息:接口IP地址网段,接口IP地址的掩码
6)问:拓扑信息和网段信息,你是怎么得到的?
答:我从邻居那里学来的
7)问:你是通过什么方法学习的呢?
答:我和邻居同步数据库
8)问:那个数据库,什么样的数据库
答:LSDB : 链路状态数据库
9)问:这个数据库是干啥的?
答:这个数据库是专门用来存储LSA的
10)问:LSA是啥:
答:LSA:链路状态通告 ,说人话:就是拓扑信息+网段信息
11)问:你是怎么同步的数据库
答:我把我的数据库中的LSA发给邻居,邻居把他的数据库中的LSA发给我
举例: 我的数据中原来有名字叫1.1.1.1的LSA ,我把1.1.1.1 发给邻居
邻居的数据库中有一个名字2.2.2.2的LSA,邻居把2.2.2.2发给我
我的数据库中有2个,分别是1.1.1.1 和2.2.2.2
邻居的数据库中有2个,分别是2.2.2.2 和1.1.1.1
确认,我们两个的数据库内容是否一致,如果一致,就称为 同步数据库成功
12) 问:为什么两台路由能够同步数据库
答:因为这两台路由器是邻居
13) 问:为什么这两台路由器是邻居呢?
答:因为这两台路由是直接相连的,并且这两台路由器运行了ospf
结论
-
网络通: 是因为有ospf路由
-
有路由: 是因为同步数据库了
-
能同步: 是因为建立邻居了
-
有邻居: 是因为做ospf了
再回顾OSPF工作步骤:
1) 建立邻居: 邻居表
2) 同步数据: 数据库
3) 计算路由: 路由表; 是OSPF协议路由表
2、OSPF多区域实验案例
1)拓扑
2)需求:按照如上IP地址规划,使用OSPF实现全网互通
3)配置思路
-
配置PC接口IP地址
-
配置路由器的接口IP地址
-
配置OSPF
-
创建ospf 进程 和 router-id
-
配置ospf 区域id
-
宣告直连网段进ospf
- 验证结果
4)配置步骤
第一步:配置PC接口IP地址 第二步:配置路由器接口IP地址 第三步:配置OSPF
# R1配置: ospf 1 router-id 1.1.1.1 area 0.0.0.12 network 192.168.1.0 0.0.0.255 network 192.168.12.0 0.0.0.255 # R2配置: ospf 1 router-id 2.2.2.2 area 0.0.0.0 network 192.168.23.0 0.0.0.255 area 0.0.0.12 network 192.168.12.0 0.0.0.255 # R3配置: ospf 1 router-id 3.3.3.3 area 0.0.0.0 network 192.168.23.0 0.0.0.255 network 192.168.34.0 0.0.0.255 # R4配置: ospf 1 router-id 4.4.4.4 area 0.0.0.0 network 192.168.34.0 0.0.0.255 network 192.168.45.0 0.0.0.255 # R5配置: ospf 1 router-id 5.5.5.5 area 0.0.0.0 network 192.168.45.0 0.0.0.255 area 0.0.0.56 network 192.168.56.0 0.0.0.255 # R6配置: ospf 1 router-id 6.6.6.6 area 0.0.0.56 network 192.168.2.0 0.0.0.255 network 192.168.56.0 0.0.0.255
第四步:验证结果
查看邻居表简要信息:display ospf peer brief
查看ospf路由表:display ip routing-table protocol ospf
PC1 ping PC2 验证结果
3、DR与BDR
在OSPF协议中,每个路由器都会维护一个链路状态数据库(LSDB)。该数据库中包含多种链路状态通告(LSA),这些LSA既有由本设备生成的,也有从OSPF邻居那里学习来的。每台OSPF路由器,正是基于自己LSDB中所有LSA所描述的完整网络拓扑,独立运行SPF(最短路径优先)算法,从而计算出最终的路由表条目。路由器之间通过建立邻居关系,并相互交换和同步LSA信息的过程,就称为__数据库同步__。
在OSPF邻居进行数据库同步时,根据网络类型的不同,主要可以分为两种情况:
- 点对点网络(如只有两台设备):在这种情况下,两台路由器直接建立邻接关系并进行数据库同步,过程高效且直接。
- 广播多接入网络(如以太网,存在多台设备):在这种网络环境中,如果所有路由器两两之间都建立__完全的邻接关系__并进行数据库同步,会导致同步过程异常复杂和低效。理论上,
n台路由器需要建立n(n-1)/2个邻接关系,这会造成大量的重复LSA泛洪,极大地浪费网络资源和设备CPU资源。
为解决广播网络中邻接关系过多的问题,OSPF引入了DR/BDR机制,作用是:
- 避免网状邻接关系导致的协议报文冗余(包括DD、LSR、LSU、LSACK)
- 减少网络资源占用和设备负载
- 显著提升数据库同步效率
DR和BDR的定义:DR作为指定路由器,负责广播网络中的LSA泛洪和数据库同步管理;BDR作为热备份,在DR故障时立即接管;DR-Other则仅与DR/BDR保持完全邻接关系。
类比:DR相当于班长,负责统一管理;BDR相当于副班长,作为备份;其他设备(DR-Other)如同普通同学,只需与班长和副班长通信。
注意:DR/BDR是接口级别的角色属性,非路由器级别。
DR选举机制
选举遵循严格优先级顺序:
- 首要比较接口优先级,数值越大越优先(默认值为1)
- 当优先级相同时,比较Router ID,数值越大越优先
- 在极端情况下,启动时间可能影响初始选举结果
DR特性
- 非抢占性:选举完成后不因新加入高优先级设备而重新选举
- 角色唯一:每个广播域必须有且仅有一个DR,BDR推荐配置但不强制
- 优先级零规则:优先级为0的接口不参与选举,自动成为DR-Other
- 状态机依赖:缺少DR时,邻居关系将停滞在Two-way状态,无法建立完全邻接
修改接口的DR优先级
修改接口的优先级为100 [R2-G0/0/0]ospf dr-priority 100
[R1]dis ospf int g0/0/0 OSPF Process 1 with Router ID 1.1.1.1 Interfaces Interface: 192.168.10.1 (GigabitEthernet0/0/0) 接口状态:DR 类型 :广播 Cost: 1 State: DR Type: Broadcast MTU: 1500 Priority: 1 //DR的优先级,默认为1 Designated Router: 192.168.10.1 //DR是10.1(本端接口) Backup Designated Router: 192.168.10.2 //BDR是10.2(对端接口) Timers: Hello 10 , Dead 40 , Poll 120 , Retransmit 5 , Transmit Delay 1 # 修改接口的优先级为100 [R2-G0/0/0]ospf dr-priority 100 # 重启OSPF进程使配置生效 <R1>reset ospf process # 如果再次修改接口的优先级为0,接口的状态立即转为DR-other [R2-G0/0/0]ospf dr-priority 0
备注:修改接口的优先级后(优先级调大后),需要重启邻居ospf进程,重启邻居的ospf 你的接口DR优先级只要不是0 ,你就是DR