路由器组成易失性随机存取存储器 RAM(Random Access Memory)非易失性随机存取存储器 NVRAM(Non-Volatile RAM)闪存 FLASH只读存储器 ROM接口 Interfaces路由器启动步骤系统启动步骤软件启动步骤路由器配置路由静态路由动态路由路由收敛路由协议Distance Vector Routing Protocol (距离矢量路由协议)问题Link State Routing Protocol (链路状态路由协议)定义工作原理链路状态路由协议的特点链路状态协议的优缺点常见的链路状态路由协议Hybrid Routing Protocol (混合路由协议)配置方式默认路由RIPRIP 的发展历史RIP v1 和 RIP v2 的主要差异RIP v2 的配置方式OSPF基本概念特点工作原理建立路由邻接关系选举DR和BDR发现路由选择恰当的路由维护路由信息五种数据包Hello PacketDatabase Description (DBD) PacketLink-State Request (LSR) PacketLink-State Update (LSU) PacketLink-State Acknowledgment (LSAck) PacketOSPF包通信总结应用场景单域 OSPF 单域 OSPF 的配置单域 OSPF 的优缺点
路由器组成

易失性随机存取存储器 RAM(Random Access Memory)
- 临时存储路由器配置文件
- 易失性, 关机/重启时数据丢失
- 存放:
- 路由表
- ARP缓存(主机的MAC地址)
- 快速交换缓存
- 数据包缓存
- 数据包队列
非易失性随机存取存储器 NVRAM(Non-Volatile RAM)
- 非易失RAM
- 存储备份文件 / 启动配置文件
- 关机/重启时数据不丢失
闪存 FLASH
- 闪存, E²PROM (Electronically Erasable Programmable Read-Only Memory)
- 存储Cisco IOS(Internet Operating System)
- 允许在不更换flash芯片的前提下更新软件
- 可以存储多个版本的IOS
- 关机时仍然保存
只读存储器 ROM
- 存储开机自检程序POST(Power On Self Test)
- 存储引导程序(bootstrap program)
- Bootstrap program是一段存储在只读存储器(ROM)或其他非易失性存储设备中的小型代码。
- 它的主要任务是初始化计算机硬件,并将操作系统的核心部分加载到内存中。
- 电源打开或重启时:
- 计算机会将控制权交给存储在非易失性存储器中的引导程序。
- 通常,这部分代码被硬编码在主板上的固件(如BIOS或UEFI)中。
- 硬件初始化:
- 引导程序会测试和初始化计算机硬件(如内存、CPU、存储设备)。
- 确保所有基本硬件可以正常运行。
- 加载操作系统:
- 引导程序会查找存储设备上的引导记录(如硬盘的主引导记录 MBR 或 EFI 分区)。
- 根据引导记录的内容,将操作系统内核加载到内存中。
- 交付控制权:
- 引导程序完成任务后,将控制权交给操作系统,从而完成启动过程。
- 第一阶段引导程序:最基本的引导代码,负责加载更复杂的第二阶段引导程序。
- 第二阶段引导程序:加载操作系统内核或提供启动菜单(例如GRUB)。
- 链式引导:在一个引导程序中调用另一个引导程序,以支持复杂的启动配置。
- BIOS(基本输入输出系统):传统PC系统中的基础引导机制。
- UEFI(统一可扩展固件接口):现代系统中的替代方案,提供更多功能和更快的启动速度。
- GRUB(GRand Unified Bootloader):一个常见的Linux系统引导管理器。
Bootstrap Program:Bootstrap program(引导程序或引导程序代码)是计算机系统启动过程中的核心部分,用于加载和初始化操作系统。它是计算机从关闭状态到运行状态的第一步,也是现代计算设备正常启动的必要过程。以下是其主要特点和作用:1. 基本定义
2. 工作原理
3. 类型
4. 常见引导程序实例
5. 名称来源“Bootstrap”一词源于“bootstrap paradox”(自举悖论)或“pull oneself up by one’s bootstraps”,意指系统需要从最初的小型程序逐步加载和启动更复杂的系统,就像自己拉起自己的靴带一样。
- 存储操作系统软件
- IOS的备份/快照
- 升级需要安装新的芯片组
接口 Interfaces
- 数据包进出路由器的网络连接处
- 具体表现为安装在主板上的独立的模块

