计算机网络笔记(二十四)——4.6互联网的路由选择协议
4.6.1有关路由选择协议的几个基本概念
路由选择协议是计算机网络中维护和生成路由表的核心机制。
1. 路由选择的核心目标
- 转发(Forwarding):路由器基于本地转发表,将分组从输入链路转移到输出链路(单台路由器的本地操作)。
- 路由选择(Routing):网络范围内的路径计算,确定源到目的地的端到端路径(全局过程)。
- 比喻:转发类似于立交桥的单个路口决策,路由选择是规划整条旅行路线。
2. 自治系统(Autonomous System, AS)
- 定义:由同一管理机构管理的网络集合(如一个ISP或企业网络)。
- 特点:
- 内部使用统一的策略和路由协议(如OSPF、RIP)。
- 对外通过网关路由器与其他AS通信。
- 示例:Google的全球网络、中国电信的骨干网。
3. 内部网关协议(IGP)
- 作用:在AS内部路由,生成最短路径。
- 协议举例:
- RIP(路由信息协议):基于跳数,最大15跳,定期广播路由表。
- OSPF(开放最短路径优先):基于链路状态,计算全网拓扑,支持分层路由。
- IGP vs 静态路由:IGP动态适应网络变化,静态路由需手动配置。
4. 外部网关协议(EGP)
- 作用:在AS之间交换路由信息,关注策略而非最短路径。
- BGP(边界网关协议):
- 路径向量协议:记录完整AS路径(如
AS1 → AS3 → AS2
)。 - 关键属性:
- 本地偏好(Local Preference):管理员自定义优先级。
- AS-PATH长度:路径越短越优。
- 热土豆路由(Hot Potato):选择到网关费用最小的出口。
- 路径向量协议:记录完整AS路径(如
5. 路由选择算法类型
类型 | 原理 | 协议示例 |
---|---|---|
距离向量 | 邻居交换跳数,逐跳更新(易环路) | RIP |
链路状态 | 洪泛链路信息,全网计算最短路径 | OSPF |
路径向量 | 记录完整AS路径,策略优先 | BGP |
6. BGP的路由决策流程
BGP通过以下步骤选择最佳路径:
- 最高本地偏好(管理员策略优先)。
- 最短AS-PATH(减少跨AS跳数)。
- 最近NEXT-HOP(选出口费用最低的网关)。
- 热土豆路由(尽快将流量送出本AS)。
7. 关键问题与解决方案
- 环路避免:BGP通过AS-PATH检测环路(若路径包含自身AS则拒绝)。
- 策略控制:企业AS可能拒绝中转流量(只收发自身流量)。
- 收敛时间:BGP更新缓慢(分钟级),确保稳定性。
总结
- IGP:关注AS内部效率,计算最短路径(如OSPF)。
- BGP:跨AS策略控制,权衡路径属性和管理需求。
- 路由表生成:IGP填充AS内部路由,BGP填充外部路由。
通过上述机制,互联网实现了分层次、可扩展的路由管理。
4.6.2内部网关协议RIP
一、RIP 基本概念
RIP(Routing Information Protocol,路由信息协议) 是一种基于 距离向量算法(Distance-Vector Algorithm) 的 内部网关协议(IGP)
,运行在自治系统(AS)内部。
主要特点:
- 最大跳数为 15(跳数 >15 时网络不可达);
- 采用 UDP 520端口 传输路由信息;
- 周期性广播完整路由表(默认 30秒);
- 简单易部署,适用于小型网络。
二、RIP 工作原理
1. 算法核心:距离向量
- 距离: 使用 跳数(Hops) 作为度量标准;
- 更新规则: 若通过相邻路由器到达目标网络的跳数更低,则更新路由表。
2. 路由更新过程
- 周期广播:每 30 秒向邻居广播完整路由表;
- 触发更新:当网络拓扑变化时立即发送更新。
三、RIP 报文格式
RIP 使用 UDP 报文(端口 520),格式如下:
字段长度(字节) | 说明 |
---|---|
Command(1) | 1:请求;2:响应 |
Version(1) | RIP 版本(v1/v2) |
Zero(2) | 保留字段 |
AFI(2) | 地址族标识(IPv4=2) |
Route Tag(2) | 路由标记(区分内部/外部路由) |
IP Address(4) | 目标网络地址 |
Subnet Mask(4) | 子网掩码(RIPv2 特有) |
Next Hop(4) | 下一跳地址(RIPv2 特有) |
Metric(4) | 跳数(1-15) |
四、RIP 环路避免机制
1. 水平分割(Split Horizon)
- 规则: 不从某个接口学习到的路由再通过该接口回传;
- 作用: 避免相邻路由器间的环路。
2. 毒性逆转(Poison Reverse)
-
规则: 当某条路由失效时,将其跳数设为 16(不可达)并通告;
-
示例:
原路由:Network A via Router B, 2 Hops 失效后:Network A via Router B, 16 Hops
3. 最大跳数限制
- 跳数上限 15,超过则视为不可达(
Metric=16
),阻止无限循环。
五、RIPv1 vs RIPv2
特性 | RIPv1 | RIPv2 |
---|---|---|
地址类型 | 仅支持有类路由 | 支持 VLSM 和 CIDR |
更新方式 | 广播(255.255.255.255) | 组播(224.0.0.9) |
认证 | 不支持 | 支持明文/MD5认证 |
下一跳指定 | 未指定,可能导致次优路径 | 明确指定下一跳地址 |
六、示例:RIP 拓扑与路由表更新
1. 拓扑图
2. 路由表更新示例
初始时,路由器B的路由表:
目标网络 | 下一跳 | 跳数 |
---|---|---|
192.168.1.0/24 | 直连 | 1 |
10.1.0.0/24 | R1 | 2 |
当收到 R1 的更新后,R2 新增到 Network1 的路由为 10.1.0.0/24 via R1, metric=2+1=3
。(若优则更新)
七、RIP 的局限性
- 收敛速度慢:依赖周期性更新,故障恢复时间长;
- 规模限制:最大跳数 15,不适合大型网络;
- 带宽占用高:定期广播完整路由表。
总结:RIP 作为经典的内部网关协议,凭借简单性在小规模网络中仍有应用,但在复杂或大规模网络中已被 OSPF、EIGRP 等协议取代。
4.6.3内部网关协议OSPF
1. 基本概念
OSPF(Open Shortest Path First)是链路状态路由协议,适用于自治系统(AS)内部的路由选择。与距离向量协议(如 RIP)不同,OSPF 通过构建全网拓扑图(链路状态数据库,LSDB),利用 Dijkstra 算法计算最短路径树,实现高效、无环路的路由选择。
2. OSPF 核心特点
特性 | 说明 |
---|---|
链路状态算法 | 每个路由器维护全网的 LSDB,通过 Dijkstra 计算最短路径。 |
分层次设计 | 将网络划分为多个区域(Area),骨干区域(Area 0)连接其他所有区域。 |
快速收敛 | 基于触发更新机制,拓扑变化时迅速泛洪 LSA,确保全网 LSDB 同步。 |
支持 VLSM/CIDR | 兼容可变长子网掩码和无类域间路由。 |
多路由度量 | 基于接口带宽、延迟等参数动态计算路径开销。 |
支持认证 | 提供明文和 MD5 认证,保障邻居间通信安全。 |
3. OSPF 区域划分
- 骨干区域(Area 0):核心枢纽,所有非骨干区域必须直接或间接连接到 Area 0。
- 常规区域(非 Area 0):独立维护链路状态数据库,通过 ABR 与骨干区域通信。
- 特殊区域类型:Stub 区域、NSSA 等优化外部路由传播。
4. OSPF 报文类型
报文 | 作用 | 内容 |
---|---|---|
Hello | 发现邻居,维持邻接关系 | 参数协商(Area ID、认证、间隔等) |
DBD | 同步 LSDB 摘要 | 链路状态摘要列表 |
LSR | 请求缺失的 LSA | 明确所需 LSA 条目 |
LSU | 携带完整的 LSA 更新 | 更新链路状态信息 |
LSAck | 确认收到的 LSA | 确保数据可靠性 |
5. OSPF 工作流程
-
邻居发现
通过多播224.0.0.5
发送Hello
报文,匹配参数后形成邻居关系。 -
数据库同步
- 主从路由器协商(Router ID 高者为主),交换 DBD 报文。
- 通过 LSR/LSU/LSAck 同步缺失的链路状态信息。
-
邻接关系建立
完成 LSDB 同步后,形成邻接(Adjacency),触发最短路径计算。 -
路由计算与维护
定期发送Hello
保活,拓扑变化时泛洪LSU
更新 LSDB。
6. LSA 类型详解
LSA 类型 | 名称 | 生成者 | 传播范围 |
---|---|---|---|
1 | 路由器 LSA (Router) | 每个路由器 | 单个区域内部 |
2 | 网络 LSA (Network) | DR | 单个区域内部 |
3 | 网络汇总 LSA (Summary) | ABR | 区域间 |
4 | ASBR 汇总 LSA | ABR | 区域间 |
5 | 外部 LSA (External) | ASBR | 整个 OSPF 域 |
7. DR/BDR 选举机制
适用场景:广播多路访问网络(如以太网)。
选举规则:
- 优先级最高(默认 1,0 不参与选举)。
- Router ID 最大(回环接口或手动指定)。
- 作用:减少 LSA 泛洪,统一处理链路状态更新。
8. OSPF 区域间路由
- ABR(Area Border Router)负责区域间路由汇总。
- Type 3 LSA 传递汇总路由至骨干区域和其他区域。
- STUB 区域 阻止 Type 5 LSA 进入,通过默认路由访问外部网络。
9. 安全机制
-
认证类型:明文或 MD5 哈希。
-
配置示例(MD5):
interface GigabitEthernet0/0ip ospf authentication message-digestip ospf message-digest-key 1 md5 MySecretKey
10. OSPF 与 RIP 对比
OSPF | RIP | |
---|---|---|
算法类型 | 链路状态(全局拓扑) | 距离向量(跳数累加) |
收敛速度 | 快(触发更新) | 慢(周期更新) |
最大跳数 | 无限制 | 15 跳限制 |
适用范围 | 大中型网络,支持分层结构 | 小型网络 |
4.6.4外部网关协议BGP
一、BGP 的基本概念
BGP(Border Gateway Protocol,边界网关协议)是互联网中用于在不同自治系统(AS)之间交换路由信息的协议,属于路径向量协议。BGP 的主要特性包括:
- 跨 AS 路由交换:协调不同管理域(如ISP之间的路由)
- 策略路由控制:支持基于商业策略的流量控制
- 防止路由环路:通过 AS_PATH 属性检测环路
二、BGP 的核心机制
1. BGP 对等体(Peer)与连接建立
- eBGP:不同 AS 间的 BGP 连接(如 ISP 之间)
- iBGP:同一 AS 内的 BGP 连接(路由信息内部传播)
- TCP 179 端口:BGP 通过 TCP 保证可靠传输
连接建立流程:
2. BGP 消息类型
消息类型 | 作用描述 |
---|---|
OPEN | 建立邻居关系(协商参数如AS号、Hold Time) |
UPDATE | 通告/撤销路由(携带网络前缀和路径属性) |
KEEPALIVE | 维持连接活性(默认60秒间隔) |
NOTIFICATION | 通告错误并终止连接(如参数不匹配、版本不支持) |
3. BGP 路径属性
属性类型 | 说明 | 示例值 |
---|---|---|
AS_PATH | 记录经过的AS列表,防止环路 | [AS64512, AS65530] |
NEXT_HOP | 下一跳IP地址(可能跨AS修改) | 203.0.113.5 |
LOCAL_PREF | AS内部优先级(值越大优先级越高) | 200 |
MED | 多出口鉴别属性(建议外部邻居选用路径) | 50 |
ORIGIN | 路由来源标识(IGP/EGP/Incomplete) | IGP |
三、BGP 路由选择过程
BGP 根据路径属性的优先级顺序选择最佳路由:
四、典型应用场景
-
多宿主网络(Multihoming):
- 企业通过多个 ISP 接入互联网,BGP 实现流量负载均衡
- 示例:公司 AS 64512 同时连接到 ISP A (AS 65530) 和 ISP B (AS 65531)
-
路由策略控制:
- 设置 LOCAL_PREF 优先某 ISP 出口
- 通过 AS_PATH 过滤特定来源路由
-
防御路由劫持:
- 使用 RPKI(资源公钥基础设施)验证路由来源合法性
五、关键问题解析
为什么BGP使用TCP?
- 保证路由更新可靠传输(UDP不适用于大规模路由表传输)
BGP如何防止路由环路?
- 通过AS_PATH属性检查自身AS号是否已存在于路径中
iBGP为什么需要全互联或路由反射器?
- 避免信息丢失(iBGP邻居间不修改AS_PATH,需确保路由信息全分布)
BGP 作为互联网的"粘合剂",通过灵活的属性和策略控制,支撑了全球复杂网络的路由互联。
4.6.5路由器的构成
路由器是网络层的核心设备,负责在不同网络之间转发数据包。其构成可以从 硬件结构 和 功能模块 两个维度进行详细分析。
硬件结构分层
路由器一般由以下核心组件构成:
一、关键部件详解
1. 输入端口(Input Port)
负责接收数据链路层帧,处理网络层数据包。核心功能如下:
- PHY/MAC模块
处理物理层/链路层协议(如以太网接口),完成 帧解封装、CRC校验等。 - 转发表查找(Forwarding Table Lookup)
根据IP包的目的地址查询 最长前缀匹配(Longest Prefix Match),确定输出端口。- 通过 TCAM(Ternary Content-Addressable Memory) 加速查找。
- 缓冲管理(Queuing)
当交换结构繁忙时,包会被缓存在输入队列中,避免数据丢失。
2. 交换结构(Switching Fabric)
连接输入和输出端口,实现高速数据交换。主要技术方案:
- 共享总线(Shared Bus)
所有端口共用总线带宽,简单但吞吐量低(如早期路由器)。 - 交叉开关(Crossbar Switch)
无阻塞交换矩阵,允许多条并行路径,适用于高速路由器。 - 共享内存(Shared Memory)
输入端口将数据写入共享内存,输出端口直接读取,需高性能内存控制器。
3. 输出端口(Output Port)
负责将交换结构转发的包发送到下一跳。核心功能:
- 输出缓冲队列(Output Queue)
当输出链路繁忙时,包会排队等待发送,可能触发 拥塞控制算法(如RED)。 - 调度算法(Scheduling)
决定包的发送顺序(如FIFO、优先级队列、加权公平队列WFQ)。 - MAC/PHY封装
重新封装为链路层帧(如以太网),附加新MAC地址。
4. 路由处理器(Routing Processor)
路由器的“控制平面”,负责协议处理和路由表更新:
- 路由协议处理(OSPF/BGP/RIP)
运行动态路由协议,更新路由表。 - 路由表维护
构建转发表(Forwarding Table),供输入端口快速查表。 - 管理功能(CLI/SNMP)
支持配置和监控(如登录控制台、SNMP查询)。
二、路由器工作流程
三、典型技术细节
-
转发表 VS 路由表
- 路由表(Routing Table)
由路由协议生成,包含完整网络拓扑信息(如OSPF LSDB)。 - 转发表(Forwarding Table)
从路由表提取,仅保留“目的网络 → 下一跳”映射,优化查表速度。
- 路由表(Routing Table)
-
处理瓶颈分析
- 输入排队(Head-of-Line Blocking)
队列头部阻塞后续包的交换(解决方案:虚拟输出队列VOQ)。 - 输出缓冲溢出
过量流量导致丢包(需结合AQM算法如RED/ECN)。
- 输入排队(Head-of-Line Blocking)
四、路由器架构演进
类型 | 特点 | 适用场景 |
---|---|---|
传统路由器 | 软件转发(CPU处理) | 小型网络 |
硬件加速路由器 | ASIC/FPGA线速转发 | 企业级核心网 |
SDN路由器 | 控制与转发分离(OpenFlow协议) | 数据中心/云网络 |
总结
- 输入端口:数据接收与初步处理
- 交换结构:高速包交换核心
- 输出端口:调度与发送管理
- 路由处理器:协议与控制逻辑
路由器通过上述模块协同工作,实现网络层的高效分组转发和动态路由维护。