跳转至

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。