路由器启动步骤
系统启动步骤
- 开机自检(POST): 执行在ROM中的开机自检诊断程序, 检查所有的硬件模块
- 验证CPU, 内存, 网络端口的基本配置
- 软件初始化

软件启动步骤
- 通用的引导加载程序(bootstrap loader)存储在ROM中,并在CPU卡上执行。
- 操作系统(Cisco IOS)可以存储在多个位置,其具体位置由配置寄存器(configuration register)的引导字段指定。
- 加载操作系统的镜像文件。
- 从NVRAM(非易失性随机存取存储器)中加载配置文件,将其加载到主内存中,并逐行执行。
- 如果NVRAM中没有有效的配置文件,则进入一个基于问题引导的初始配置程序(setup mode),这个过程也被称为系统配置对话框。

路由器配置



路由
路由器通过两个基本功能来将数据包从一个数据链路中继到另一个数据链路:
- 路径选择功能(Path Determination Function):帮助路由器选择最合适的接口来转发数据包。
- 路由器使用地址的 网络部分(Network Portion) 来决定路径,将数据包转发给下一个路由器。
- 地址的 节点部分(Node Portion) 被用来由直接连接到目标网络的路由器交付数据包给正确的主机。
路径选择过程:
- 交换功能(Switching Function):允许路由器在一个接口上接收数据包,并通过另一个接口将其转发。
静态路由
使用管理员输入路由器的协议路由
定义:
静态路由是网络管理员手动配置的一条固定路由路径。这些路由不会根据网络状况自动更新,始终按照管理员配置的路径转发数据。
特点:
- 固定性:路由表中的路径由管理员手动定义,保持不变,除非管理员手动更新。
- 简单性:适用于网络拓扑结构简单且变化较少的场景。
- 高效性:因为无需计算动态路由,减少了路由器的计算开销。
优点:
- 控制力强,适用于小型网络或关键连接。
- 不会产生路由协议的额外开销。
缺点:
- 难以适应网络变化,需要手动修改配置。
- 不适合大型动态变化的网络。
应用场景:
- 小型网络,结构稳定,拓扑简单。
- 特定路径需要明确控制时,例如公司总部到分支机构的专线连接。
配置方法:

管理距离Administrative Distance: 路由信息源的可信度评级,表示为0到255之间的数值。数值越高可信度越高, 故在静态路由中一般该值都很低, 默认为1(重视安全性)

动态路由

定义:
动态路由是由路由器自动生成的路由路径,根据网络变化实时更新。通过路由协议实现,动态路由可以自动适应网络拓扑的变化。自适应依靠维护自身的路由表以及和其他路由器共享信息
特点:
- 自适应性:网络变化时,动态路由可以自动更新。
- 复杂性:需要路由协议支持,例如 OSPF、RIP、EIGRP 等。
- 计算开销:路由器需要计算最佳路径并更新路由表。
优点:
- 高度自动化,减少人工配置。
- 能动态适应网络拓扑的变化。
- 适合复杂、大型、动态变化的网络。
缺点:
- 需要额外的资源来运行路由协议。
- 配置和管理复杂度较高。
应用场景:
- 大型企业网络、运营商网络等复杂网络环境。
- 网络拓扑频繁变化的场景。
路由收敛
路由收敛指网络的拓扑结构发生变化后,路由表重新建立到发送再到学习直至稳定,并通告网络中所有相关路由器都得知该变化的过程。也就是网络拓扑变化引起的通过重新计算路由而发现替代路由的行为。
触发条件: (拓扑改变)
- 路由器失效
- 连接失效
- 管理度量调整
- …
路由协议
路由协议的主要目标
- 最优路径 → 选择最佳路由
- 效率 → 使用最小的带宽和路由器处理器资源
- 快速收敛 → 越快越好
- 灵活性 → 能处理高负载和故障路由的情形

