CS 168 · LECTURE 10 · 2026-09-29 · 路由

BGP 实现与 IP 数据报

把 BGP 从策略模型落到会话、增量更新与 IP 首部:一条跨域路如何进入路由器,又如何真正承载数据包。

版本快照:Fall 2026 官方课表与在线教材,核对日期 2026-09-02;官网仍标注 under construction,日期与政策可能变化。

  1. 互联网地基
  2. 路由
  3. 传输
  4. 应用与端到端
  5. 数据中心
  6. 群体通信
  7. 无线与移动

本章核心问题

控制平面选出的 BGP best path,经过哪些状态与协议边界才成为可用的数据平面下一跳?

1 · eBGP、iBGP 与 IGP

eBGP 会话跨 AS 建立,携带外部前缀和路径属性;iBGP 把这些候选分发给同一 AS 内的其他边界路由器。iBGP 自身不替代 OSPF/IS-IS:路由器仍需 IGP 找到 BGP next hop。

因此一次 FIB 安装常是递归解析:前缀 P 的 BGP 路线指向出口 E,IGP 再告诉本机如何到 E。若 next hop 不可达,BGP 属性再漂亮也不能转发。

2 · 为何 iBGP 需要额外结构

为避免环路,iBGP 学到的路线默认不再通告给其他 iBGP peer,所以朴素部署需要 full mesh。规模增大后使用 route reflector 或 confederation 降低会话数,但会隐藏部分路径并改变可见性。

控制平面可扩展不是只有表项数量,还包括会话数、更新风暴、策略计算和故障收敛。结构优化通常会以可见路径减少为代价。

3 · 增量更新与撤回

BGP 不周期性广播整张全球表;建立会话后发送初始状态,之后主要传播增量 UPDATE 与 withdrawn routes。TCP 提供可靠有序的会话传输,但无法保证策略配置正确或收敛快速。

keepalive/hold timer 检测会话活性。会话断开会撤去经该邻居学习的大量路线,可能触发级联重算,因此实现需要批处理与抑制不必要抖动。

4 · 从 FIB 回到 IP 包

数据包只携带目的 IP,不携带完整 AS_PATH。BGP 属性在控制平面决定 FIB,随后每跳只做前缀查找、TTL 处理与下一跳封装。ICMP 和 traceroute 看到的是实际数据路径,未必直接揭示控制策略。

IPv4 首部 Protocol 字段支持上层解复用,TTL 防止瞬态环路无限消耗资源,checksum 保护首部。BGP 决策和 IP 转发是不同协议层,却通过 FIB 发生因果连接。

纠错:最容易带走的错误模型

闭卷推演

画三个边界路由器的 AS:eBGP 学到前缀,iBGP 分发,OSPF 到出口。人为让 IGP 到首选出口失效,解释 FIB 怎样变化。

检查:BGP 路线的 next hop 在本地 IGP 中不可达时,最合理的结果是?

机制工作台:before → event → after

Before / local state

UPDATE 到达后修改 Adj-RIB-In,decision process 选 best,Loc-RIB/FIB 改变,再按 export policy 生成 UPDATE。

Event / after / output

UPDATE 到达后修改 Adj-RIB-In,decision process 选 best,Loc-RIB/FIB 改变,再按 export policy 生成 UPDATE。

检查:判断一个实现分支是否必要,最有力的问题是什么?

Explain It Yourself

指出 import、selection、export 三处分别查什么 state。

自检方法

答案必须出现 packet/message、local state/table、触发 event、after state 与 output;只给定义不算完成。

一手资料

正文是 CourseStack 的中文解释与重新绘制的教学例子;官方页面负责课程原始定义,历史仓库只提供你的实现证据。