Chapter 5-3:互联网层次路由、SDN、ICMP 与网络管理

Chapter 5-3:互联网层次路由、SDN、ICMP 与网络管理

引言:真实互联网为什么不能只运行一种路由算法

在学习链路状态路由和距离向量路由时,可以暂时把网络看成一张规模有限的平面图:所有路由器地位相近,路由算法只需要根据链路代价计算路径。

真实互联网却不能采用这种简单模型。

互联网由大量组织、运营商、企业、大学和云服务商的网络共同组成。不同网络分别由不同管理者控制,具有各自的拓扑、路由策略、商业关系和安全要求。如果把整个互联网视为一个平面网络,就会出现三个根本问题:

  • 规模问题: 路由器无法维护全球所有路由器和链路的详细状态。
  • 通信问题: 全网泛洪或交换完整距离向量会产生巨大的控制开销。
  • 自治问题: 不同组织不愿公开内部拓扑,也不会接受由其他组织决定自己的路由政策。

因此,互联网采用层次化的控制平面:

❗核心主线: 互联网首先通过自治系统解决规模与管理边界问题,再分别使用 OSPF 和 BGP 处理 AS 内部与 AS 之间的路由;SDN 提供更灵活的集中控制,ICMP 负责网络层反馈,网络管理协议则负责设备监控与配置。


1. 为什么互联网需要层次路由

1.1 平面路由的规模限制

假设整个互联网都运行同一个链路状态协议,那么每台路由器都需要:

  • 接收全网所有路由器的链路状态;
  • 保存完整的全球拓扑;
  • 在拓扑变化后重新执行最短路径计算;
  • 将自己的状态向全球泛洪。

随着节点和链路数量增加,链路状态数据库、泛洪消息和计算成本都会迅速扩大。

如果整个互联网运行距离向量协议,则每台路由器需要维护面向海量目的地的距离向量。路由更新需要逐跳传播,收敛时间、环路风险和控制报文规模也将难以接受。

因此,LS 和 DV 虽然能够解决一般图中的路由问题,却不能直接作为整个互联网的单层组织方式。

1.2 管理自治问题

互联网不是由一个中心机构统一运营的单一网络,而是“网络的网络”。

不同组织拥有不同目标:

  • 企业可能优先考虑安全与业务隔离;
  • 运营商需要考虑客户、供应商和对等互联关系;
  • 大学可能选择成本较低的出口;
  • 云服务商可能根据流量工程策略分配路径;
  • 一个网络可能拒绝为没有商业关系的其他网络转发流量。

因此,互联网路由不只是求数学意义上的最短路径,还必须尊重各个组织的管理边界与策略。


❗本节核心结论:

互联网采用层次路由,既是为了降低路由信息和计算规模,也是为了允许不同组织独立控制自己的网络。


2. 自治系统 AS

2.1 AS 的定义

AS 是 Autonomous System,即自治系统。

它可以理解为:

由同一个组织或管理实体控制,并对外采用统一路由政策的一组路由器和网络。

每个自治系统使用自治系统号 ASN 进行标识。一个大型互联网服务提供商可能只运行一个 AS,也可能因为规模、地区或业务划分而运行多个 AS。

2.2 AS 与子网的区别

AS 不能简单理解为一个子网。

对比维度 子网 自治系统 AS
核心含义 IP 地址与转发范围 管理和路由策略范围
主要标识 IP 前缀 ASN
包含内容 一组同前缀或相关地址的接口 多个路由器、链路和子网
关注重点 地址分配和本地交付 谁管理网络、如何对外发布路由
规模 通常较小 可以包含大量子网

一个 AS 内部通常包含多个 IP 子网。一段 IP 前缀表示地址空间,而 AS 表示网络控制权和路由政策。

2.3 网关路由器

位于 AS 边缘、连接其他自治系统的路由器称为网关路由器或边界路由器。

网关路由器通常同时参与两类路由:

  • 通过 AS 内部协议与本 AS 路由器交换信息;
  • 通过 AS 间协议与其他 AS 的网关路由器交换可达性信息。

2.4 两层路由结构

引入 AS 后,路径选择被分为两个问题:

1
2
3
4
5
AS 内部路由:
在本组织内部怎样到达某个内部网络或出口网关?

AS 间路由:
应该经过哪些自治系统,到达外部目的网络?

常见协议对应关系如下:

路由范围 主要协议 主要目标
AS 内部 OSPF 等 IGP 性能、代价、快速收敛
AS 之间 BGP 策略、自治、可扩展性

其中 IGP 表示内部网关协议,BGP 则承担互联网中的 AS 间路由。


❗本节核心结论:

AS 是管理与路由政策意义上的自治域,而不是单纯的地址子网。层次路由将全网问题拆成了 AS 内部路径与 AS 之间路径两个层次。


3. OSPF:自治系统内部的链路状态路由

3.1 OSPF 是什么

OSPF 全称为 Open Shortest Path First,即开放最短路径优先协议。

它是一种典型的 AS 内部路由协议,采用链路状态思想:

  • 路由器发现邻居;
  • 测量或配置链路代价;
  • 生成链路状态通告;
  • 在规定范围内泛洪通告;
  • 建立链路状态数据库;
  • 使用 Dijkstra 算法计算最短路径。

“Open”表示协议规范公开,不依赖某一家厂商的私有实现。