Distance Vector Routing Protocol (距离矢量路由协议)
工作原理:
- 核心思想:基于距离和方向选择路由。
- 每个路由器定期与相邻路由器共享路由表,通过 “路由通告”(Routing Advertisements)告知自己到目标网络的距离(通常以跳数表示)以及下一跳路由器。
- 路由器只知道与直接相邻路由器的连接状态,而不了解整个网络拓扑。各自从邻居的视角出发观察网络拓扑
- 使用贝尔曼-福德Bellman-Ford算法计算最短路径
特点:
- 更新是通过广播方式进行的。
- 频繁更新以检查是否需要更新
- 协议简单,适合小规模网络。
- 跳数限制:通常最大跳数为15(如RIP协议)。
- 优点:易于实现,计算负担轻。
- 缺点:收敛速度慢,容易发生路由环路问题。
例子:
- RIP(Routing Information Protocol)
- IGRP(Interior Gateway Routing Protocol)
问题
距离矢量路由协议在路由过程中可能会遇到以下两个主要问题:路由环路 和 计数到无穷问题(Count to Infinity)。
1. 路由环路(Routing Loops)


问题描述:
- 当网络中某一部分路径不可达(如图片中的 Network 1 Down),路由器会尝试通过相邻的路由器寻找可替代路径。
- 由于路由信息的传播是延迟的,不同路由器之间可能在短时间内保持对失效路径的错误认识,导致数据包在路由器之间不断循环(形成环路)。
- 本质是路由器之间更新时序不同步, 给错误信息留下了传递空间
表现:
- 数据包在路由器 A、B、C 或其他节点之间无限循环。
- 造成网络拥塞和性能下降。
- 导致路由更新的 收敛速度慢,网络恢复需要较长时间。
2. 计数到无穷(Count to Infinity)

问题描述:
- 在距离矢量协议中,路由器通过跳数(Hop Count)来计算到目标网络的距离。
- 当某目标网络不可达时(如图片中的 Network 1 Down),路由器会根据错误的更新增加跳数,直到达到协议设置的最大跳数(例如 RIP 的 16 跳,表示不可达)。
- 这种逐渐增加的过程被称为 计数到无穷。
表现:
- 路由器之间会不断更新对 Network 1 的跳数(如图片中的 4 跳、5 跳、6 跳等)。
- 导致路由表不稳定,直到路由器完全收敛。
- 增加了无效更新的流量,降低网络效率。
问题分析
路由环路的形成机制:
- Network 1 不可达时,路由器 E 将路径信息标记为失效。
- 但路由器 A 和其他路由器未及时得知路径失效,仍尝试通过路由器 E 找到 Network 1。
- 错误信息被反复传播,形成循环。
计数到无穷的形成机制:
- Network 1 不可达时,路由器开始逐渐增加跳数。
- 路由器 B 可能认为 C 是通向 Network 1 的下一个跳数节点,但 C 又从 B 学到了错误信息。
- 跳数持续增加,直到达到协议规定的“无穷”(如 RIP 的 16 跳)。
解决方案
- Split Horizon(水平分割):
- 路由器不通过学习到路径的接口将信息传回,避免路由环路。
- 例如:E 不会通过接口通告 A 自己到 Network 1 的路径。
- 通过定义消极接口可以阻止其发送路由更新信息:
Router(config-router)#Passive-interface f0/0
- 只有在使用DVP时有效, 因为LSP不直接从邻居的路由表中获取拓扑信息
- Poison Reverse(毒性逆转):
- 如果路径失效,路由器会将距离设置为无穷大,并通告邻居,快速通知路径失效。
- 例如:E 将到 Network 1 的距离更新为“16跳”,表示不可达。
- Hold-Down Timer(保持计时器):
- 设置等待时间,在路由信息未稳定时,路由器拒绝接收相同路径的更新,避免错误传播。
- Triggered Updates(触发更新):
- 当路径状态变化时立即通告,而不是等待周期性更新,加速收敛。
- Maximum Hop Count(最大跳数限制):
- 限制跳数(如 RIP 的最大 15 跳)来减少计数到无穷的问题。
- Route Poisoning(路由中毒)
- 当某条路径失效时,路由器会将该路径的度量值设置为最大值(如RIP的16跳,表示不可达),并向邻居广播。快速传播失效信息,防止路由器继续使用无效路径。
Link State Routing Protocol (链路状态路由协议)
定义
链路状态路由协议是一种路由协议,使用网络中所有节点的全局视图来计算路由路径。与距离矢量协议不同,它通过交换链路状态信息构建拓扑数据库,然后使用算法(如Dijkstra算法)计算到每个目标网络的最短路径。
链路状态: 两台路由器之间的链路状态,包括一台路由器的接口信息及其与相邻路由器的关系。
工作原理
链路状态路由协议通过以下步骤工作:
1. 邻居发现(Neighbor Discovery)
- 每个路由器通过Hello协议发现并建立与 直接相连 路由器的邻居关系。
- Hello消息用于确保邻居的可达性。
2. 生成链路状态通告(LSA, Link-State Advertisement)
- 每个路由器创建一个链路状态通告(LSA),描述其直接相连的链路信息,包括:
- 路由器的标识(Router ID)
- 直接相连的路由器
- 链路的状态和成本(如带宽、延迟)
3. 传播链路状态信息
- 路由器将生成的链路状态信息通过 泛洪(Flooding) 的方式发送给所有邻居。
信息汇集
- 每个路由器接收到 LSA 后,将其保存到链路状态数据库(LSDB)中,并继续传播到其他邻居。
- 注意:LSA 只在初始化和拓扑发生变化时发送,减少带宽占用。
4. 构建拓扑数据库
- 每个路由器将接收到的所有 LSA 信息汇总,构建整个网络的拓扑视图。
- 这一视图反映了网络的全局状态。
5. 运行最短路径算法
- 使用Dijkstra算法(SPF算法)计算从自己到其他网络的最短路径。
- 根据拓扑数据库生成路由表,选择最优路径。
代价(cost)基于带宽计算

