目录
导语
大家好呀~第4章我们学习了网络层的数据平面(Data Plane) ------搞懂了一个数据包到达路由器后,是怎么被查找转发表、交换到输出端口、然后发送出去的。但是有一个问题我们还没回答:路由器的转发表是怎么来的? 谁在维护这些转发表?这就是**控制平面(Control Plane)**要解决的问题。
如果说数据平面是路由器的"手脚"------负责快速转发数据包,那控制平面就是路由器的"大脑"------负责计算路由、维护转发表。没有控制平面,路由器就是一个"瞎子",不知道该把包往哪送。控制平面决定了整个网络的拓扑结构和数据流向,是网络层真正的"灵魂"。
第5章是整本书中理论性最强、也最精彩的一章。我们会学习两种经典的路由选择算法(链路状态和距离向量),然后看看它们在真实因特网中的应用------OSPF(自治系统内部)和BGP(自治系统之间),再了解SDN控制平面、ICMP协议和网络管理。准备好了吗?让我们走进网络层的"大脑"~

一、控制平面的作用
1. 控制平面 vs 数据平面
回顾一下4.1节的内容:网络层分为数据平面和控制平面。
- 数据平面:per-router,本地操作,微秒级。每个路由器根据转发表转发数据包,速度极快。
- 控制平面:网络范围,全局操作,秒级甚至分钟级。所有路由器协同工作,计算和维护转发表。
控制平面的核心任务就是:计算出从每个源到每个目的地的"好"路径,然后把这些路径信息下发到每个路由器的转发表中。
通俗类比:数据平面就像每个路口的红绿灯------车辆到了路口,根据红绿灯指示快速通过。控制平面就像城市交通指挥中心------根据全市的车流量、道路状况,计算每个路口的红绿灯时长和转向规则,然后下发到每个路口。没有指挥中心,红绿灯就不知道该怎么设置。
2. 两种控制平面实现方式
控制平面有两种典型的实现方式,我们在4.1节已经初步接触过:
方式一:传统方式------每台路由器自己算(分布式)
每台路由器都运行路由选择协议,和邻居交换路由信息,自己计算到各个目的地的最短路径,然后生成转发表。这是传统因特网的方式------OSPF和BGP都属于这类。
好处:分布式、容错性好,一台路由器挂了不影响其他路由器。坏处:每台路由器都要跑完整的路由协议,配置复杂,难以集中管理,新功能部署慢。
方式二:SDN方式------集中控制器算(集中式)
把路由计算功能从路由器中抽出来,放到一个**远程控制器(controller)**中。控制器掌握全网拓扑,计算所有路由器的转发表,然后通过OpenFlow等协议下发给路由器。路由器只保留数据平面功能(转发),不再运行路由协议。
好处:集中管理、灵活可编程、容易部署新功能。坏处:控制器可能成为单点故障(需要做集群),控制器和路由器之间的通信延迟可能影响路由收敛。
这一章我们会同时学习这两种方式:5.2-5.4节讲传统的分布式路由选择(OSPF、BGP),5.5节讲SDN集中控制平面。
3. 路由选择算法的输入和输出
不管是分布式还是集中式,路由选择算法的本质都是一样的:
- 输入:网络拓扑图(节点=路由器,边=链路,边的权重=链路代价)
- 输出:从每个源到每个目的地的最短路径(或"好"路径)
- 最终产物:每个路由器的转发表(目的前缀→输出端口/下一跳)
链路代价(link cost)可以是多种度量值:带宽、延迟、跳数、拥塞程度、金钱成本等。不同的路由协议使用不同的代价度量。比如RIP用跳数,OSPF可以用带宽,BGP用策略(AS路径长度等)。
二、路由选择算法的分类

