斯坦福 CS144 计算机网络播客:路由基础到 STP 二层路由和 BGP 三层路由算法
互联网如何将全球数十亿台设备连接在一起?当你打开浏览器访问一个网站时,数据包是如何穿越大半个地球,精准地找到目标服务器,并将内容呈现在你眼前的?这一切的背后,都离不开一个核心技术—— 路由(Routing) 。
路由的基本构件
什么是路由器?简单来说, 路由器(Router) 是一种连接两个或多个网络的设备。它的核心任务是接收传入的数据包,检查其目标地址,然后决定将它转发到哪一个网络,最终送达目的地。你可以把它想象成全球邮政系统中的一个中转站,它不生产信件(数据),只负责高效地分拣和派送。
路由器如何做出决策?路由器的决策依据是一张内置的地图,称为 转发表(Forwarding Table) 。这张表里并不记录互联网上每一台设备的具体地址,而是使用一种更高效的方式—— 路由前缀(Routing Prefix) 。
一个路由前缀代表了一个地址范围,比如 192.0.2.0/24 就代表了从 192.0.2.0 到 192.0.2.255 的所有 IP 地址。当一个数据包到达时,路由器会用它的目标 IP 地址去匹配转发表中的所有前缀。如果有多条前缀都能匹配上,路由器会遵循 最长前缀匹配(Longest Prefix Match) 原则,选择最具体(也就是前缀最长)的那条路由。
这里有两个概念:
水平分割(Horizontal partitioning) :把网络按“横向”切分为若干自治单元——例如按地理区域、运营商或租户划分的 AS、IXP、区域 POP 等。水平分割利于规模化扩展、流量局部化和政策隔离(如本地出站优先、本地中转或对等策略),常见的实践包括区域路由、Anycast/CDN 节点分布和多区域自治系统设计。垂直分割(Vertical partitioning) :把网络按“纵向”层次或职责划分,例如将二层转发、三层路由、控制平面、管理/监控平面或服务功能(防火墙、负载均衡)分离开来。垂直分割可以提高安全性与模块化(例如 VLAN/VRF 隔离、SDN 控制器与转发器分离、EVPN/VXLAN 的 overlay 下发与 underlay 转发分工),并使得不同层可以独立演进或做精细化策略。水平分割决定“谁跟谁互通、哪条流量本地化”,直接影响商业关系与流量走向;垂直分割决定“谁做决策、谁做转发与隔离”,直接影响可管理性、安全性与演进路径。
互联网的宏观结构:自治系统
互联网并不是一个单一、统一的网络。它是由成千上万个独立管理的网络组成的“网络的网络”。每一个这样的独立网络被称为一个 自治系统(Autonomous System, AS) 。
一个 AS 通常由单一实体(如谷歌、AT&T、一所大学)管理,并拥有统一的路由策略。每个 AS 都有一个全球唯一的编号,即 自治系统编号(Autonomous System Number, ASN) ,早期是 16 位,现在已扩展到 32 位。正是这些 AS 之间的相互协作,才构成了我们今天所知的全球互联网。
互联网的架构也经历了一系列演变:
1995 年前 :由美国政府运营的单一骨干网构成,结构简单。1995-2005 年 :商业化转型,多个商业网络运营商共同构成了骨干网,催生了用于在不同 AS 间交换路由信息的 边界网关协议(Border Gateway Protocol, BGP) 。如今 :互联网结构趋于扁平化和整合。大型内容提供商(如 Google, Netflix)构建了自己的全球网络,它们与传统的电信运营商共同构成了互联网的核心。这些巨头通过 内容分发网络(Content Delivery Networks, CDN) 将内容部署到离用户更近的地方,极大地改变了全球流量的模式。网络间的互联需要物理设施,主要通过两种方式实现:
互联网交换点(Internet Exchange Point, IXP) :一个公共的物理设施,允许多个 AS 在此通过交换机实现多边连接。直接互联(Private Peering) :两个网络之间的专用双边物理连接。路由背后的商业逻辑
AS 之间的路由选择不仅仅是技术问题,更深刻地受到商业关系的驱动。理解这些关系是理解 BGP 路由策略的关键。
中转(Transit)与对等(Peering)AS 间的商业关系主要分为两种:
中转(Transit) :这是一种客户与提供商的关系。客户 AS 付费给提供商 AS,以获得访问整个互联网的路径。提供商会向其客户通告它所知道的所有路由(来自它的其他客户、对等方和上游提供商)。资金从客户流向提供商。对等(Peering) :这是一种平等的合作关系。当两个 AS 之间有大量且大致对等的流量交换时,它们可能会选择建立对等关系。这种关系通常是 结算免费(settlement-free) 的,即双方互不收费。在对等关系中,一个 AS 只会向其对等方通告自己网络以及其客户网络的路由, 绝不会 通告从其他提供商或对等方学到的路由。这个核心原则可以总结为 “绝不为你的对等方或提供商提供免费中转服务” 。
路由策略与过滤基于上述商业关系,AS 在向其邻居通告路由时会实施严格的策略和过滤:
向客户通告 :通告所有路由(自身的、来自其他客户的、来自对等方的、来自提供商的),因为客户付费就是为了获得完整的互联网可达性。向提供商通告 :只通告自身以及来自其客户的路由。因为 AS 不会付费让提供商去访问它的其他邻居。向对等方通告 :只通告自身以及来自其客户的路由。这是为了避免免费为对等方提供中转服务。这些策略构成了 BGP 的核心配置,决定了全球互联网流量的走向。
自治系统(AS)详解:一个形象化的例子
上面的概念可能依然有些抽象。让我们通过一个更具体的例子来理解 AS 到底是谁,以及商业策略是如何在现实中运作的。
AS 到底是谁?拥有 ASN 的实体多种多样,我们可以大致分为几类:
一级运营商(Tier-1 Provider) :如美国的 AT&T (AS7018)、Lumen (AS3356),欧洲的 Arelion (AS1299)。它们是互联网的顶级骨干网,网络遍布全球。它们之间通过对等关系互联,并且不向任何人购买中转服务。它们是互联网路由表的“源头”。大型内容提供商(Content Provider) :如 Google (AS15169)、Meta/Facebook (AS32934)、Netflix (AS2906)。它们为了优化用户体验,也构建了庞大的全球网络。它们会积极地与各级运营商建立对等关系,以便将内容更快地送达用户。区域性 ISP 或接入网 :比如你家或公司所使用的宽带服务提供商。它们通常是一个国家或地区性的网络,需要向上级运营商(如一级或二级运营商)购买中转服务,以连接到全球互联网。大学和科研机构 :许多大型学术机构也拥有自己的 AS,用于科研和教学。场景剧场:一次视频访问的路由之旅假设有以下参与者:
你 :一位普通用户。LocalISP (AS65001) :为你提供宽带服务的本地运营商。ContentProvider (AS65002) :一家大型视频流媒体公司。Tier1-Carrier (AS701) :一家全球一级运营商。它们的商业关系如下:
现在,你想观看 ContentProvider 上的视频,数据包的路由策略将这样执行:
LocalISP 的视角 :它是一个客户,向 Tier1-Carrier 付费购买中转服务。因此,Tier1-Carrier 会向 LocalISP 通告它所知道的 所有 互联网路由,其中就包括去往 ContentProvider (AS65002) 的路由。反过来,LocalISP 只会向 Tier1-Carrier 通告自己的用户地址段。ContentProvider 的视角 :它和 Tier1-Carrier 是对等关系,因为它们之间有巨大的、对等的流量交换。ContentProvider 会向 Tier1-Carrier 通告自己的服务器 IP 地址段。Tier1-Carrier 则会向 ContentProvider 通告 自己以及自己所有客户(包括 LocalISP) 的路由。Tier1-Carrier 的视角(策略核心)它从客户 LocalISP 学到了 LocalISP 的用户路由,它会把这条路由通告给 全世界 (包括它的其他客户、对等方如 ContentProvider、以及其他提供商)。因为让全世界都能访问到自己的客户,是它提供服务的价值所在。
它从对等方 ContentProvider 学到了视频服务器的路由,它只会把这条路由通告给 自己的客户 (如 LocalISP)。它 绝不会 把这条从对等方学来的路由,再通告给它的其他对等方或提供商。否则,就等于在免费帮 ContentProvider 把流量转发出去了,这违背了商业原则。
通过这个例子,我们可以清晰地看到,BGP 路由的传播路径完全由这些预设的商业策略所主导,而不仅仅是寻找技术上的“最短路径”。
域内路由:寻找最短路径
在一个 AS 内部,路由器之间也需要协议来发现彼此并计算到达 AS 内各个目标的最佳路径。这类协议被称为 内部网关协议(Interior Gateway Protocol, IGP) 。其目标通常是找到成本最低的路径,构建一棵 最小成本生成树(minimum-cost spanning tree) 。
两种核心算法历史上出现过多种路由算法,但现代网络主要依赖以下两大类:
距离矢量算法(Distance-Vector Algorithm)距离矢量算法的核心思想是“听信邻居”。每个路由器维护一张表,记录着它到所有已知目的地的“距离”(成本),并将这张表(即距离矢量)分享给它的直连邻居。
代表协议 :路由信息协议(Routing Information Protocol, RIP) ,基于经典的 Bellman-Ford 算法。工作方式 :路由器收到邻居的距离矢量后,会将其与自己的信息进行比较。如果通过某个邻居能以更低的成本到达目的地,它就会更新自己的路由表。这个过程不断迭代,最终会收敛。致命缺陷 :存在 “慢收敛到无穷大”(counting to infinity) 问题。当一个网络链路断开时,“坏消息”的传播速度非常慢,可能导致路由器在很长一段时间内相信一条已经失效的路径,甚至形成路由环路。虽然有 毒性反转(Poison Reverse) 等技术来缓解,但无法根治。因此,RIP 在现代网络中已基本被淘汰。链路状态算法(Link-State Algorithm)链路状态算法的核心思想是“全局地图”。每个路由器都负责发现并通告其所有直连链路的状态(如链路成本)。这些信息会在整个 AS 内被广播。
代表协议 : 开放最短路径优先(Open Shortest Path First, OSPF) ,基于著名的 Dijkstra 算法。工作方式信息共享 :每个路由器通过泛洪(Flooding)机制,将自己的链路状态信息发送给 AS 内的所有其他路由器。
构建地图 :最终,每个路由器都拥有了整个 AS 的完整网络拓扑图。
本地计算 :每个路由器独立地、以自己为根节点运行 Dijkstra 算法,计算出到所有其他节点的最短路径树,并据此生成自己的转发表。
优势 :由于每个路由器都有全局视野,收敛速度快,且能有效避免路由环路。这使得 OSPF 成为当今最主流的 IGP 之一。热土豆路由(Hot-Potato Routing)这是一个非常形象的路由策略,常见于大型 AS 内部。其核心思想是: 尽快将数据包扔出自己的网络 。当一个 AS 有多个出口可以到达某个外部目的地时,它内部的路由器会选择一条路径,使得数据包在自己网络内经过的成本(IGP 成本)最低。这相当于把路由的“烫手山芋”尽快丢给下一个 AS。
域间路由的王者:BGP
当数据包需要跨越 AS 边界时, IGP 协议就无能为力了。这时, 边界网关协议(Border Gateway Protocol, BGP) 登上了舞台。BGP 是迄今为止唯一被广泛使用的 外部网关协议(Exterior Gateway Protocol, EGP) 。
BGP 的独特之处:路径矢量协议BGP 既不是距离矢量,也不是链路状态协议,它是一种 路径矢量协议(Path-Vector Protocol) 。BGP 在通告路由时,不仅包含目标前缀,还附带了一条关键属性: AS 路径(AS-PATH) 。
AS-PATH 记录了该路由通告所经过的完整的 AS 序列。
AS-PATH 属性带来了两个核心好处:
无环路 :路由器收到一条 BGP 更新时,会检查 AS-PATH。如果发现自己的 ASN 已经存在于路径中,就意味着这是一个环路,该路由将被丢弃。策略基础 :AS-PATH 的长度(经过的 AS 数量)成为衡量路径好坏的一个重要指标,但更重要的是,AS 可以基于 AS-PATH 以及其他属性来实施复杂的路由策略。BGP 路径选择过程BGP 最重要的特性就是其强大的策略能力。当一台 BGP 路由器收到关于同一个目标前缀的多条路径时,它会按照一个严格的决策流程来选择最佳路径。这个过程通常遵循以下顺序:
选择本地优先级(LOCAL_PREF)最高的路径 :这是一个只在 AS 内部传递的属性,数值越高越优先。网络管理员通常用它来区分客户、对等方和提供商的路由(客户 > 对等 > 提供商)。选择 AS 路径(AS-PATH)最短的路径 :路径中经过的 AS 数量越少越好。考虑多出口鉴别器(MED) :如果多个路径来自同一个邻居 AS,MED 值较低的路径会被优先选择。优先选择 eBGP 路径而非 iBGP 路径 :eBGP 用于 AS 之间,iBGP 用于 AS 内部。路由器倾向于选择从外部邻居直接学到的路径。选择到下一跳 IGP 成本最低的路径 :这就是热土豆路由的应用。当一切都相同时,通过路由器 ID(Router ID)决胜 :选择来自 BGP 路由器 ID 值最低的邻居的路径。BGP 的挑战与问题尽管 BGP 是互联网的基石,但它也存在一些固有的问题:
配置复杂 :BGP 策略配置复杂且容易出错,一个小小的错误可能引发全球性的网络中断,这被称为路由的“蝴蝶效应”。缺乏安全 :BGP 协议在设计之初没有内置强大的认证机制。这使得 BGP 劫持(BGP Hijacking) 成为可能,攻击者可以恶意通告不属于自己的 IP 前缀,将流量重定向到自己控制的设备上,从而窃取数据或造成服务中断。收敛缓慢 :当网络发生变化时,BGP 的收敛过程可能需要几分钟,期间可能导致数据包丢失或路由循环。二层网络与环路:以太网交换、环路问题与 STP 系列协议
二层(链路层)网络主要由以太网交换机组成。交换机通过学习 MAC 地址并基于目的 MAC 转发以太网帧,从而实现局域网内的点到点通信。然而,以太网帧本身没有像 IP 的 TTL(生存时间)字段这一类内置的“寿命”机制;一旦网络中存在拓扑环路,帧会被设备不断转发、复制,迅速导致 广播风暴(broadcast storm) 、MAC 表不稳定(MAC 地址在不同端口间不断“翻转”)以及链路饱和——整个二层域可能因此“瘫痪”。
为了解决二层环路问题,工程上产生了若干机制与协议,其中最经典也最广泛部署的是 生成树协议(Spanning Tree Protocol, STP) 及其改进版本(如 RSTP、MSTP)。同时在数据中心与大规模网络中,也出现了基于链路状态的二层替代方案(TRILL、SPB、EVPN+VxLAN 等)来实现多路径、快速收敛与更高的带宽利用率。
以太网交换的基本工作MAC 学习(CAM 表) :交换机在收到帧时记录源 MAC 与收到该帧的接口(即学习),并将此信息放入 MAC 地址表(有时称 CAM)。条目有寿命(aging time),若长时间未见到该 MAC,条目会被老化删除。基于目的 MAC 转发 :若目的 MAC 在表中有对应端口,则只在该端口转发;若未知或为广播/多播,则在除了接收端口以外的所有端口泛洪(flood)。泛洪与广播 :ARP 请求、DHCP 广播等会被泛洪到同一二层域内的所有端口。这些机制在无环路的网络中能高效运行;但一旦存在环路,泛洪的帧会被在环内不断复制并被各交换机再次学习与泛洪,形成恶性循环。
为什么环路会导致“网络爆炸”?关键点在于:以太网帧没有 TTL,交换机不会丢弃已转发过的帧(除非收到重复检测或物理端口被禁用),因此:
广播帧被不断泛洪 ,在环路中循环,造成广播风暴,耗尽带宽。MAC 表不稳定(MAC Flapping) :不同交换机在不同时间学习到同一 MAC 在不同端口,表项频繁更新,导致大量控制流量与错误转发。CPU / 转发资源被占满 :交换机需要处理大量重复帧,可能导致 CPU 饱和,甚至丢失管理连接。因此必须在二层网络中消除或控制环路。
生成树协议(STP, IEEE 802.1D)STP 的目标是:在存在物理环路的情况下,通过逻辑禁用部分端口,形成一颗无环的 生成树(spanning tree) ,从而保证任意两个节点之间只有唯一的转发路径。
工作原理(核心流程)桥 ID(Bridge ID)与根桥(Root Bridge)选举 :每台支持 STP 的交换机有一个 Bridge ID,通常由优先级(priority)和交换机的 MAC 地址组成。优先级越小越优先(厂商实现中不同方式),根桥选举为 Bridge ID 最小的交换机。端口角色 :STP 将每个端口分配为以下角色以构建树:Root Port (RP) :到根桥的最短路径上的端口(每台非根桥只有一个)。Designated Port (DP) :负责在该网络段(collision domain)上转发到根桥方向的端口(每个网段只有一个 DP)。Blocked Port :不转发数据帧,用于阻断环路。路径代价(Path Cost) :端口到根桥路径的代价是各链路代价的累加,链路代价与带宽相关(速率越高代价越小)。路径代价用于比较多条候选路径的优劣。端口状态机 :传统 STP 定义了若干定时器和状态:Blocking → Listening → Learning → Forwarding。这些过渡用以避免临时环路并允许网络稳定。常见默认定时器:Hello = 2s、MaxAge = 20s、ForwardDelay = 15s(不同实现可调整)。BPDU(Bridge Protocol Data Unit) :交换机通过发送 BPDU 来互相交流根信息、路径代价、端口角色等。BPDU 在二层直接传输,不依赖 IP。STP 的限制收敛慢 :由于监听/学习状态及保守的定时器,拓扑变化时收敛可能需要几十秒到上分钟,这对实时业务和数据中心不可接受。单一树拓扑 :STP 在部署时会关闭多条物理链路以消除环路,造成链路资源浪费(带宽未被充分利用)。可扩展性问题 :在大型环境(大量交换机/VLAN)中复杂度与收敛问题更明显。迅速生成树协议(RSTP, IEEE 802.1w)为了解决 STP 收敛慢的问题,IEEE 定义了 RSTP(Rapid Spanning Tree Protocol),作为 802.1D 的增强并向后兼容。
RSTP 的主要改进更快的状态转换 :RSTP 引入了 Proposal/Agreement 的握手机制,能在点对点链路上实现几乎即时(毫秒级)地从阻塞到转发的转换。端口角色扩展 :增加了 Alternate 和 Backup 角色,用于标识可用的替代路径,从而加速故障切换。Edge Port(类似 Cisco 的 PortFast) :针对直接连接终端设备(主机)的接入端口,允许绕过学习/监听,立即进入转发态,避免主机连网时触发暂时中断。更少依赖计时器 :通过基于事件的同步机制,减少了对长时间计时器的依赖,从而更快收敛。RSTP 能与传统 STP 混合部署;在与老设备交互时会回退到兼容模式。RSTP 推荐在现代交换网络中作为默认生成树实现。
多实例与多 VLAN:PVST、MSTPPVST / PVST+(Per-VLAN STP) :思科提出的变体,为每个 VLAN 维护单独的生成树,从而可以为不同 VLAN 指定不同根桥,利于流量工程,但也增加了资源开销。MSTP(Multiple Spanning Tree, IEEE 802.1s) :允许将多个 VLAN 映射到同一生成树实例,从而在可控规模内实现多根而不至于爆炸性增长的实例数量。MSTP 面向较大网络的可扩展性做了折中。额外的二层防护与增强机制BPDU Guard :当端口被配置为 Edge/PortFast 时,如果接收到 BPDU 则将该端口切断,用以防止错误设备或错误连线破坏生成树。Root Guard :防止某个端口在不该成为根桥的情况下宣称自己为根,保护拓扑稳定性。Loop Guard :防止因单向链路问题导致原本处于阻塞态的端口错误地进入转发状态。UDLD(Unidirectional Link Detection) :检测物理链路的单向故障,配合 STP 避免错误转发。Storm Control / Broadcast Suppression :在交换机上限制广播/多播/未知单播流量的过快增长,从而在环路或故障时减轻影响。MAC 地址表老化与稳定化策略 :调整老化时间、配合端口安全(port-security)可减少因 MAC Flapping 带来的影响。IGMP Snooping :在交换机层面监听 IGMP 消息,以便仅向需要的端口转发组播,减少泛洪量。二层网络的现代替代方案(数据中心/大规模网络)由于 STP 系列总是在拓扑上产生受阻的链路,现代数据中心和大规模运营商网络往往采用能够同时激活多条路径、并提供快速收敛的技术:
TRILL(Transparent Interconnection of Lots of Links) :使用链路状态协议(IS-IS)在交换设备间建立拓扑,交换机(RBridge)作源路由封装,允许所有物理链路并行工作,支持多路径。SPB(Shortest Path Bridging, IEEE 802.1aq) :也是基于链路状态的二层解决方案,计算最短路径并允许所有路径同时转发。厂商方案(如 Cisco FabricPath) :实现类似的链路状态二层转发,支持 ECMP 多路径。Overlay + EVPN(例如 VXLAN+EVPN) :在三/四层之上建立覆盖网络,通过控制平面(EVPN)提供 MAC 学习与分发,底层为 IP 网络且使用等价多路径 (ECMP),常见于云/数据中心网络。这些方案的共同点是引入了“链路状态”或“控制平面分发”的思想,使网络能够利用多条物理路径、快速收敛并摆脱单一生成树的带宽浪费问题。
设计与运维最佳实践根桥控制 :在设计中手动指定根桥(调低优先级),而不是让自动选举决定,确保流量按预期走向。接入端口配置 PortFast/Edge :对直接连接主机的端口启用 edge/portfast,并同时启用 BPDU Guard 以防误接交换设备。启用 BPDU Guard / Root Guard / Loop Guard / UDLD :根据角色选择合适防护,防止错误或恶意 BPDU 导致拓扑变动。链路聚合(LACP) :对需要更高带宽/冗余的链路使用链路聚合,而不是依赖单条链路。洪泛控制 :启用 storm-control、IGMP snooping 等特性,限制广播/未知单播/组播的泛洪。监控与测试 :监控 MAC 表、BPDU 活动、端口状态;在变更前在实验网或维护窗口中验证配置。考虑现代架构 :在数据中心或需要高可用高带宽利用的场景,评估 EVPN/VXLAN、TRILL 或 SPB 等替代方案。VLAN(虚拟局域网,Virtual LAN)
VLAN(虚拟局域网,Virtual LAN)是一种在二层上把物理交换网络划分成多个 逻辑隔离的广播域 的技术——同一 VLAN 内的主机像在同一交换机/端口组上,可以互相看到 ARP/广播;不同 VLAN 的主机默认互相隔离,必须通过三层设备(路由器/三层交换)才能通信。
标准 :IEEE 802.1Q。VLAN 标签在以太网帧中插入 4 字节(TPID=0x8100 + TCI),其中包含 12-bit 的 VLAN ID(范围 0-4095,1–4094 可用,0 表示优先级/未标记帧,4095 保留)。Access port(接入口) :通常只属于一个 VLAN,接入主机不带标签;交换机会给该端口发出的帧加/解标签。Trunk port(干道口) :携带多个 VLAN 的标签(802.1Q),用于交换机间或交换机与路由器之间传递多 VLAN 流量。Native VLAN :在 802.1Q 中可指定一个未标记的 VLAN(兼容旧设备),但也带来安全隐患,通常推荐禁用或谨慎使用。VLAN 隔离 :广播/未知单播/多播 在 VLAN 范围内泛洪,而不会跨 VLAN(除非显式路由或桥接)。Inter-VLAN Routing :不同 VLAN 间的通信通过三层设备(SVI、Router-on-a-stick、L3 路由器)实现。Q-in-Q(802.1ad) :运营商用来把客户的 VLAN 封装在服务提供方 VLAN(外层标签)中,实现 L2 隔离与多租户(又称 VLAN stacking)。VLAN 安全 :存在 VLAN hopping、native VLAN 攻击等风险,应禁用未用端口、限制 trunk、绑定端口安全、启用 BPDU Guard 等防护。场景A:家庭/小型 ISP 接入(Host — LocalISP)AS 之间二层如何学习地址
这个问题触及了「链路层(L2)局域性」与「自治系统/边界路由(L3)」这两个层次的关键区别。结论先给出一句话版: 自治系统之间一般不会交换原始的二层地址(MAC);它们通过 BGP 交换的是三层前缀(IP),而实际的 MAC 只在本地二层域或通过专门的二层/覆盖技术在受控的域内传播或被分发。 下面分点展开解释并给出几个常见场景。
核心概念MAC 是 L2 局部可见的 :以太网帧和 MAC 地址只在同一二层广播域(或同一交换域/同一 VLAN)内传播。默认情况下,MAC 地址不会跨越路由器(L3)传出该二层域。BGP 传播的是 IP 前缀(L3 可达性) :不同 AS 之间交换的是哪些 IP 段能到达(和一堆策略属性),而不是哪些具体主机的 MAC。路由器利用这些前缀决定下一跳 IP,然后在本地二层上解析下一跳的 MAC(例如通过 ARP 或 NDP)。常见场景与机制典型的 AS 间互联(路由器对路由器,L3 边界)多家 AS 的边界路由器都接到同一交换机/交换布线(例如 IXP 交换平面)。
在 IXP(或私有 peering 在同一 L2 交换网)上,不同 AS 的路由器都在同一个二层域里, 交换机会学习这些路由器或直接连接服务器的 MAC 。因此,物理上连在同一 L2 交换平面的两个 AS 可以看到彼此端口的 MAC、并直接建立二层通信(比如直接交换以太帧)。但这仍然是“在同一 L2 域内可见”,不是 BGP 在传播 MAC。BGP 仍旧用于广告 IP 前缀与建立会话。提供商二层转发 / 以太网承载跨域(Metro Ethernet / L2VPN)当两个客户(或两个 AS)通过运营商的以太网(或 Metro Ethernet)被桥接到同一二层域时,运营商的交换/转发设备会转发客户 MAC,客户的 MAC 就可能在跨长距离的 L2 域中被学习。这是运营商为客户提供「L2 跨城」服务的模式,MAC 会在运营商的 L2 网络中传播 —— 但通常是在运营商控制的边界/租户隔离(VLAN、VPLS、EVPN)之下。覆盖与控制平面分离:EVPN / VxLAN /VPLS / MPLS L2VPN数据中心/运营商为了跨越三层网络实现二层互通,常用 EVPN(用 MP-BGP 做控制平面分发 MAC/IP 可达性)+VxLAN/MPLS(作为数据平面封装) 。要点:控制平面 :BGP-EVPN 可以把 MAC+IP+VNI 等信息作为路由/通告项分发到其它边缘(VTEP) —— 这看起来像在“跨节点分发 MAC 到达性”。
数据平面 :收到这些通告的节点用 VXLAN/MPLS 等封装,把原始以太帧封装在 IP/MPLS 隧道中送到目标 VTEP,再解封并转发到目标 MAC。
结果:MAC 可跨越物理 L3 网络被“逻辑地”分发和到达,但这种行为是 由专门的覆盖/控制平面协议(如 EVPN)实现的 ,而不是传统 BGP 把裸 MAC 直接传播到 Internet 各 AS。ARP 代理 / ARP 抑制在很多边界上,路由器或 VTEP 会做 ARP 代理或 ARP 抑制 :当需要到达某个 IP(由 BGP 宣告)时,边界设备可以自己响应 ARP,提供自己的 MAC 作下一跳,避免把客户 MAC 全网广播或学习。这在缩小广播、提高可控性方面很常见。面向未来的路由技术
为了应对传统路由协议的挑战,并满足日益增长的网络需求,新的技术和理念正在不断涌现。
软件定义网络(Software-Defined Networking, SDN) :SDN 的核心思想是 控制平面与数据平面分离 。它将网络的“大脑”(控制逻辑)集中到一个中央控制器上。控制器拥有网络的全局视图,可以基于应用需求、实时流量等信息做出智能的路由决策,然后将转发指令下发给底层的“傻瓜”交换机和路由器。段路由(Segment Routing, SR) :SR 是一种先进的源路由技术,旨在简化网络,特别是复杂的 MPLS 网络。它通过在数据包头中压入一个指令序列(段列表),精确地指定了数据包要经过的路径,减少了网络中间设备所需维护的状态,提高了网络的可编程性和效率。网络可观测性与自动化 :现代网络正在从被动管理转向主动感知。设备可以主动将详细的遥测数据(如延迟、抖动、丢包率)实时推送到控制器。基于这些数据,自动化系统可以进行更智能的流量工程、故障预测和自我修复。IPv6 :虽然不是路由协议,但 IPv6 提供了近乎无限的 128 位地址空间,解决了 IPv4 地址耗尽的问题。其 无状态地址自动配置(Stateless Address Autoconfiguration, SLAAC) 特性也简化了网络管理。SLAAC 的工作原理非常巧妙,它允许网络中的设备在没有 DHCP 服务器的情况下自动为自己配置一个全球唯一的 IPv6 地址。这个过程分为两步:
获取网络前缀 :设备启动后,会向网络中发送一个 路由器请求(Router Solicitation) 消息。本地网络的路由器在收到该消息或周期性地广播 路由器通告(Router Advertisement, RA) 消息。这个 RA 消息中包含了当前子网的 64 位网络前缀(例如 2001:db8:1234:5678::/64)。生成接口标识符 :设备获取到网络前缀后,需要自行生成后 64 位的 接口标识符(Interface Identifier, IID) 。最传统的方法是使用 EUI-64 规范,它将设备独一无二的 48 位 MAC 地址扩展为 64 位 IID。设备将网络前缀和自己生成的 IID 组合起来,就形成了一个完整的 IPv6 地址。在正式使用前,它还会执行 重复地址检测(Duplicate Address Detection, DAD) 来确保该地址在本地网络中是唯一的。 由于 EUI-64 方式会暴露设备的 MAC 地址,存在隐私风险,因此现代操作系统普遍采用 隐私扩展(Privacy Extensions) ,生成一个临时的、随机的 IID 来代替基于 MAC 地址的 IID。