Chapter 4: Network Layer Data Plane¶
一页速记¶
网络层(network layer)把传输层报文段封装成数据报。数据平面(data plane)在单台路由器内执行转发;控制平面(control plane)负责计算全网路径和转发表。互联网协议(Internet Protocol,IP)提供尽力而为服务,不保证交付、顺序、带宽或时延。
1. 路由器与最长前缀匹配¶
转发(forwarding)把分组从输入端口送到输出端口;路由(routing)决定端到端路径。
路由器由输入端口、交换结构(switching fabric)、输出端口和路由处理器组成。输入端口查表,交换结构搬运分组,输出端口缓冲和调度。
最长前缀匹配(longest prefix matching)从所有匹配项中选择前缀最长的条目。例如目的地址同时匹配 /16 和 /24 时,选择 /24。
交换结构可以使用内存、总线或互连网络。交换能力不足会引起输入排队;多个输入集中发送到同一输出会引起输出排队。队头阻塞(Head-of-Line blocking,HOL)指前面的分组等待繁忙输出,阻挡后面本可前往空闲输出的分组。
2. 缓冲与调度¶
缓冲溢出会导致丢包。课程给出的缓冲经验值为 \(B\approx RTT\times C\);存在 N 条独立 TCP 流时,另一经验值为 \(B\approx RTT\times C/\sqrt N\)。两者是估算规则。
| 调度方式 | 原理 |
|---|---|
| 先入先出(First-In First-Out,FIFO) | 按到达顺序发送 |
| 优先级调度(priority scheduling) | 优先发送最高优先级队列,低优先级可能长期等待 |
| 轮询(Round Robin,RR) | 循环访问各类队列,每次发送一个完整分组 |
| 加权公平排队(Weighted Fair Queuing,WFQ) | 根据权重分配服务份额 |
调度决定发谁,丢弃策略决定满队列时丢谁,例如尾丢弃、按优先级丢弃或随机丢弃。
3. IPv4 数据报与分片¶
互联网协议第 4 版(Internet Protocol version 4,IPv4)使用 32 位地址。首部包含版本、首部长度、总长度、标识、分片标志、分片偏移、生存时间(Time To Live,TTL)、上层协议、首部校验和及源目的地址。
每经过路由器 TTL 减 1,归零时丢弃,防止分组无限循环。IPv4 校验和只覆盖首部。
最大传输单元(Maximum Transmission Unit,MTU)限制链路可承载的数据报大小。数据报超过 MTU 时可能分片,最终由目的主机重组。
- 各片共享原数据报标识。
- 分片偏移以 8 字节为单位,按原始有效载荷计算。
- 除最后一片外,更多分片标志为 1。
- 每片都需要自己的 IP 首部。
课程例子:4000 字节数据报、20 字节首部、MTU=1500,原有效载荷为 3980 字节。
| 分片 | 总长度 | 有效载荷 | 偏移 | 更多分片 |
|---|---|---|---|---|
| 1 | 1500 | 1480 | 0 | 1 |
| 2 | 1500 | 1480 | 185 | 1 |
| 3 | 1040 | 1020 | 370 | 0 |
4. 子网、掩码与地址聚合¶
子网(subnet)中的接口可以通过链路层直接通信,无需跨越路由器。地址由网络前缀与主机部分构成,地址与子网掩码按位与得到网络地址。
无类别域间路由(Classless Inter-Domain Routing,CIDR)使用 a.b.c.d/x 表示前 x 位为网络前缀,避免旧式 A/B/C 分类造成浪费。
例如 137.189.178.73/17:掩码为 255.255.128.0,网络地址为 137.189.128.0。地址块总量为 \(2^{32-x}\);常规广播子网通常扣除网络地址与广播地址后分配主机。
路由聚合(route aggregation)把连续且对齐的地址块汇总为更短前缀。例外路由可用更长前缀覆盖聚合条目。
5. DHCP¶
动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)允许主机动态获取并续租地址,同时获得子网掩码、默认网关和域名系统(Domain Name System,DNS)服务器信息。
典型四步为 Discover、Offer、Request、ACK。客户端使用端口 68,服务器使用端口 67,底层为用户数据报协议(User Datagram Protocol,UDP)。初始客户端尚无地址,可使用源地址 0.0.0.0 和广播目的地址 255.255.255.255。
6. NAT¶
网络地址转换(Network Address Translation,NAT)让多个内部私有地址共享公网地址。课程中的端口转换维护“内部 IP:端口”和“公网 IP:新端口”的映射。
出站时改写源地址和源端口;入站时查表恢复目的内部地址和端口,同时更新相关校验和。NAT 节省公网地址,但增加状态维护,影响端到端连接和外部主动访问。
7. IPv6 与隧道¶
互联网协议第 6 版(Internet Protocol version 6,IPv6)使用 128 位地址和固定 40 字节基本首部。首部包含流量类别、流标签、有效载荷长度、下一首部、跳数限制及源目的地址。
- 不使用基本首部校验和,减少逐跳处理。
- 路由器不进行 IPv6 分片,过大分组需要由源端处理。
- IPv4 与 IPv6 逐步共存;隧道(tunneling)把 IPv6 数据报封装进 IPv4 数据报,穿过 IPv4 网络后解封装。
8. 通用转发与 SDN¶
软件定义网络(Software-Defined Networking,SDN)由逻辑集中控制器计算和下发流表。通用转发(generalized forwarding)采用匹配加动作(match-plus-action),可以匹配多个协议层字段。
OpenFlow 流表包含匹配字段、动作和计数器。动作可为转发、丢弃、修改字段或发送给控制器。路由器、交换机、防火墙和地址转换都可以用不同匹配条件及动作表达。
易错点与自测¶
- 最长匹配关注前缀位数,不是查表顺序。
- 分片长度包含首部,偏移不包含各片新加的首部。
- 子网掩码决定网络边界,不能只看地址第一字节判断。
- NAT 转换地址和端口,DHCP 分配配置,两者作用不同。
Solution:分片自测
若有效载荷为 3000 字节、首部为 20 字节、MTU 为 1500,则非末片最多携带 1480 字节。三片载荷分别为 1480、1480、40,总长度为 1500、1500、60,偏移为 0、185、370。