6. 动态更新
- 当网络拓扑发生变化(如链路断开或新链路加入)时,相关路由器会生成新的 LSA,触发整个网络的重新计算。
链路状态路由协议的特点
特点 说明
全局视图 每个路由器拥有整个网络的拓扑视图,而不仅仅是邻居信息。
快速收敛 在网络拓扑发生变化时,LSA 的传播和最短路径算法的运行能快速调整路由表。
高效性 只有当网络状态发生变化时才会发送更新,减少了不必要的带宽占用。
精确性 通过网络拓扑的全局视图计算最短路径,能精确选择最佳路径。
链路状态协议的优缺点
优点
- 快速收敛:链路状态协议能快速检测和适应网络变化。
- 高精度路由选择:由于每个路由器都有网络的全局视图,路由选择更为精确。
- 无环路:在最短路径树生成过程中,路由表中的路径天然无环。
缺点

- 内存和计算需求高:需要维护整个网络的拓扑数据库并运行复杂的算法。
- 配置复杂:链路状态协议的实现和调试比距离矢量协议复杂。
- LSA传播的带宽消耗:在网络拓扑发生较大变化时,LSA 的泛洪可能引起较高的带宽占用。
必须确保所有路由器都接收到了所有的重要LSA包
具有不同LSA集合的路由器基于不同的拓扑数据计算路由
常见的链路状态路由协议
- OSPF(Open Shortest Path First)
- 主要用于内部网(IGP)。
- 组织网络为区域,减少计算复杂性。
- IS-IS(Intermediate System to Intermediate System)
- 类似于 OSPF,但多用于服务提供商网络。
工作过程:
- 路由器之间相互交换LSA, 每个路由器都从其直连网络开始
- 每个路由器与其他路由器并行构建一个拓扑数据库,该数据库由来自整个网络的所有LSA组成。
- 使用SPF算法计算网络的可达性。路由器将这种逻辑拓扑结构构建为一棵树,以自己为根,由LSP互连网络中每个网络的所有可能路径组成。然后对这些路径进行最短路径优先(SPF)排序。
- 路由器在路由表中列出它的最佳路径,以及到这些目的网络的端口。它还维护记录拓扑元素和详细状态信息的其他数据库(例如邻居数据库, 维护双向通信的所有邻居的列表)。
Hybrid Routing Protocol (混合路由协议)
工作原理:
- 结合了 Distance Vector 和 Link State 的优点。
- 路由器在部分情况下使用距离矢量方法,在其他情况下使用链路状态方法。
- 例如,使用距离矢量方法交换路由信息,但对网络的收敛和环路控制采用链路状态机制。
特点:
- 提供更高的效率和灵活性。
- 收敛速度较快,且避免路由环路。
- 优点:
- 平衡了计算复杂度和网络性能。
- 适用于大型和复杂网络。
- 缺点:
- 实现和管理复杂度较高。
例子:
- EIGRP(Enhanced Interior Gateway Routing Protocol,增强型内部网关路由协议)
总结比较
特性 | 距离矢量路由协议DVP | 链路状态路由协议LSP | 混合路由协议 |
更新方式 | 周期性广播 | 事件驱动 | 结合两者 |
网络拓扑视图 | 部分视图(相邻路由器信息) | 全局视图 | 部分或全局视图 |
计算复杂度 | 低 | 高 | 中等 |
收敛速度 | 慢 | 快 | 较快 |
适用场景 | 小型网络 | 中大型网络 | 大型/复杂网络 |
选择哪种协议取决于网络的规模、复杂性和管理需求。
配置方式