3.2 OSPF 与 LS、Dijkstra 的关系

OSPF、链路状态机制和 Dijkstra 算法不是同一个概念。

概念 作用
链路状态思想 让路由器获得拓扑和链路代价
OSPF 实现链路状态路由的具体协议
Dijkstra 在已知拓扑上计算最短路径的算法

OSPF 负责定义路由器如何发现邻居、传播状态并维护数据库;Dijkstra 负责在数据库描述的图上计算最短路径树。

3.3 OSPF 的基本运行过程

OSPF 路由器最终根据最短路径树确定:

  • 到达某个目的网络的总代价;
  • 应选择哪个下一跳;
  • 应从哪个接口发送分组。

3.4 OSPF 主要关注性能

在一个 AS 内部,路由器通常由同一组织管理,因此路由目标相对统一。

管理员可以通过链路代价表达内部偏好,例如:

  • 让高带宽链路具有较低代价;
  • 避开低速或高成本链路;
  • 让主要链路优先于备用链路;
  • 调整流量在内部网络中的分布。

因此,OSPF 的重点通常是寻找代价较低的内部路径,并在拓扑变化后较快恢复。

3.5 OSPF 直接由 IP 承载

OSPF 控制报文封装在 IP 数据报中,不通过 TCP 或 UDP。

这意味着 OSPF 自己定义:

  • 邻居关系维护;
  • 状态通告;
  • 可靠泛洪;
  • 数据库同步等机制。

这与 BGP 使用 TCP 建立会话的方式不同。


❗本节核心结论:

OSPF 是链路状态思想在 AS 内部的具体实现。它通过泛洪建立拓扑数据库,再使用 Dijkstra 算法生成内部路由。


4. 层次化 OSPF 与 Area

4.1 为什么 OSPF 内部还要分层

即使只在一个 AS 内运行 OSPF,大型自治系统中也可能存在大量路由器。

如果所有链路状态通告都在整个 AS 中传播,会带来:

  • 链路状态数据库过大;
  • 泛洪流量增加;
  • 拓扑变化影响范围过广;
  • SPF 重算次数增加;
  • 路由器的存储和计算压力上升。

因此,OSPF 可以进一步将一个 AS 划分为多个区域 Area。

4.2 区域化的基本思想

区域化后,路由器主要掌握本区域内部的详细拓扑。

对于其他区域,普通路由器不必了解每一条链路,只需要知道:

  • 外部目的地可以通过哪个区域边界路由器到达;
  • 到该边界路由器的内部代价是多少;
  • 目标网络大致位于哪个方向。

区域之间通常通过骨干区域连接。区域边界路由器负责在不同区域之间传播经过汇总或处理的路由信息。

4.3 Area 带来的好处

区域划分能够:

  • 限制链路状态通告的传播范围;
  • 缩小单台路由器需要保存的详细拓扑;
  • 将局部故障和变化限制在区域内部;
  • 减少全网 SPF 重算;
  • 提高大型 AS 的可扩展性。

4.4 付出的代价

层次化会隐藏部分拓扑细节,因此区域之间的路径选择不一定等价于在完整全局图上求得的绝对最优路径。

这是一种典型的工程折中:

用部分全局最优性换取更好的规模性、稳定性和管理能力。


❗本节核心结论:

OSPF Area 让路由器在本区域了解细节、对其他区域只掌握汇总方向,从而控制泛洪范围和拓扑规模。


5. BGP:连接不同自治系统

5.1 BGP 的作用

BGP 全称为 Border Gateway Protocol,即边界网关协议。

它是互联网事实上的 AS 间路由协议,承担以下任务:

  • 让一个网络前缀向其他 AS 声明自己的存在;
  • 在不同 AS 之间传播前缀可达性;
  • 为同一个前缀选择符合策略的路径;
  • 根据商业、安全和管理政策决定是否接受或传播路由。

BGP 将大量自治系统连接在一起,因此常被称为把互联网“粘合”起来的协议。

5.2 BGP 通告的不是完整内部拓扑

一个 AS 不需要向外部公开内部每台路由器和每条链路。

它只需要向其他 AS 通告:

  • 自己能够到达哪些网络前缀;
  • 到达这些前缀需要经过哪些 AS;
  • 下一跳等相关路径属性。

这样既隐藏了内部结构,又降低了跨域路由信息规模。

5.3 前缀、属性与路由

一条 BGP 路由可以表示为:

1
网络前缀 + 路径属性 = BGP 路由

例如,一个 BGP 路由可能表达:

1
2
3
前缀:X
AS-PATH:AS2 → AS3
NEXT-HOP:某边界路由器

它表示该前缀可以通过指定的下一跳,并沿相应的 AS 路径到达。


❗本节核心结论:

BGP 传播的是带有属性的网络前缀可达性,而不是其他 AS 的完整内部拓扑。


6. eBGP 与 iBGP

6.1 eBGP

eBGP 是 external BGP,运行在不同自治系统的 BGP 路由器之间。

它负责:

  • 从相邻 AS 学习外部前缀;
  • 向相邻 AS 通告本 AS 或其他可传播的前缀;
  • 执行输入和输出路由策略;
  • 建立跨 AS 的可达性。

例如:

1
2
3
AS3 的网关 3a
↓ eBGP
AS2 的网关 2c

AS3 可以通过该会话向 AS2 通告自己能够到达的前缀。