路由选择算法可以从多个维度分类:
1. 全局式 vs 分布式
- 全局式路由选择算法(Global) :算法掌握全网拓扑和所有链路代价,然后计算最短路径。典型代表是链路状态算法(Link State,LS),比如OSPF。所有路由器都知道全网拓扑,各自用Dijkstra算法计算最短路径。
- 分布式路由选择算法(Decentralized) :算法只掌握局部信息(邻居的代价和距离向量),通过迭代计算和邻居交换信息,逐步收敛到最短路径。典型代表是距离向量算法(Distance Vector,DV),比如RIP和BGP的基础。
2. 静态 vs 动态
- 静态路由(Static):路由由人工手动配置,不会自动变化。适合小型网络或特殊场景(如默认路由)。简单但不灵活,拓扑变化时需要手动更新。
- 动态路由(Dynamic):路由通过路由协议自动学习和更新,拓扑变化时自动收敛。适合大型网络。OSPF、BGP都是动态路由协议。
3. 负载敏感 vs 负载迟钝
- 负载敏感(Load-Sensitive):链路代价会根据当前拥塞程度动态变化。早期的ARPAnet使用这种方式,但因为路由振荡(route oscillation)问题被放弃了。
- 负载迟钝(Load-Insensitive):链路代价不随拥塞变化,只和带宽、跳数等静态因素有关。现在的因特网路由协议(OSPF、BGP)都是负载迟钝的,避免了路由振荡。
4. 本章重点学习的两种算法
5.2节我们会深入学习两种最经典的路由选择算法:
- 链路状态算法(LS):全局式,用Dijkstra最短路径算法。所有路由器泛洪链路状态信息,每个路由器独立计算最短路径树。
- 距离向量算法(DV):分布式,用Bellman-Ford方程。每个路由器维护一个距离向量,和邻居交换,迭代更新。有"好消息传得快,坏消息传得慢"的特点,可能出现计数到无穷问题。
这两种算法是理解所有现代路由协议的基础。OSPF是LS算法的工程实现,RIP是DV算法的工程实现,BGP则是DV算法的策略增强版。
三、本章内容导航
第5章内容丰富,我们按以下顺序学习:
- 5.1 概述(本节):控制平面的作用、路由选择算法分类。
- 5.2 路由选择算法:链路状态算法(Dijkstra)和距离向量算法(Bellman-Ford),理论基础。
- 5.3 OSPF:因特网自治系统内部的路由选择协议,LS算法的实际应用。
- 5.4 BGP:ISP之间的路由选择协议,因特网的" glue ",策略路由。
- 5.5 SDN控制平面:集中式控制平面,SDN控制器和OpenFlow协议。
- 5.6 ICMP:因特网控制报文协议,ping和traceroute的底层原理。
- 5.7 网络管理:SNMP、NETCONF/YANG,如何管理和监控网络设备。
- 5.8 小结与实验:全章总结、课后习题、Wireshark ICMP实验。
本节核心总结(必看)
5.1节是控制平面的入门,核心要点:
一、控制平面的作用
- 数据平面是"手脚"(转发,微秒级),控制平面是"大脑"(计算路由,秒级)
- 控制平面的核心任务:计算最短路径,生成和维护转发表
- 两种实现:传统分布式(每台路由器自己算)vs SDN集中式(控制器统一算)
二、路由选择算法分类
- 全局式(LS/Dijkstra)vs 分布式(DV/Bellman-Ford)
- 静态 vs 动态
- 负载敏感 vs 负载迟钝(现代协议都是负载迟钝)
- 链路代价可以是带宽、延迟、跳数、策略等
三、本章路线
- 5.2理论算法 → 5.3 OSPF(AS内)→ 5.4 BGP(AS间)→ 5.5 SDN → 5.6 ICMP → 5.7网络管理 → 5.8总结
关键概念清单
- 控制平面(Control Plane):计算和维护转发表的网络功能
- 路由选择算法(Routing Algorithm):计算最短路径的算法
- 链路状态(Link State,LS):全局式路由算法
- 距离向量(Distance Vector,DV):分布式路由算法
- 链路代价(Link Cost):链路的度量值
- 转发表(Forwarding Table):数据平面使用的快速查找表
- 自治系统(Autonomous System,AS):统一管理的一组路由器
结语
这一节我们建立了控制平面的整体认知:控制平面是网络的"大脑",负责计算路由和维护转发表;路由选择算法分为全局式(LS)和分布式(DV)两大类;传统因特网用分布式路由,SDN用集中式控制。
理解了这些基本概念后,下一节5.2我们将深入两种最经典的路由选择算法------链路状态算法和距离向量算法。这两种算法是整个网络层控制平面的理论基石,OSPF、RIP、BGP等所有实际路由协议都建立在它们之上。Dijkstra算法和Bellman-Ford方程也是面试和考试的绝对高频考点,让我们带着期待进入下一节吧!
如果你觉得这篇笔记对你有帮助,欢迎点赞收藏~有问题也欢迎留言讨论,我们一起进步!