默认路由
可以帮助缩短路由表的长度, 在路由表中不存在目标表项时直接使用默认路由转发

- 动态路由下使用
配置:
Router(config)# ip default-network [network-number]
其中可选参数network-number为被定义为默认的网络的IP网络号或子网号
- 静态路由下使用
配置:
此时如果使用show ip route查询则会显示默认的下一跳地址

RIP
RIP(Routing Information Protocol,路由信息协议)是一种基于距离矢量的动态路由协议,属于内部网关协议(IGP)的范畴。它通过定期广播路由信息,让路由器自动学习和维护网络中的路由表,广泛应用于小型网络中。
RIP 的发展历史
- RIP v1(1988年发布,定义于 RFC 1058)
- 是最早的路由协议之一,基于 Bellman-Ford 算法。
- 基于跳数, 最多15跳
- 仅支持 IPv4。
- 使用广播(
255.255.255.255
)发送路由更新, 默认30秒一次。
- 不支持子网掩码信息(无类路由,Classful Routing),因此不能处理子网划分和超网(不支持 VLSM 或 CIDR)。
- 不支持验证
- RIP v1支持多达6条等价路径的负载分担,默认为4条
- RIP v2(1994年发布,定义于 RFC 2453)
- 对 v1 的改进版本,解决了无类路由的限制。
- 基于跳数, 16跳代表距离无穷大
- 使用抑制计时器来防止出现路由环路, 默认180秒
- 使用水平分割
- 支持子网掩码(VLSM/CIDR),适用于更复杂的网络。
- 使用多播地址(
224.0.0.9
)发送路由更新,减少对非参与设备的影响。 - 路由更新被多播到一个接口。
- 如果路由更新进入相同的接口,则处理它们。
- 通告与该接口直接相连的子网。
- 增加了认证功能,增强了安全性。
- RIPng(RIP next generation,定义于 RFC 2080)
- RIP 的扩展版本,支持 IPv6。
- 与 RIP v2 类似,但特化为 IPv6,使用多播地址 FF02::9 发送更新。
RIP v1 和 RIP v2 的主要差异
特性 | RIP v1 | RIP v2 |
协议定义 | RFC 1058 | RFC 2453 |
路由类型 | 无类路由(Classful Routing) | 有类路由(Classless Routing) |
子网掩码支持 | 不支持 | 支持 |
更新方式 | 广播(255.255.255.255) | 多播(224.0.0.9) |
认证功能 | 不支持 | 支持(明文或 MD5) |
使用场景 | 简单网络 | 复杂网络,支持灵活的子网配置 |
RIP v2 的配置方式
以下示例展示了如何在 Cisco 路由器上配置 RIP v2:
基本配置步骤
- 进入 RIP 配置模式
Router> enable
Router# configure terminal
Router(config)# router rip
- 启用 RIP v2
Router(config-router)# version 2
- 声明参与路由的网络
network命令用来分配一个基于网卡的网络地址,路由器将直接连接到该网络地址。
Router(config-router)# network 192.168.1.0
Router(config-router)# network 10.0.0.0
- 禁用自动汇总(可选,根据需求)
Router(config-router)# no auto-summary
- 启用认证功能(可选, 只有RIP v2支持)
- 配置明文认证:
Router(config-router)# interface gigabitethernet 0/0
Router(config-if)# ip rip authentication mode text
Router(config-if)# ip rip authentication key-chain my-keychain
- 配置 MD5 认证:
Router(config-if)# ip rip authentication mode md5
- 保存配置
Router# write memory