6.2 iBGP

iBGP 是 internal BGP,运行在同一个 AS 内部的 BGP 路由器之间。

它的主要作用是:

将通过 eBGP 学到的外部前缀及其属性传播给本 AS 的其他相关路由器。

如果一个 AS 有多个出口,内部路由器需要知道:

  • 哪些前缀可以从出口 A 到达;
  • 哪些前缀可以从出口 B 到达;
  • 每条外部路径具有什么属性;
  • 应该选择哪个出口。

iBGP 负责传播这些外部路由信息。

6.3 iBGP 不是普通内部最短路径协议

iBGP 虽然在 AS 内部运行,但它与 OSPF 的任务不同。

对比维度 OSPF iBGP
主要对象 AS 内部网络与链路 外部网络前缀
主要任务 计算内部到达路径 传播外部可达性和 BGP 属性
核心信息 拓扑和链路代价 前缀、AS-PATH、NEXT-HOP 等
典型用途 到达内部节点或出口 决定外部前缀应走哪个出口

在传统网络中,两者通常协同工作,而不是互相替代:

  • BGP 决定选择哪个外部出口;
  • OSPF 等内部协议决定怎样在 AS 内到达这个出口。

❗本节核心结论:

eBGP 在 AS 之间交换路由,iBGP 在 AS 内传播外部路由;iBGP 并不等同于负责全部内部转发的 IGP。


7. BGP 是路径向量协议

7.1 普通 DV 与 BGP 的区别

普通距离向量协议主要通告:

1
我到目的地 y 的代价是 d

接收者通常看不到完整路径,因此可能出现邻居的路径实际经过自己的问题。

BGP 不只通告一个距离值,还携带所经过的自治系统序列:

1
2
到前缀 X 的路径为:
AS2 → AS3 → AS4

因此,BGP 更准确地被称为路径向量协议。

7.2 AS-PATH

AS-PATH 记录到达某个前缀需要经过的 AS 序列。

它有两个重要作用:

  • 帮助进行路径选择;
  • 帮助发现 AS 级路由环路。

假设 AS2 收到以下路由:

1
2
前缀 X
AS-PATH:AS3 → AS4

AS2 向外继续通告时,会把自己加入路径:

1
AS-PATH:AS2 → AS3 → AS4

如果某个 AS 收到一条路由,并发现自己的 ASN 已经出现在 AS-PATH 中,就说明采用这条路由会形成环路,因此可以拒绝该路由。

7.3 路径向量解决了什么问题

与只传播距离相比,AS-PATH让接收者获得了更明确的路径结构。

它不能解决 BGP 的所有安全与策略问题,但可以避免最基本的 AS 级循环依赖。


❗本节核心结论:

BGP 不只通告“有多远”,还通告“经过哪些 AS”,因此能够利用 AS-PATH 检测跨自治系统的路由环路。


8. NEXT-HOP 属性

8.1 NEXT-HOP 的含义

NEXT-HOP 用来指出:

要采用这条 BGP 路由,数据包接下来应被送往哪个网关地址。

最终目的地可能是远端前缀 X,但当前 AS 首先要解决的是:

1
应该从本 AS 的哪个边界出口离开?

NEXT-HOP 为内部路由器提供了连接 BGP 路径与内部转发路径的关键线索。

8.2 NEXT-HOP 不是最终目的地

例如:

1
2
3
最终目的前缀:X
选择的边界出口:2c
下一跳地址:与 2c 相连的外部接口地址

这里:

  • X 是最终要到达的网络;
  • NEXT-HOP 是当前阶段需要到达的网关;
  • 从内部路由器到该网关的路径仍需要由 OSPF 等内部协议确定。

8.3 BGP 与 IGP 的配合

一个数据包前往外部网络时,通常经历两层决策:

❗本节核心结论:

BGP 决定去哪个外部出口,内部路由协议负责把分组送到该出口。NEXT-HOP 是连接这两个层次的关键属性。


9. BGP 的路径选择

9.1 BGP 不一定选择最短路径

对于同一个前缀,路由器可能同时学到多条路径。

BGP 不会只比较物理距离或 AS 数量,而是按照一系列规则筛选。典型因素包括:

  • 本地偏好或管理策略;
  • AS-PATH 长度;
  • NEXT-HOP 在本 AS 内的可达代价;
  • 其他协议属性和附加判据。

其中,本地策略通常具有很高优先级。这意味着一条 AS-PATH 更短的路径,仍然可能因为商业或管理策略而被拒绝。

9.2 为什么 AS 间路由策略优先

AS 之间可能存在不同经济关系:

  • 客户关系: 客户向运营商付费获得互联网连接;
  • 提供商关系: 当前 AS 购买上游服务;
  • 对等关系: 两个网络在一定条件下互换流量。

一个 AS 可能愿意:

  • 为自己的客户转发流量;
  • 使用付费上游到达互联网;
  • 与对等网络交换双方客户流量。

但它通常不愿免费替两个无关上游或对等方中转流量。

因此,BGP 选择不仅回答“哪条路径短”,还要回答:

  • 是否愿意使用这条路径?
  • 是否愿意向某个邻居通告该路径?
  • 是否愿意承担中转流量?
  • 哪条路径符合商业和安全策略?

❗本节核心结论:

