iBoxHub技术日志

怀念我们的昨天,憧憬我们的明天,珍惜我们的今天

网络层

网络层

一、网络层的第一性原理

1. 网络层要解决的根本问题

问题本质

在一个不可靠、异构、无限规模扩展的物理网络之上, 如何提供一种统一的、可扩展的、端到端通信抽象

这一问题具有不可回避的约束条件:

  • 链路与节点随时可能失败
  • 网络规模不可预知、不可集中控制
  • 不同网络的底层技术完全不同
  • 不存在全局可信状态

网络层的设计,正是对这些约束的系统性回应。


2. 网络层的核心设计哲学

由上述约束,推导出网络层的一组第一性设计选择

约束设计选择解释
网络不可靠尽力而为不在网络内部保证可靠性
规模巨大分布式路由不依赖中心节点
异构网络IP 抽象屏蔽物理网络差异
自治系统AS + BGP不假设统一管理
复杂性不可控端到端原则把复杂性交给端系统

结论: 网络层不是“能力最强的一层”,而是假设最少、责任最轻的一层


二、网络层的服务模型

1. 无连接、尽力而为的数据报模型

网络层向上传递的不是“连接”,而是:

独立、无状态的数据报(Datagram)

其核心特征:

  • 每个分组独立路由
  • 网络节点不保存端到端状态
  • 不保证:
    • 到达
    • 顺序
    • 不重复

这是一个刻意“能力不足”的设计,目的是:

  • 降低网络内部复杂度
  • 提高系统整体可扩展性

2. 端到端原则在网络层的体现

只有端系统才能真正实现可靠性、顺序性和语义一致性。

因此:

  • 网络层负责“尽量送达”
  • 传输层(TCP)负责“可靠语义”

这是一个跨层协作的系统分工,而非网络层的缺陷。


三、核心机制一:转发(Forwarding)

1. 转发的本质

转发 = 局部、快速、确定性的决策过程

输入:

  • 数据报首部
  • 本地转发表

输出:

  • 下一跳接口

转发强调:

  • 速度优先
  • 无全局视角

2. 数据平面(Data Plane)

数据平面负责:

  • 数据报解析
  • 最长前缀匹配
  • TTL / 校验和更新
  • 排队与调度

其特征是:

  • 高频
  • 简单
  • 可硬件化

3. 交换结构的演进

交换结构体现的是:

如何在路由器内部实现并行转发

演进路径:

  1. 内存交换(简单、不可扩展)
  2. 总线交换(瓶颈明显)
  3. 纵横式交换(并行能力强)

这是一个典型的从功能正确 → 性能可扩展的工程演进。


4. 分组调度:资源竞争的管理

调度算法的本质问题是:

当资源不足时,谁先被服务?

典型策略:

  • FIFO:简单但不公平
  • 优先级队列:实时性 vs 饥饿
  • 加权公平:公平性与吞吐权衡

调度是网络层 QoS 能力的核心抓手


四、核心机制二:路由(Routing)

1. 路由的本质

路由 = 慢速、全局、持续演进的决策过程

目标:

  • 为转发生成可用的转发表

路由关注:

  • 正确性
  • 稳定性
  • 收敛性

2. 路由算法的设计张力

核心矛盾:

目标冲突
全局最优不可扩展
局部信息易产生环路
快速收敛控制开销大

所有路由算法,都是在这些矛盾中取舍。


3. 两类基本算法范式

距离向量(DV)

  • 仅交换距离信息
  • 实现简单
  • 无拓扑视角 → 易环路

链路状态(LS)

  • 泛洪拓扑信息
  • 全局最短路径
  • 控制流量大

4. IGP 与 EGP 的分工

层次协议关注点
AS 内RIP / OSPF最短路径、快速收敛
AS 间BGP策略、自治、稳定

BGP 不是“最短路径协议”,而是“策略协调协议”


五、IP:统一抽象的核心协议

1. IP 的设计目标

提供一个最小但足够通用的网络抽象

IP 只关心:

  • 地址
  • 分片
  • 生命周期

2. IPv4:现实妥协的产物

  • 有限地址空间
  • 首部复杂
  • 需要 NAT 作为补丁

IPv4 的大量“问题”,并非设计失误,而是:

早期规模假设被现实击穿


3. IPv6:回归设计本意

IPv6 的改进体现了:

  • 地址充足 → 减少技巧
  • 首部简化 → 提高转发效率
  • 禁止中间分片 → 强化端到端原则

六、规模化网络的工程解法(非原理)

本章内容属于工程补丁层,用于应对现实约束。

1. NAT

  • 解决地址不足
  • 破坏端到端模型
  • 增加系统复杂性

2. ECMP

  • 提升带宽利用率
  • 带来路径爆炸与排错复杂度

3. MPLS / VPN

  • 提供流级控制与隔离
  • 本质是对 IP 转发模型的增强

七、控制平面 / 数据平面分离:架构范式

1. SDN 的本质

SDN 不是“新协议”,而是: 控制与执行分离的架构重构

这一范式在多个领域重复出现:

  • 网络:SDN
  • 分布式系统:Controller / Worker
  • 数据库:Planner / Executor

2. 可编程网络

SDN 带来的不是“更快”,而是:

  • 更强的表达能力
  • 更清晰的系统边界
  • 更可演进的控制逻辑

Service Mesh 是该思想在应用层的延展。


八、网络层的整体认知总结

网络层的伟大之处,不在于它做了多少事, 而在于它清楚地知道自己不该做什么

  • 把可靠性交给端系统
  • 把策略性交给自治系统
  • 把复杂性交给架构演进

这正是互联网能够持续扩展数十年的根本原因。