debug ip rip命令用来查看rip路由更新的发送和接收情况
注意事项
- RIP 的最大跳数为 15(16 被认为是不可达),因此适合小型网络。
- RIP 的更新间隔为 30 秒,但收敛速度较慢,不适用于大型或高性能网络。
- 在复杂网络中,可以选择更高级的协议(如 OSPF 或 EIGRP)。
OSPF
基本概念
OSPF(Open Shortest Path First,开放最短路径优先)是一种链路状态路由协议,用于在计算机网络中实现动态路由。它是一种内部网关协议(IGP),主要应用于同一自治系统(AS)内部的路由。
特点
1.基于链路状态的协议:
- OSPF使用链路状态路由算法(LSA,Link State Algorithm),通过构建整个网络的拓扑图,计算出每条路径的最短路径。
- 使用Dijkstra算法:
- OSPF使用Dijkstra的最短路径优先(SPF)算法来计算最佳路由, 建立SPF树, 以自身为根节点。将最佳路径放入路由表. 代价cost主要基于带宽计算
- 分层结构:
- OSPF支持将网络划分为两层/多个区域(Area),核心区域(通常为Area 0)负责与其他区域的连接(需要 与其他所有区域连接)。分层设计有助于减小路由表的规模,提升网络效率。
区域: 具有相同区域ID的网络/路由器的集合。
一个区域内的每台路由器具有相同的链路状态信息
指定路由器DR → OSPF多访问网络中的一台路由器,它被选出来代表该区域中的所有路由器
备份指定路由器BDR → DR的备份


- 无类路由协议:
- 支持可变长度子网掩码(VLSM),提高了IP地址的利用率。
- 快速收敛:
- OSPF在网络拓扑发生变化时能够快速更新路由表 → 扩展性好。
- 多播通信:
- 使用多播地址224.0.0.5(除DR/BDR之外的全体路由器使用)和224.0.0.6(DR/BDR使用)与其他OSPF路由器通信。
- 支持认证:
- OSPF支持简单密码和加密的认证机制,增强了安全性。
工作原理

建立路由邻接关系

选举DR和BDR
只有在多点接入时才选举DR / BDR
点对点接入时不需要选举
hello包首部已经被占用时不需要选举

loopback address: 环回网络接口, 用于访问本机运行的服务, 绕过任何物理网络接口硬件
更惯常的称呼:
localhost

发现路由

选择恰当的路由
在此步骤开始之前确保所有路由器都掌握整个网络的拓扑, 具有相同的拓扑数据库
并行计算最短路径然后加入路由表
重载路径起分担负载作用

维护路由信息
轮询是否有新邻居加入/旧邻居退出

五种数据包


OSPF(Open Shortest Path First)是一种链路状态路由协议,用于在路由器之间动态交换路由信息。OSPF使用5种基本的包(消息类型)进行通信,每种包都有特定的功能和用途。这些包都使用IP协议(协议号89)直接封装在IP数据报中,而不是使用TCP或UDP。
Hello Packet
邻居定期打招呼
- 功能: 建立和维护邻居关系。
- 用途: 用于发现邻居路由器,并确定其连通性。Hello包还携带OSPF区域信息、网络掩码、Hello间隔、死间隔(Dead Interval)、邻居列表等。
- 定义:Hello间隔是OSPF路由器发送Hello报文的时间间隔,单位为秒。
- 作用:Hello报文用于发现和维护邻居关系。相邻的OSPF路由器需要周期性地交换Hello报文,确认对方的可达性。
- 默认值:(不同厂商设备可能会有所不同。)
- 广播网络(如以太网):10秒
- 点对点网络:10秒
- 非广播多访问网络(NBMA):30秒
- 配置命令(以Cisco为例):
ip ospf hello-interval <秒数>
- 定义:死间隔是OSPF路由器等待Hello报文的最大时间。如果在死间隔内没有收到邻居的Hello报文,则认为该邻居不可达。
- 作用:确保快速检测到邻居故障,从而触发路由器重新计算路由。
- 默认值:
- 广播网络和点对点网络:40秒(即Hello间隔的4倍)
- 非广播多访问网络(NBMA):120秒
- 配置命令:
ip ospf dead-interval <秒数>
- 匹配性要求:OSPF的Hello间隔和死间隔必须在相邻路由器之间匹配。如果不匹配,将无法建立邻居关系。
- 默认的4:1关系:通常,死间隔是Hello间隔的4倍。这一比例设计可以在平衡故障检测时间和网络开销之间找到合理的折中。
- 路由器A和路由器B通过OSPF建立邻居关系。
- 每隔Hello间隔,路由器A向路由器B发送Hello报文,表明自己仍然可达。
- 如果路由器B在死间隔内未收到A的Hello报文,则认为A不可达,并从其邻居列表中移除,同时触发链路状态更新(LSU)。
hello间隔和死间隔在OSPF(开放式最短路径优先)协议中,Hello间隔和死间隔是用于邻居关系建立和维护的两个关键定时器:1. Hello间隔(Hello Interval)
2. 死间隔(Dead Interval)
Hello间隔和死间隔的关系
工作原理示例
- 发送场景: 定期发送到多播地址224.0.0.5(IPv4)或FF02::5(IPv6)。
- 关键字段:
- Router ID
- Hello Interval
- Dead Interval
- 网络掩码
- 邻居列表