OSPF 更接近按代价优化内部性能,BGP 则首先服从自治系统的策略;AS-PATH 短并不保证一定被选择。


10. 热土豆路由

10.1 基本思想

热土豆路由指一个 AS 在存在多个外部出口时,倾向于选择:

在本 AS 内部代价最低、最容易到达的出口。

它的目标不是让整个互联网路径最短,而是尽快将外部流量送出本 AS。

这像拿到一块烫手的土豆后尽快丢出去,因此得名“热土豆”。

10.2 示例

假设内部路由器 2d 可以通过两个出口到达前缀 X

1
2
3
4
5
方案一:
2d → 2a → 外部 AS → X

方案二:
2d → 2c → 外部 AS → X

如果:

  • 2a 的内部代价为 10
  • 2c 的内部代价为 3

热土豆策略可能选择 2c,即使从 2c 出去后经过的 AS 数量更多。

10.3 为什么它不一定全局最优

热土豆路由只优化本 AS 内部成本:

1
2
最小化:
当前路由器 → 本 AS 出口

它不直接优化:

1
当前路由器 → 最终目的地

因此,流量可能更早离开本 AS,却在外部网络中经过更长路径。

10.4 背后的运营逻辑

一个 AS 通常只能够直接管理自己的链路和资源。尽早将流量交给其他 AS,可以:

  • 减少本 AS 骨干链路占用;
  • 降低内部传输成本;
  • 减少自身需要承担的远距离转发压力。

❗本节核心结论:

热土豆路由追求的是“尽快离开自己的 AS”,而不是端到端全局最短路径。


11. 外部前缀如何传播到其他 AS

假设前缀 X 位于 AS3 中,其可达性可以按以下方式传播。

11.1 AS3 向 AS2 通告

AS3 的网关路由器 3a 通过 eBGP 向 AS2 的网关 2c 通告:

1
2
前缀:X
AS-PATH:AS3

11.2 AS2 执行输入策略

AS2 收到路由后,不是无条件接受,而是先判断:

  • 前缀是否允许接收;
  • 路由属性是否符合策略;
  • 通告者是否是可信邻居;
  • 是否存在更优路径。

如果接受,2c 将这条路由加入候选集合。

11.3 通过 iBGP 在 AS2 内传播

2c 使用 iBGP 将前缀 X 的可达性告诉 AS2 内部其他 BGP 路由器。

内部路由器由此知道:

  • X 可以经 2c 到达;
  • 相应的 AS-PATH 和 NEXT-HOP;
  • 是否还存在其他出口路径。

11.4 AS2 向 AS1 通告

如果 AS2 的输出策略允许,它可以通过另一个边界路由器向 AS1 通告:

1
2
前缀:X
AS-PATH:AS2 → AS3

每经过一个 AS,该 AS 通常会把自己的 ASN 加入 AS-PATH。


❗本节核心结论:

BGP 路由在 AS 之间逐级传播,每个 AS 都可以独立决定是否接受、选择和继续通告该路径。


12. BGP 的安全问题

12.1 基于信任的风险

传统 BGP 的核心设计主要解决可达性和策略问题,并不天然证明:

  • 某个 AS 是否真正拥有其通告的 IP 前缀;
  • AS-PATH 是否完全真实;
  • 路由通告是否由合法主体发出。

因此,错误配置或恶意行为可能导致:

  • 路由泄漏: 将本不应该继续传播的路由通告给其他网络;
  • 前缀劫持: 未经授权的 AS 宣称自己能够到达某段 IP 前缀;
  • 流量误导: 其他网络因错误通告而把流量发送到错误方向。

12.2 RPKI

RPKI 是用于提高互联网路由安全性的一类基础设施。

它可以帮助验证:

某个 AS 是否被授权为某个 IP 前缀发起 BGP 路由通告。

RPKI 主要增强前缀起源验证,但不能自动解决所有路径伪造、策略错误和路由泄漏问题。

12.3 安全与自治之间的难题

BGP 必须在以下目标之间取得平衡:

  • 全球互联;
  • 各 AS 独立控制;
  • 路由可扩展性;
  • 策略灵活性;
  • 路由信息真实性。

这也是互联网控制平面长期演进的重要方向。


❗本节核心结论:

BGP 的策略灵活性建立在跨组织协作与信任之上,因此路由泄漏和前缀劫持是现实风险;RPKI 可以加强前缀起源验证。


13. 为什么需要 SDN

13.1 传统路由的限制

OSPF 和 BGP 主要围绕目的地址决定路径。

假设管理员希望实现:

  • 来自 u、前往 z 的流量走路径 u-v-w-z
  • 来自 x、同样前往 z 的流量走路径 x-w-y-z
  • 视频流量和普通网页流量走不同路径;
  • 将一部分流量分配到主链路,另一部分分配到备用链路;
  • 根据用户身份或传输层端口执行访问控制。

如果转发只查询目的 IP 前缀,就很难直接表达这些要求。

传统网络可以通过修改链路代价、部署策略路由或配置大量设备实现部分目标,但通常存在:

  • 配置复杂;
  • 设备厂商接口不一致;
  • 全网策略难以统一;
  • 故障时难以快速调整;
  • 新功能需要逐台设备部署。

13.2 SDN 的基本思想

SDN 是 Software Defined Networking,即软件定义网络。

其核心思想是:

将控制逻辑与高速数据转发分离,由逻辑集中的控制器掌握网络状态并下发转发规则。

