计算机网络自顶向下方法33——网络层 路由器工作原理 输入端口处理和基于目的地转发 交换 输出端口处理
网络层深度解析(二):路由器工作原理详解
路由器是互联网的“交通枢纽”,其核心任务是以极高的速度将数据包从输入链路移动到正确的输出链路。理解其内部工作机制是理解网络层的关键。
一、路由器总体架构
一台路由器的核心组件可以抽象为四个部分,它们共同协作完成包转发任务:

输入端口:数据包进入的入口,执行关键的转发查找。
交换结构:连接输入和输出端口的“网络”,负责在路由器内部传输数据。
输出端口:数据包离开的出口,执行排队和发送。
路由选择处理器:运行控制平面功能,计算并维护路由表/转发表。
二、输入端口处理与基于目的地的转发
输入端口的处理流程决定了数据包的“下一跳”命运。
1. 输入端口处理流程

物理层和链路层处理:负责信号的接收、比特流的恢复以及数据链路层帧的解封装,最终将IP数据包提取出来。
查找与转发:这是输入端口最核心、要求速度最高的任务。
2. 基于目的地的转发详解
转发表:存在于每个输入端口。它包含一系列
(目的网络前缀, 输出链路接口)的映射关系。最长前缀匹配规则:
问题:一个IP地址可能匹配转发表中的多个网络前缀。
规则:在所有匹配的表项中,选择网络前缀最长的那一个。
逻辑:更长的前缀意味着更具体的网络范围,因此是更精确的路由。
3. 转发示例
假设转发表如下:
| 目的网络前缀 | 输出接口 |
|---|---|
| 192.168.1.0/24 | 1 |
| 192.168.0.0/16 | 2 |
| 0.0.0.0/0 (默认路由) | 3 |
当一个目的IP地址为 192.168.1.10 的数据包到达时:
它与
192.168.1.0/24匹配(前24位相同)。它与
192.168.0.0/16匹配(前16位相同)。它与
0.0.0.0/0匹配(总是匹配)。根据最长前缀匹配,选择前缀长度为24的表项,因此该数据包将从接口1转发出去。
4. 实现技术
为了在纳秒级完成查找,现代路由器通常使用专用硬件(如三态内容可寻址存储器,TCAM)来实现转发表。
三、交换结构
交换结构是路由器的“背板网络”,负责在输入和输出端口之间搬运数据。主要有三种类型:
1. 经内存交换
最早期的路由器结构,CPU直接参与转发。
工作方式:输入端口先将包复制到处理器内存中,处理器提取目的地址并查找转发表,然后将包复制到输出端口的缓存中。
特点:转发速率受内存带宽限制(通常较慢)。
2. 经总线交换
工作方式:输入端口通过一条共享总线将数据包直接传输到输出端口。数据包上带有一个标签,指示输出端口。
特点:
优点:结构简单,不需要处理器干预。
缺点:总线带宽成为瓶颈,因为一次只能传输一个数据包。
3. 经互联网络交换
工作方式:使用一个更复杂的交换矩阵,由多条并行的总线构成,允许多个数据包同时通过交换结构。
特点:
优点:克服了总线带宽的限制,极大地提高了路由器的吞吐量。
实现:例如,纵横式交换器可以在所有输入和输出端口之间建立并行的连接。
应用:现代高性能核心路由器普遍采用此种方式。
四、输出端口处理
输出端口负责接收从交换结构送来的数据包,并准备将其发送到链路上。
1. 输出端口处理流程
text
从交换结构接收数据包 -> [ 缓存/排队 ] -> [ 链路层处理(封装成帧) ] -> [ 物理层处理(发送比特流) ] -> 输出链路
2. 核心挑战:分组调度
当多个数据包同时指向同一个输出端口时,就发生了竞争。输出端口必须决定发送数据包的顺序,这就是分组调度。
调度算法:
先进先出:最简单的算法,按到达顺序发送。
优先级排队:将流量分类到不同的优先级队列,高优先级队列总是优先发送。
轮询:在所有非空队列间轮流服务。
加权公平排队:为每个队列分配一个权重,从而保证每条流量都能获得公平的带宽份额。
3. 缓存管理与丢包
缓存:输出端口设有缓存(队列),以应对短时间内数据包到达速率超过发送速率的情况。
丢包:当缓存被完全填满时,新到达的数据包将因无处存放而被丢弃,这称为丢包或缓冲区溢出。
主动队列管理:为了避免“锁死”现象,可以使用像随机早期检测这样的算法,在队列满之前就概率性地丢弃或标记数据包,以此来向发送方提供早期的拥塞信号。
总结
路由器的工作原理是一个精妙的系统工程:
输入端口通过最长前缀匹配算法,以硬件速度决定数据包的出口。
交换结构作为内部高速公路,决定了路由器的内部交换能力。
输出端口通过排队和调度算法,管理着数据包的发送顺序,并在拥塞时执行丢包策略。
路由选择处理器在后台运行控制平面协议,为所有端口的转发表提供“导航数据”。
这四个部分各司其职、紧密协作,共同保证了全球互联网数据洪流的顺畅流动。