Hello协议是OSPF的核心机制之一,用于在路由器之间建立和维护邻居关系(Neighbor Relationship)。Hello协议通过定期发送Hello包来发现、验证邻居路由器,并确保邻居的连通性。
Hello协议的主要功能
- 发现邻居路由器:
- 当OSPF启动时,路由器会发送Hello包到多播地址(IPv4:224.0.0.5,IPv6:FF02::5)。
- 相邻的路由器通过接收Hello包发现彼此。
- 验证邻居关系:
- 路由器通过比较Hello包中的OSPF区域号、Hello间隔、死间隔等参数,判断是否可以建立邻居关系。
- 匹配的路由器才能成为邻居。
- 维持邻居连通性:
- 路由器定期发送Hello包来表明自己处于活动状态。
- 如果在死间隔(Dead Interval)时间内未收到邻居的Hello包,则认为该邻居不可用。
- 选举DR/BDR(在广播或多播网络中):
- Hello包中包含路由器优先级等信息,用于选举指定路由器(DR)和备份指定路由器(BDR)。
Hello包的关键字段


- 网络掩码(Network Mask):
- 指定发送接口的子网掩码。
- Hello间隔(Hello Interval):
- 指定发送Hello包的时间间隔(默认10秒,取决于网络类型)。
- 死间隔(Dead Interval):
- 指定在未收到邻居Hello包后,认为邻居失效的时间(通常是Hello间隔的4倍)。
- 优先级(Router Priority):
- 用于选举DR/BDR。数值越大优先级越高,0表示不参与选举。