数据平面设备主要执行:

  • 匹配分组字段;
  • 转发;
  • 丢弃;
  • 修改首部;
  • 复制;
  • 统计。

控制器负责:

  • 收集网络状态;
  • 运行控制应用;
  • 计算路径和策略;
  • 向设备安装流表规则。

❗本节核心结论:

SDN 不是单纯更换路由算法,而是重新划分控制平面与数据平面的职责,使网络策略能够由软件统一编程。


14. SDN 的分层结构

14.1 网络控制应用层

最上层运行具体网络应用,例如:

  • 路由计算;
  • 访问控制;
  • 负载均衡;
  • 流量工程;
  • 防火墙策略;
  • 故障恢复。

这些应用描述“网络应该怎样运行”。

14.2 网络范围状态管理层

控制器维护网络整体状态,例如:

  • 交换机和端口;
  • 链路连接关系;
  • 主机位置;
  • 流量统计;
  • 已安装的流表;
  • 链路故障;
  • 网络拓扑。

上层应用不必直接逐台读取设备,而是通过控制器提供的网络抽象获取信息。

14.3 通信层

控制器通过南向协议与数据平面设备通信,完成:

  • 获取设备状态;
  • 接收事件;
  • 安装或删除流表项;
  • 查询统计信息;
  • 指定分组处理动作。

OpenFlow 是典型的南向控制协议之一。

14.4 OpenFlow

OpenFlow 允许控制器与交换机交换控制消息,并对流表进行管理。

一条流表规则通常包含:

1
2
3
4
5
匹配条件
+
执行动作
+
统计与优先级等信息

例如:

1
2
3
4
5
6
7
匹配:
源地址属于网络 A
目的地址属于网络 B
TCP 目的端口为某值

动作:
从端口 3 转发

相比只根据目的地址查询传统转发表,流表可以基于多个字段定义“流”。


❗本节核心结论:

SDN 控制器在上层应用与底层交换机之间提供统一抽象,并通过 OpenFlow 等协议把控制决策转化为流表规则。


15. SDN 的逻辑集中与物理分布

15.1 逻辑集中

所谓逻辑集中,是指:

  • 控制应用面对统一的网络视图;
  • 控制策略由统一逻辑协调;
  • 数据平面设备接受控制器的规则管理。

15.2 不等于只有一台服务器

现实中的控制器可以由多个物理节点构成。

多个节点可以共同实现:

  • 状态复制;
  • 故障接管;
  • 负载分担;
  • 地理分布;
  • 高可用部署。

对上层应用而言,它们可以表现为一个统一控制系统。

因此:

1
逻辑集中 ≠ 物理单点

15.3 SDN 面临的挑战

SDN 仍需要解决:

  • 控制器故障后的可靠性;
  • 控制器与设备之间的安全;
  • 大规模设备和流量下的性能;
  • 多控制器之间的状态一致性;
  • 控制规则冲突;
  • 网络变化时的快速响应。

❗本节核心结论:

SDN 的集中指统一控制逻辑,而不是必须依赖一台机器。工程实现通常需要分布式控制器保证扩展性和可靠性。


16. ICMP:网络层的反馈机制

16.1 为什么 IP 需要 ICMP

IP 提供尽力而为的数据报服务。

当数据报无法正常交付时,IP 本身并不会自动建立可靠连接或保证重传。但发送方和管理员仍然需要知道:

  • 目的网络是否不可达;
  • 目的主机是否不可达;
  • 端口是否不可用;
  • 数据报是否因 TTL 用尽而被丢弃;
  • 网络路径是否存在异常。

ICMP 提供了网络层控制信息与错误报告机制。

可以概括为:

1
2
IP:尽力传送数据报
ICMP:反馈传送过程中发生的问题

16.2 ICMP 的典型用途

ICMP 可以用于:

  • 网络不可达;
  • 主机不可达;
  • 协议不可达;
  • 端口不可达;
  • TTL 超时;
  • Echo 请求与 Echo 回复;
  • 网络诊断。

Ping 主要利用 ICMP Echo Request 和 Echo Reply 测试目标是否能够到达。

16.3 ICMP 与 IP 的关系

ICMP 属于网络层控制协议,但 ICMP 报文由 IP 数据报承载。

可以理解为:

1
2
IP 数据报
└── ICMP 报文

因此,ICMP 在协议封装上位于 IP 之上,但在功能分类上仍属于网络层控制机制。


❗本节核心结论:

ICMP 不负责普通应用数据传输,而是为 IP 提供错误反馈、状态通知和诊断支持。


17. ICMP 差错报文包含什么

ICMP 报文包含 Type 和 Code 字段,用于说明消息类别和更具体的原因。

当 ICMP 报告某个原始 IP 数据报发生错误时,差错报文通常还会携带:

  • 原始 IP 首部;
  • 原始 IP 数据部分开头的一段内容,传统上至少包含前 8 字节。

保留这些内容的目的是帮助发送主机识别:

  • 哪一个原始数据报出错;
  • 原始数据报使用了什么传输层协议;
  • 哪个应用或套接字可能与该数据报相关。

对于 UDP,首部长度为 8 字节,因此可以包含源端口、目的端口、长度和校验和等字段。对于 TCP,开头部分也可以提供端口等关键信息,帮助协议栈定位相关连接。

❗本节核心结论:

ICMP 差错报文附带原始数据报的一部分,不是为了重新传送原数据,而是为了让发送方识别具体出错的数据报和通信端点。


18. Traceroute 的工作原理

18.1 TTL 的作用

IP 数据报中的 TTL 字段会在经过路由器时递减。

当 TTL 变为零时:

  • 路由器丢弃该数据报;
  • 路由器通常返回 ICMP Time Exceeded 消息。

TTL 原本用于防止数据报在路由环路中无限转发,Traceroute 则利用了这一行为发现路径上的路由器。

18.2 逐步增加 TTL

Traceroute 发送一系列探测数据报:

1
2
3
4
第一组:TTL = 1
第二组:TTL = 2
第三组:TTL = 3
……

当 TTL 为 1 时,第一个路由器将其减为零并返回 ICMP 超时消息。

当 TTL 为 2 时,数据报到达第二个路由器后 TTL 归零,由第二个路由器返回消息。

以此类推,源主机逐步获得沿途路由器的信息。

18.3 如何判断到达目的主机

经典实现可以向目的主机一个通常未使用的 UDP 端口发送探测数据报。

当数据报最终到达目的主机时:

  • 目标主机发现该 UDP 端口没有应用监听;
  • 返回 ICMP Port Unreachable;
  • Traceroute 据此判断探测已经到达终点。

不同系统也可能采用其他类型的探测报文,但核心思想仍是逐步增加 TTL,并利用返回消息识别各跳。


❗本节核心结论:

Traceroute 通过逐步增加 TTL,让每一跳路由器依次产生 ICMP 超时消息,从而推断数据报经过的路径。


19. 网络管理与路由控制的区别

路由协议主要解决:

1
数据包应该怎样到达目的地?

网络管理还需要解决:

  • 设备是否正常运行;
  • 链路利用率是多少;
  • 配置是否符合规范;
  • 哪些接口发生故障;
  • 谁能够访问管理系统;
  • 多台设备的配置是否一致;
  • 网络服务是否达到性能要求。

因此,网络管理是一套涉及硬件、软件、协议和人员的综合体系,用于:

  • 监测;
  • 测试;
  • 轮询;
  • 配置;
  • 分析;
  • 评价;
  • 控制网络资源。

❗本节核心结论:

路由协议关注转发路径,网络管理关注整个网络及其设备如何被监控、配置和维护。


20. 网络管理的五类功能

20.1 性能管理

性能管理关注:

  • 链路利用率;
  • 吞吐量;
  • 时延;
  • 丢包率;
  • 设备负载;
  • 容量趋势。

其目标是发现性能瓶颈、评估网络质量并支持容量规划。

20.2 故障管理

故障管理负责:

  • 检测故障;
  • 记录故障;
  • 定位问题;
  • 发出告警;
  • 采取恢复措施;
  • 验证服务是否恢复。

20.3 配置管理

配置管理关注:

  • 设备当前配置;
  • 配置修改历史;
  • 多设备配置一致性;
  • 软件和固件版本;
  • 配置备份与恢复;
  • 自动化部署。

20.4 账户管理

账户管理用于:

  • 记录用户或设备对资源的使用;
  • 控制使用权限;
  • 支持计费或资源统计;
  • 识别资源使用主体。

这里的账户不只指普通登录账户,也可以涉及用户、设备、租户和服务等管理对象。

20.5 安全管理

安全管理负责:

  • 定义安全策略;
  • 控制管理访问;
  • 验证身份和权限;
  • 保护设备配置;
  • 记录安全事件;
  • 监测异常行为。
功能 核心问题
性能管理 网络运行得怎么样
故障管理 哪里坏了,怎样恢复
配置管理 设备应该怎样配置
账户管理 谁在使用哪些资源
安全管理 谁被允许做什么

❗本节核心结论:

网络管理不仅是查看设备状态,还包括性能、故障、配置、账户和安全五个相互关联的方面。


21. 网络管理体系结构

典型网络管理体系包括以下组成部分:

21.1 管理服务器

管理服务器或控制器负责:

  • 收集设备数据;
  • 展示网络状态;
  • 保存历史记录;
  • 发送配置命令;
  • 处理告警;
  • 执行自动化管理逻辑。

21.2 被管理设备

被管理设备可以是:

  • 路由器;
  • 交换机;
  • 服务器;
  • 防火墙;
  • 无线接入点;
  • 其他网络设备。

21.3 Agent

Agent 是运行在被管理设备上的管理代理。

它负责:

  • 读取本地状态;
  • 维护可管理数据;
  • 响应管理服务器查询;
  • 接受配置修改;
  • 主动报告部分事件。

21.4 管理数据

管理数据可能包括:

  • 接口状态;
  • 流量统计;
  • 错误计数;
  • 路由表;
  • 设备配置;
  • CPU 与内存使用率;
  • 告警信息。

21.5 管理协议

管理服务器和设备之间通过管理协议交换:

  • 查询请求;
  • 查询响应;
  • 配置命令;
  • 事件通知;
  • 状态数据。

❗本节核心结论:

管理服务器通过协议与设备 Agent 交互,Agent 将设备内部状态和配置转化为可以远程查询和修改的管理数据。


22. CLI、SNMP/MIB 与 NETCONF/YANG

22.1 CLI

CLI 是命令行接口。