- 邻居列表(Neighbor List):
- 列出当前已知的邻居Router ID。
- 区域ID(Area ID):
- 确保两台路由器在同一区域中。
- 认证信息(Authentication):
- 如果OSPF启用了认证,Hello包会携带认证字段。
- 标志字段(Options):
- 表示OSPF的特性支持情况(如是否支持多播、IPv6等)。
Hello协议的工作过程
- 发送Hello包:路由器启动OSPF后,通过其接口向网络发送Hello包。
- 接收并验证:路由器收到邻居的Hello包后,检查其中的参数是否匹配(如区域ID、Hello间隔等)。
- 建立邻居关系:如果参数匹配,路由器会在自己的邻居列表中添加该邻居,并回复Hello包。
- 保持连通性:路由器定期发送Hello包,确保邻居关系维持。
- 终止邻居关系:如果在死间隔时间内未收到Hello包,则终止与该邻居的关系。
Hello协议的多播地址
- IPv4: 224.0.0.5(All OSPF Routers)
- IPv6: FF02::5(All OSPF Routers)
这些多播地址允许Hello包在OSPF网络中高效传播,而不需要单播发送到每个邻居。
总结
Hello协议是OSPF的基础,通过周期性发送Hello包,路由器可以动态发现邻居、验证一致性、选举DR/BDR,并维持稳定的邻居关系。这种机制确保了OSPF网络的连通性和动态适应能力。
Database Description (DBD) Packet
- 功能: 描述LSDB(Link State Database)的概要信息。
- 用途: 用于在邻居路由器之间同步路由数据库(LSDB)。DBD包仅发送LSA(Link-State Advertisement)的摘要,而不包含具体的路由条目。
- 发送场景: 邻居状态达到ExStart时开始交换。
- 关键字段:
- LSA的类型
- LSA的链路状态ID
- 序列号
- 校验和
Link-State Request (LSR) Packet
- 功能: 请求特定的LSA。
- 用途: 当一个路由器发现它需要某些LSA的完整信息时,会发送LSR包向邻居请求这些信息。
- 发送场景: 数据库同步阶段。
- 关键字段:
- 请求的LSA类型
- 链路状态ID
- 广告者的Router ID
Link-State Update (LSU) Packet
- 功能: 携带一个或多个完整的LSA。
- 用途: 用于发送路由更新信息。当邻居请求特定的LSA时,或在网络拓扑发生变化时,发送LSU包。
- 发送场景:
- 响应LSR请求。
- 主动传播拓扑变化。
- 关键字段:
- 包含一个或多个LSA。
- 每个LSA都有类型、链路状态ID、序列号等详细信息。
Link-State Acknowledgment (LSAck) Packet
- 功能: 确认接收到的LSA。
- 用途: 确保LSU包中的LSA被成功接收。OSPF需要可靠传输,而LSAck用于确认。
- 发送场景: 每当收到一个新的LSA,或者需要确认LSA时发送。
- 关键字段:
- 确认的LSA的摘要信息(类型、链路状态ID、序列号)。
OSPF包通信总结
- Hello: 用于邻居发现和维持邻居关系。
- DBD: 用于同步LSDB的摘要信息。
- LSR: 请求具体的LSA信息。
- LSU: 发送详细的LSA信息。
- LSAck: 确认接收到的LSA。
通过这5种包,OSPF实现了从邻居发现、数据库同步到路由信息更新的完整过程。
应用场景
- 中型到大型网络的动态路由。
- 需要高效路由的企业或服务提供商网络。
- IP地址资源需要精细管理的网络(支持VLSM和CIDR)。
单域 OSPF
单域 OSPF(Single-Area OSPF) 是 OSPF 的一种简单部署模式,所有路由器都属于同一个区域(通常是区域 0,即骨干区域)。
在单域 OSPF 中:
- 所有路由器共享完整的网络拓扑信息。
- SPF 计算相对简单,因为没有跨区域通信。
- 适用于小型或中型网络。
单域 OSPF 的配置




以下示例展示了如何在 Cisco 路由器上配置单域 OSPF:
基本配置步骤
- 启用 OSPF 进程
Router> enable
Router# configure terminal
Router(config)# router ospf 1
- 1 是 OSPF 进程的编号,可以在一台路由器上运行多个 OSPF 进程,但通常使用一个。
- 声明参与 OSPF 的网络
Router(config-router)# network 192.168.1.0 0.0.0.255 area 0
Router(config-router)# network 10.0.0.0 0.0.0.255 area 0
- 网络地址:指定加入 OSPF 的网络。
- 通配符掩码(Wildcard Mask):掩码与子网掩码相反,例如 /24 的通配符掩码为 0.0.0.255。
- 区域号(Area):所有网络都属于区域 0。
- 配置接口的 OSPF 参与(可选方式)
如果不希望使用 network 命令,可以直接在接口配置 OSPF:
Router(config)# interface gigabitEthernet 0/0
Router(config-if)# ip ospf 1 area 0
- 启用认证(可选)
- 明文认证:
Router(config)# interface gigabitethernet 0/0
Router(config-if)# ip ospf authentication
Router(config-if)# ip ospf authentication-key my-password
- MD5 认证:
Router(config-if)# ip ospf authentication message-digest
Router(config-if)# ip ospf message-digest-key 1 md5 my-md5-password
- 优化 OSPF 的计时参数(可选)
默认情况下,OSPF 的 Hello 时间为 10 秒,Dead 时间为 40 秒。可以根据需要调整:
Router(config-if)# ip ospf hello-interval 5
Router(config-if)# ip ospf dead-interval 20
- 保存配置
Router# write memory
单域 OSPF 的优缺点
优点
- 配置简单,管理方便。
- 所有路由器共享完整的拓扑信息,无需额外设计。
缺点
- 不适合大型网络,网络规模增大会增加 SPF 计算和 LSDB(链路状态数据库)的复杂度。
- 单点故障风险更高,整个网络依赖于区域 0。
如果网络规模扩大,可以采用多域 OSPF(Multi-Area OSPF)架构。