管理员可以登录单台设备并输入命令,例如:

  • 查看接口状态;
  • 配置 IP 地址;
  • 修改路由协议;
  • 查看路由表;
  • 保存配置。

CLI 的优点是直观、灵活,适合人工排查和小规模操作。

它的局限包括:

  • 不同厂商命令差异较大;
  • 大规模重复操作效率低;
  • 人工输入容易出错;
  • 配置结果不易统一验证;
  • 自动化处理需要额外解析文本输出。

22.2 SNMP 与 MIB

SNMP 是简单网络管理协议,主要用于远程读取和设置设备管理信息。

MIB 是管理信息库,用来组织和描述可被管理的数据对象,例如:

  • 接口状态;
  • 流量计数;
  • 错误数量;
  • 设备运行时间;
  • 系统信息。

可以将两者理解为:

1
2
MIB:定义有哪些管理数据、如何组织
SNMP:负责查询、设置和报告这些数据

SNMP 尤其常用于监控和传统设备管理。

22.3 NETCONF 与 YANG

NETCONF 面向结构化网络配置和状态管理。

YANG 是数据建模语言,用来定义:

  • 配置项的层次结构;
  • 字段类型;
  • 约束条件;
  • 状态数据;
  • 可执行操作。

二者关系可以概括为:

1
2
YANG:描述数据长什么样
NETCONF:负责远程读取和修改这些数据

与直接处理设备 CLI 文本相比,结构化模型更便于:

  • 自动化配置;
  • 验证输入是否合法;
  • 管理多台设备;
  • 比较和回滚配置;
  • 跨平台工具集成。

22.4 SNMP 与 NETCONF/YANG 的区别

对比维度 SNMP/MIB NETCONF/YANG
主要用途 监控、查询、简单设置 结构化配置与状态管理
数据模型 MIB YANG
配置能力 相对有限 更适合复杂配置
数据表达 管理对象 层次化结构模型
自动化程度 可自动化,但配置表达较弱 更适合现代自动化系统
典型场景 设备监控、遗留系统 多设备配置、现代网络管理

SNMP 并没有失去价值。它仍广泛用于状态监测和已有设备维护。NETCONF/YANG 则更适合要求结构化配置和自动化编排的现代网络。


❗本节核心结论:

CLI 面向人工逐设备操作,SNMP/MIB擅长监控管理数据,NETCONF/YANG 更强调结构化、可验证和自动化的网络配置。


23. OSPF、BGP、SDN、ICMP 与管理协议的职责边界

这些协议和机制都属于网络控制相关内容,但解决的问题不同。

机制 主要问题 是否计算路径
OSPF AS 内部怎样路由
BGP AS 之间怎样传播和选择路径
SDN 怎样集中编程和控制转发行为 可以
ICMP 怎样报告网络层错误和辅助诊断
SNMP 怎样查询和监测设备数据
NETCONF/YANG 怎样结构化配置和管理设备

可以将整个控制体系理解为:

1
2
3
4
5
6
7
8
9
10
11
OSPF、BGP:
决定路由和可达性

SDN:
以软件化方式统一计算和下发控制策略

ICMP:
反馈单个数据报或路径中的异常

SNMP、NETCONF/YANG:
长期监测、配置和维护网络设备

24. 重要对比

24.1 OSPF 与 BGP

对比维度 OSPF BGP
使用范围 AS 内部 AS 之间
协议类型 链路状态协议 路径向量协议
主要目标 性能、代价与内部收敛 策略、自治与扩展性
主要信息 拓扑、链路与代价 前缀及路径属性
典型路径依据 Dijkstra 计算 BGP 路径选择规则
是否公开内部拓扑 在 OSPF 范围内共享 不向其他 AS 公开全部内部拓扑
商业策略重要性 通常较低 非常重要

24.2 eBGP 与 iBGP

对比维度 eBGP iBGP
全称 External BGP Internal BGP
运行位置 不同 AS 之间 同一 AS 内部
主要作用 获得和发布外部路由 在 AS 内传播外部路由
典型节点 不同 AS 的网关路由器 同一 AS 的 BGP 路由器
是否等同 IGP

24.3 传统路由与 SDN

对比维度 传统路由 SDN
控制方式 路由器分布式运行协议 控制逻辑集中管理
设备职责 同时参与控制与转发 交换机重点执行流表
转发依据 主要根据目的地址 可根据多个首部字段
策略部署 逐设备、协议驱动 控制器统一编程
流量工程 通常较间接 更灵活
集中含义 不适用 逻辑集中,不一定物理集中

24.4 ICMP 与路由协议

对比维度 ICMP OSPF/BGP
核心目的 错误报告与诊断 路由信息传播和路径选择
是否生成路由
典型用途 Ping、Traceroute、不可达报告 建立路由表
处理对象 网络层事件与数据报异常 网络前缀和拓扑可达性

25. 常见误区

25.1 AS 就是一个子网

错误。

AS 是管理和路由政策边界,一个 AS 可以包含大量子网。

25.2 OSPF 用于整个互联网

错误。

OSPF 主要用于一个 AS 内部。跨 AS 的互联网路由主要由 BGP 完成。

25.3 BGP 总是选择 AS-PATH 最短的路径

错误。

AS-PATH 长度只是选择因素之一。本地偏好和管理策略可能具有更高优先级。

25.4 iBGP 是 AS 内部普通最短路径协议

错误。

iBGP 主要传播外部 BGP 路由。内部怎样到达出口,通常仍需 OSPF 等 IGP 支持。

25.5 NEXT-HOP 就是最终目的地

错误。

NEXT-HOP 是采用某条 BGP 路由时当前需要到达的网关,最终目的地是远端网络前缀。

25.6 热土豆路由选择全局最短路径

错误。

它优先减少流量在本 AS 内的传输距离,可能增加外部路径长度。

25.7 SDN 必须依赖一台中央机器

错误。

SDN 强调逻辑集中,控制器可以由多个物理节点分布式实现。

25.8 ICMP 属于传输层

错误。

ICMP 是网络层控制协议,只是由 IP 数据报承载。

25.9 ICMP 决定网络路由

错误。

ICMP报告错误和状态,不负责通过路由算法生成路径。

25.10 YANG 是一种传输协议

错误。

YANG 是数据建模语言;NETCONF 等协议负责传输和操作按照 YANG 描述的数据。


26. 知识结构总览


27. 复习清单

完成本章学习后,应能够回答:

  • 为什么真实互联网不能采用单层平面路由?
  • 路由规模问题和管理自治问题分别是什么?
  • AS 与子网有什么区别?
  • 网关路由器在自治系统边界承担什么职责?
  • AS 内部路由与 AS 间路由分别解决什么问题?
  • OSPF 为什么属于链路状态协议?
  • OSPF、LS 机制和 Dijkstra 算法有什么关系?
  • OSPF 报文为什么不依赖 TCP 或 UDP?
  • 大型 OSPF 网络为什么需要划分 Area?
  • Area 如何限制拓扑信息和故障传播范围?
  • BGP 为什么被称为连接互联网的协议?
  • 一条 BGP 路由由哪些基本内容组成?
  • eBGP 与 iBGP 分别承担什么任务?
  • 为什么 iBGP 不能简单等同于 OSPF?
  • BGP 为什么属于路径向量协议?
  • AS-PATH 如何帮助检测路由环路?
  • NEXT-HOP 与最终目的前缀有什么区别?
  • BGP 和内部路由协议怎样共同确定外部转发路径?
  • 为什么 BGP 不一定选择 AS-PATH 最短的路线?
  • 商业关系为什么会影响 BGP 路由策略?
  • 什么是热土豆路由?
  • 热土豆路由为什么不一定是全局最优?
  • 一个外部前缀如何通过 eBGP 和 iBGP 传播?
  • 什么是 BGP 路由泄漏和前缀劫持?
  • RPKI 主要验证什么?
  • 传统目的地址转发为什么难以表达复杂流量工程需求?
  • SDN 如何分离控制平面与数据平面?
  • SDN 控制器包含哪些主要层次?
  • OpenFlow 在控制器和交换机之间承担什么作用?
  • 为什么说 SDN 是逻辑集中,而非物理单点?
  • ICMP 主要解决什么问题?
  • ICMP 为什么由 IP 承载,却仍属于网络层?
  • ICMP 差错报文为什么要附带原始数据报的一部分?
  • Ping 主要利用哪类 ICMP 消息?
  • Traceroute 如何利用 TTL 和 ICMP 发现路径?
  • 网络管理与路由协议的关注点有何区别?
  • 网络管理的五类功能分别是什么?
  • 管理服务器、Agent 和被管理设备之间是什么关系?
  • CLI、SNMP/MIB 与 NETCONF/YANG 分别适合什么场景?
  • YANG 与 NETCONF 的职责有何区别?

结论

真实互联网不能依赖一个统一的平面路由算法。它通过自治系统划分管理边界,并将路径选择拆分为 AS 内部和 AS 之间两个层次。

OSPF 在自治系统内部传播链路状态,建立拓扑数据库并使用 Dijkstra 算法计算内部路径。对于规模较大的 AS,Area 进一步限制链路状态传播范围,使路由系统更具扩展性。

BGP 在不同自治系统之间传播网络前缀及路径属性。它使用 AS-PATH 表示经过的自治系统并检测环路,使用 NEXT-HOP 连接外部路径与内部出口。与单纯追求最短路径的算法不同,BGP 首先服从各自治系统的商业、管理和安全策略。

当传统基于目的地址的分布式路由不足以表达复杂流量工程时,SDN 通过逻辑集中控制器和可编程流表,提高网络控制的统一性和灵活性。

ICMP 为尽力而为的 IP 服务提供错误反馈和诊断支持,Ping 和 Traceroute 都建立在相关 ICMP 机制之上。SNMP、NETCONF 和 YANG 则将关注点从“路径怎样计算”扩展到“整个网络如何被持续监控、配置和维护”。

本章的完整逻辑可以压缩为:

1
2
3
4
5
6
7
8
9
10
11
12
互联网规模与自治需求

划分自治系统 AS

OSPF 计算 AS 内部路径
BGP 传播和选择 AS 间路径

SDN 提供更灵活的可编程控制

ICMP 提供错误反馈与诊断

SNMP、NETCONF/YANG 支持长期网络管理

❗最终结论: 现代互联网控制平面不是单一协议,而是一套分层协作体系:OSPF 解决内部路径,BGP 连接自治系统,SDN 统一编程转发行为,ICMP 反馈运行异常,网络管理协议保证设备和配置长期可控。