目录
[内部网关协议 RIP](#内部网关协议 RIP)
[RIP 工作原理](#RIP 工作原理)
[RIP 示例分析](#RIP 示例分析)
[RIP 报文的封装结构](#RIP 报文的封装结构)
[RIP 的主要缺点](#RIP 的主要缺点)
[内部网关协议 OSPF](#内部网关协议 OSPF)
[OSPF 的区域划分机制](#OSPF 的区域划分机制)
[OSPF 的五种分组类型](#OSPF 的五种分组类型)
[OSPF 分组的封装结构](#OSPF 分组的封装结构)
[OSPF 邻居建立与同步过程](#OSPF 邻居建立与同步过程)
[OSPF 的链路状态更新与洪泛机制](#OSPF 的链路状态更新与洪泛机制)
[OSPF 指定路由器](#OSPF 指定路由器)
[OSPF 的特性与优势](#OSPF 的特性与优势)
[外部网关协议 BGP](#外部网关协议 BGP)
[BGP 路由](#BGP 路由)
[BGP 路由的组成要素](#BGP 路由的组成要素)
[BGP 路由的选择规则](#BGP 路由的选择规则)
[BGP 的报文类型](#BGP 的报文类型)
[BGP 报文的封装结构](#BGP 报文的封装结构)
基本概念
路由选择协议用于在网络中确定从源节点到目的节点的最佳路径。
其核心是路由算法(Routing Algorithm)
理想路由算法应具备的特性
正确与完整性: 算法能找到到所有目的地的合法路径。
自适应性: 能根据网络流量和拓扑变化进行调整。
稳健性: 在局部故障时能继续运行。
稳定性: 网络变化后,算法能迅速收敛,不产生波动。
公平性: 避免个别用户长期占用资源。
**最优性:**尽量缩短路径、减少时延。
动态路由与静态路由
静态路由:由管理员手动配置,不随网络变化自动调整。
动态路由:由路由协议自动发现并更新路径。
常见的动态路由协议包括:
RIP(Routing Information Protocol)
OSPF(Open Shortest Path First)
BGP(Border Gateway Protocol)
分层的路由选择协议体系
互联网路由选择协议分为两类:
| 协议类型 | 英文名称 | 使用范围 | 示例 |
|---|---|---|---|
| 内部网关协议(IGP) | Interior Gateway Protocol | 自治系统内部(AS 内) | RIP、OSPF |
| 外部网关协议(EGP) | External Gateway Protocol | 自治系统之间(AS 间) | BGP |
自治系统(AS, Autonomous System):
由单一管理机构控制的一组网络,使用统一的路由策略。
自治系统之间的路由选择也叫作域间路由选择(interdomain routing),而在自治系统内部
的路由选择叫作域内路由选择(intradomain routing)

内部网关协议 RIP
Routing Information Protocol 的中文翻译是路由信息协议,简称 RIP
1. 定义与性质
RIP 是一种基于距离向量算法的内部网关协议**。**
采用 UDP 端口 520 进行报文传输。
距离用跳数(Hop Count)表示:每经过一个路由器,跳数 +1
最大跳数为 15,16 表示不可达。
特点:
实现简单,开销较小
适合小型网络
不适合大型互联网
RIP 工作原理
1. 交换信息原则:
仅与相邻路由器交换信息
每次发送整个路由表
定时发送(默认每 30 秒)
2. 更新过程:
每个路由器接收邻居的路由表后:
跳数全部 +1
如果目标网络不存在,则加入
如果存在但更短,则更新
若超时未收到更新,则设为不可达(16)
3. 采用 Bellman-Ford 算法:
每个节点通过不断更新邻居信息来计算最短路径
距离向量更新规则实际上就是Bellman-Ford算法
RIP 示例分析
距离向量更新规则:
对于邻居发来的每条路由(目的网络 N,距离 d,来自邻居 X)
-
计算新距离:new_distance = d + 1 (这个1是到邻居X的成本)
-
在你的路由表中查找目的网络 N 的表项
-
如果路由表中没有去往 N 的路由:
添加该路由(目的网络 N,距离 new_distance,下一跳 X)
- 如果路由表中已有去往 N 的路由,其下一跳是 Y:
情况 A:如果 Y == X(下一跳相同)
无条件更新为新的距离 new_distance。(本例 Net2 的情况)
情况 B:如果 Y != X(下一跳不同)
只有当 new_distance < 当前距离时,才更新(替换下一跳和距离)


RIP 报文的封装结构
图4-40 表明RIP报文作为运输层用户数据报UDP的数据部分进行传送(使用UDP的
端口520)

RIP报文由首部和路由部分组成。在路由部分要填入自治系统号ASN(Autonomous
SystemNumber),这是考虑使RIP有可能收到本自治系统以外的路由选择信息。还要指出目的网络地址(包括网络的子网掩码)、下一跳路由器地址以及到此网络的距离。一个RIP报文最多可包括25个路由。如超过,必须再用一个RIP报文来传送。
RIP 的主要缺点
| 缺点 | 说明 |
|---|---|
| 坏消息传播慢 | 网络故障信息需较长时间传播,导致错误路由延迟收敛 |
| 环路问题 | 当路由错误传播时,可能形成路由环 |
| 规模限制 | 最大跳数为 15,无法支持大型网络 |
| 带宽消耗 | 定期广播整个路由表,占用资源 |

直到两者的距离都缓慢地增加到16,这时它们才判断 Net1 不可达,并停止更新
内部网关协议 OSPF
1. 定义与来源
OSPF(Open Shortest Path First),中文名为开放式最短路径优先协议,是一种内部网关协议(IGP),用于自治系统(AS)内部的路由选择。
它是为弥补 RIP(Routing Information Protocol) 的不足,于 1989 年设计完成的。
名称解释:
开放(Open)表示该协议是公开标准,不是某个厂商专有。
最短路径优先(SPF)源自 Dijkstra 提出的最短路径算法(Shortest Path First Algorithm)
OSPF 的设计思想是让每台路由器都知道网络的完整拓扑结构,从而自己计算到达各目的网络的最短路径。
2. 链路状态协议(Link-State Protocol)
OSPF 属于链路状态协议,而不是像 RIP 那样的距离向量协议。
区别在于:
RIP 仅周期性地向相邻路由器发送自己知道的部分路由信息。
OSPF 则通过一种称为洪泛法(Flooding)的机制,把链路状态信息发送到整个自治系统内的所有路由器。
每台 OSPF 路由器会:
-
向本自治系统中所有路由器发送路由信息。
-
信息中包括自己与哪些相邻路由器相连、链路的开销等。
-
当链路状态变化或定期超时(约 30 分钟)时,再次更新信息。
最终,每个路由器都会形成一致的链路状态数据库(Link-State Database, LSDB),也即整个网络的拓扑结构图。
3. OSPF 的核心过程
OSPF 的运行可概括为三个步骤:
| 步骤 | 内容 | 说明 |
|---|---|---|
| (1) | 发现邻居并建立邻接关系 | 通过 Hello 分组发现相邻路由器 |
| (2) | 交换链路状态信息 | 使用洪泛法传递链路状态广告(LSA) |
| (3) | 计算最短路径树 | 每台路由器用 Dijkstra 算法计算从自身出发的最短路径树 |
每台路由器据此独立生成自己的路由表(Routing Table)
发送路由信息不是指发送完整的路由表(像RIP那样),而是发送一种叫做LSA 的数据包。
每台路由器都会产生描述自身周边拓扑的LSA。例如:
我(路由器A)连接着网络192.168.1.0/24,开销是10
我(路由器A)和路由器B是邻居,我们之间链路的开销是5
洪泛机制如何工作
路由器A不会直接把信息发给网络里的所有路由器,它只发给它的OSPF邻居。
邻居收到后,会再发给它们自己的邻居(除了消息来源的那个邻居)。这个过程像洪水一样迅速扩散到整个区域,所以叫洪泛。
最终,区域内的每一台OSPF路由器都会收到来自区域内所有其他OSPF路由器的LSA
| 特性 | OSPF | RIP |
|---|---|---|
| 工作方式 | 拥有地图的导航员 | 问路的旅行者 |
| 信息源 | 拥有整个网络的完整地图(LSDB) | 只听到邻居说"去X地要走Y公里" |
| 计算方式 | Dijkstra算法 :自己看着完整地图,找出到所有地点的绝对最短路径 | Bellman-Ford算法 :基于从多个邻居那里听来的信息,比较并选择"听起来最好"的路径 |
OSPF 的区域划分机制
1. 分层区域结构
为了使 OSPF 能适应大规模网络,它采用了层次化区域划分
一个自治系统(AS)可被划分为若干个区域(Area)
每个区域内部的路由器共享同一个链路状态数据库,但与其他区域只交换必要的摘要信息。
区域的标识号通常用 32 位数字表示(如 0.0.0.0)
在同一个OSPF区域内的每一台路由器,都会形成一份关于本区域拓扑的、完全一致的链路状态数据库(LSDB)。而对于其他区域的网络,它们只知道由ABR汇总后传来的路由信息(Type 3 LSA),而不知道其内部的详细拓扑。
2. 主干区
主干区编号固定为 Area 0 或 0.0.0.0
主干区的作用:连接所有其他区域,转发跨区域的路由信息
每个区域都必须与主干区直接相连
在主干区与其他区域之间的路由器称为:
区域边界路由器(Area Border Router, ABR),既属于主干区也属于其他区域
自治系统边界路由器(AS Boundary Router, ASBR),用于连接外部自治系统
3. 区域划分示意
如下图(图4-42),自治系统 AS 被划分为主干区 0.0.0.0 和多个子区域 0.0.0.1、0.0.0.2、0.0.0.3
路由器R3,R4和R7都是区域边界路由器,而显然,每一个区域至少应当有一个区域边界路由器。在主干区域内的路由器叫作主干路由器,如R3,R4,R5,R6和R7。一个主干路由器可以同时是区域边界路由器,如R3,R4和R7 。在主干区域内还要有一个路由器专门和本自治系统外的其他自治系统交换路由信息。这样的路由器叫作自治系统边界路由器(如图4-42中的R6)

分层结构的优点:
降低了网络负载
减少了数据库规模
提高了网络的可扩展性
OSPF 的五种分组类型
OSPF 把所有报文称为分组(Packet),共有 5 种类型:
| 类型编号 | 名称 | 功能说明 |
|---|---|---|
| 1 | Hello 分组 | 用于发现和维护邻居关系,检测链路可达性 |
| 2 | 数据库描述分组(Database Description, DD) | 向邻居总结性地描述本地链路状态数据库的内容 |
| 3 | 链路状态请求分组(Link State Request, LSR) | 请求对方发送指定的链路状态项详细信息 |
| 4 | 链路状态更新分组(Link State Update, LSU) | 用洪泛法发送链路状态的具体更新信息,是 OSPF 的核心 |
| 5 | 链路状态确认分组(Link State Acknowledgment, LSAck) | 对更新分组的确认,用于确保可靠传输 |
比喻:
LSA 信的内容
LSU 装着信的信封
OSPF 分组的封装结构
OSPF 分组直接封装在 IP 数据报中(协议号 89),而不是通过 UDP/TCP
这使得 OSPF 更加高效,减少了额外的协议开销
OSPF 报文结构如下图(图 4-43):

OSPF 邻居建立与同步过程
-
路由器启动后,发送 Hello 分组,与相邻路由器建立邻居关系。
-
相邻路由器交换 Database Description 分组,比较数据库摘要。
-
若发现缺失项,则发送 Link State Request 请求详细数据。
-
收到后对方发送 Link State Update,完成链路状态同步。
-
收到更新后发送 Link State Acknowledgment 确认。
当两个路由器链路状态数据库完全一致时,称它们为完全邻接
OSPF 的链路状态更新与洪泛机制
1. 更新触发条件
当网络拓扑发生变化(如链路断开、代价改变等)
或周期性计时到期(如 30 分钟)
路由器立即发送更新分组通知邻居
2. 洪泛传播(Flooding)
OSPF 使用可靠的洪泛法,传播过程如下(如图4-44):
路由器将更新报文发给所有邻居
邻居收到后再转发给自己的邻居
每次转发都要收到 ACK 确认
确认机制保证每条链路状态信息都被可靠传递

OSPF 指定路由器
在广播型网络(如局域网)中,若每台路由器都与其他路由器相互交换链路状态信息,通信量将非常大。
因此 OSPF 采用指定路由器(Designated Router, DR)机制:
在一个局域网中,由选举产生一个指定路由器 DR(以及一个备份路由器 BDR)
所有路由器只与 DR、BDR 建立邻接关系
DR 负责代表整个网络与外部交换链路状态信息,从而显著减少通信量
OSPF 的特性与优势
1. 支持多类型业务与不同代价的链路
OSPF 允许对不同类型的业务分配不同的代价(Metric),代价范围为 1--65535
商用网络通常根据链路带宽设定代价。
2. 支持负载均衡
当存在多条代价相同的路径时,可并行分担通信量。
3. 有认证功能
所有 OSPF 分组可通过口令或加密认证,确保交换信息的安全。
4. 支持无类别域间路由(CIDR)
允许子网掩码灵活划分。
5. 链路状态更新高效可靠
链路状态号以 32 位序号表示,周期性更新(默认每 30 分钟一次)
使用可靠洪泛机制确保一致性。
外部网关协议 BGP
BGP 协议的主要特点
1. 什么是 BGP
BGP(Border Gateway Protocol,边界网关协议)是一种用于自治系统(AS, Autonomous System)之间进行路由选择的外部网关协议(EGP)
目前使用的是 BGP-4 版本(RFC 4271)
在互联网中,路由协议可以分为:
内部网关协议(IGP):如 RIP、OSPF,用于一个 AS 内部
外部网关协议(EGP / BGP):用于 AS 与 AS 之间
由于互联网由成千上万个自治系统(AS)组成,因此需要一种能够在这些系统之间高效交换路由信息的协议即 BGP
2. 为什么需要 BGP
BGP 设计的主要目的是在规模庞大的互联网中实现自治系统之间的可达性交换,而不是追求最短路径。
与内部协议 OSPF 不同,BGP 不使用链路状态算法或距离向量算法,而是使用路径向量(Path Vector)算法
在互联网规模达到数百万网络前缀时,若仍使用 OSPF 这样的算法,则每个路由器都需维护巨量的拓扑数据库,计算开销过大。而 BGP 使用路径信息方式,使得自治系统之间可以用较少的开销达成连通。
3. 自治系统间的路由选择原则
自治系统之间的路由选择不同于自治系统内部的最短路径优先原则,它受到策略(Policy)的约束。
也就是说,BGP 路由的选择不仅要考虑可达性,还要考虑:
政策因素(如是否允许经过某个 AS)
成本因素(某些路径可能需要付费)
商业关系(如客户、供应商、对等互联)
因此,BGP 的核心思想是:
在自治系统之间基于策略选择路由,而非基于距离或速度选择最短路径。
BGP 路由
BGP 中的路由器分为两种角色:
边界路由器(Border Router):负责与其他 AS 的边界路由器交换 BGP 报文
内部路由器(Internal Router):仅在 AS 内部运行
根据连接对象不同,BGP 连接分为:
eBGP(External BGP)连接:位于不同 AS 之间
iBGP(Internal BGP)连接:位于同一个 AS 内部
eBGP 连接
当两个 AS 的边界路由器建立 BGP 会话时,需要通过 TCP 179端口建立可靠连接。
eBGP 用于交换自治系统之间的可达性信息,报文内容包括可达前缀、经过的 AS 路径(AS-PATH)、下一跳(NEXT-HOP)
iBGP 连接
在一个 AS 内部,边界路由器获取外部 AS 的路由后,还需把这些信息传递给 AS 内其他路由器,这就需要建立 iBGP 连接。
iBGP 连接仍通过 TCP 建立,但双方属于同一 AS
规则:
一个 AS 内所有运行 iBGP 的路由器必须是全互连的,这样所有内部路由器都能获知外部路由信息。即使两个路由器之间没有物理连接,但它们之间仍然有 iBGP 连接(如图 4-46 所示)

BGP 路由的组成要素
BGP 的每一条路由信息包含三个关键属性:
| 属性 | 含义 |
|---|---|
| 前缀(Prefix) | 表示目标网络的地址(通常使用 CIDR 表示) |
| AS-PATH | 经过的自治系统序列,用于防止环路 |
| NEXT-HOP | 下一跳地址,即如何到达该前缀的起点 |
AS-PATH 的作用:
-
标识路由所经过的 AS
-
防止环路:若路由器发现自己的 AS 号出现在 AS-PATH 中,就会丢弃该路由
-
提供路由选择的度量参考(例如选择 AS 跳数最少的路径)
自治系统AS的类型
在全球互联网中,AS 数以万计,依据其连接方式和角色不同,可以分为三类:
| 类型 | 英文 | 说明 |
|---|---|---|
| 末梢 AS | Stub AS | 通常是小AS 只发送和接收它自己的流量,不替其他AS转发流量 需要向连接的穿越AS付费 可以是多归属AS,即连接到多个上游AS以提高可靠性 |
| 穿越 AS | Transit AS | 通常是大型主干网(如电信运营商) 核心功能是有偿为其他AS转发流量 互联网流量的"骨干"和"高速公路" |
| 对等 AS | Peering AS | 两个规模相当的AS之间免费直接连接 目的是为了更高效地交换彼此及其客户的流量,避免绕路和向穿越AS付费 |
图中例子:

图中的人民币符号¥表示需要对转发分组付费
末梢 AS 也可以同时连接到两个或两个以上的 AS(如图 4-49 中的 AS₅)。这种末梢 AS就称为多归属 AS (multihomed AS)。多归属 AS 可以增加连接的可靠性,因为若有一条连接出现故障,那么还有另一条连接可用。
末梢AS(如AS₅)即使连接了两个上游AS(AS₂和AS₃),它也不能作为它们之间的桥梁。它不能把从AS₂来的流量转发给AS₃,反之亦然。
BGP如何防止路由环路:AS-PATH属性
这是BGP协议一个非常核心和巧妙的机制。
AS-PATH是什么? 一条BGP路由在传播过程中,每经过一个AS,该AS的编号就会被添加到路径列表的最前面。
防环原理:任何一台BGP路由器在收到一条路由通告时,都会检查AS-PATH列表。如果在这个列表中发现了自己所属的AS编号,说明这条路由已经经过了自己,如果接受就会形成环路。因此,它会立即丢弃这条路由。
案例:
初始状态:AS₃ 知道去往 AS₆ 的路由,路径是 [AS₃, AS₆]。
路径传播:
AS₃ 把这条路告诉 AS₁,AS₁ 收到后,添加自己,路径变为 [AS₁, AS₃, AS₆]
AS₁ 又把这条路告诉 AS₂,AS₂ 收到后,添加自己,路径变为 [AS₂, AS₁, AS₃, AS₆]
AS₂ 再把这条路告诉 AS₃
环路检测与避免:
AS₃ 从 AS₂ 收到这条路由,检查其AS-PATH:[AS₂, AS₁, AS₃, AS₆]
它一眼就看到了列表中已经包含了 AS₃(也就是它自己)
AS₃ 立刻意识到:这条路由怎么绕了一圈又回到我这儿了?如果我用它,数据包就会在我、AS₂、AS₁之间打转,永远到不了AS₆
因此,AS₃ 果断丢弃了这条从AS₂学来的、会导致环路的路由
最终结果:AS₂ 最终知道有两条路可以去 AS₆:
一条较长但可行的路:[AS₂, AS₁, AS₃, AS₆]
一条较短的路(来自AS₃的直接通告):[AS₂, AS₃, AS₆]
BGP路由器会根据策略来选择最佳路径
BGP 路由的选择规则
当一个 AS 接收到多个到同一目的前缀的 BGP 路由时,需要选择最佳路由
BGP 的选路规则(优先级从高到低):
1. LOCAL-PREF(本地优先级)最大:
作用范围:整个自治系统(AS)。一旦设置,AS内所有路由器都会遵循。
原则:选择LOCAL-PREF属性值最高的路由。
本质:这是AS级别的出站流量策略。用来决定"我们AS的流量,应该从哪个出口点出去最好"。
例子(图4-50):
AS₁的管理员希望去往AS₄的流量走高速链路(通过R₁去AS₂)
于是他们将通过R₁的路由的LOCAL-PREF设为300,通过R₂的路由设为200。
结果:AS₁内所有路由器在收到这两条路由后,都会优先选择LOCAL-PREF=300的那条,即所有去往AS₄的流量都会从R₁发出。

2. 最短 AS-PATH :
原则:选择AS-PATH属性中AS跳数最少的路由。
本质:通常情况下,经过的AS越少,路径可能越短、质量越好。
例子(图4-51)的局限性:
路径 AS₁ → AS₄ → AS₅ 的AS跳数是1(经过1个AS:AS₄)
路径 AS₁ → AS₂ → AS₃ → AS₅ 的AS跳数是2(经过2个AS:AS₂和AS₃)
BGP会选择跳数少的路径1。但关键问题是 AS₄内部可能非常大,导致数据包在AS₄内部传输的延迟远高于在AS₂和AS₃之间的传输延迟。因此,BGP选择的最短AS路径未必是性能最佳的路径。

3. 热土豆算法(Hot Potato Routing):
若以上条件相同,选择离本地出口最近的路由器出口(即尽快"甩锅"给其他 AS)
原则: 尽快将数据包送出本AS,就像扔出一个烫手的山芋一样。它只关心数据包在本AS内的消耗(带宽、延迟等),而不关心出了AS之后的路由质量。
实现方式: 使用内部网关协议(IGP) 的成本,来计算到达各个BGP下一跳路由器(即AS的出口点)的路径成本,选择IGP成本最低的出口。
例子(图4-52):
对于路由器R₁:它通过IGP计算,发现把包发给R₄(BGP路由2的出口)比发给R₃(BGP路由1的出口)的内部成本更低。所以R₁选择BGP路由2。
对于路由器R₂:情况相反,它发现把包发给R₃的内部成本更低,所以选择BGP路由1。
关键:在热土豆算法下,AS内不同路由器对于同一目的地的BGP路由选择结果可能不同,因为这取决于它们各自在AS内的位置。

4. 最低 BGP 路由器 ID :
原则:如果以上所有属性都完全相同,则选择来自BGP路由器ID最小的对等体的路由。
BGP路由器ID:通常是该路由器的最高IP地址(或手动配置)
在BGP中,对等体指的是建立了BGP会话并直接交换BGP路由信息的两台路由器。这种关系也称为BGP对等关系。
BGP 的报文类型
BGP 使用 TCP(端口号179)进行可靠通信。
BGP-4 定义了四种报文类型:
| 报文类型 | 作用 |
|---|---|
| OPEN(打开报文) | 建立 BGP 邻居关系(TCP 连接建立后发送) |
| UPDATE(更新报文) | 传递新的路由信息,或撤销原有路由 |
| KEEPALIVE(保活报文) | 周期性维持连接,防止超时 |
| NOTIFICATION(通知报文) | 发送检测到的错误并关闭连接 |
KEEPALIVE 与保持时间(Hold Time)
若在保持时间内未收到任何 KEEPALIVE 或 UPDATE 报文,连接视为失效,默认保持时间为 180 秒,通常每隔保持时间的三分之一发送一次 KEEPALIVE 报文。
ASN(自治系统号)
BGP 中每个 AS 由唯一的 ASN(Autonomous System Number) 标识;
原范围:0--65535(2 字节)
扩展后:0--4294967295(4 字节),称为 AS4 格式
报文格式允许兼容新旧 ASN。
BGP 报文的封装结构

路由器的构成
路由器的结构
1. 定义与基本功能
路由器(Router)是一种具有多个输入端口(Input Port)和多个输出端口(Output Port)的专用计算机设备,其核心任务是接收分组、根据目的地址选择合适的输出端口,并将分组转发到下一跳路由器。
路由器属于网络层设备,其工作核心是分组转发(Packet Forwarding)
每个输入端口收到分组后,会查找路由表或转发表,决定分组应从哪个输出端口发出。
2. 路由器的组成部分
图 4-54 给出了典型的路由器组成框图

整个路由器结构可分为两大部分:
| 部分 | 说明 | 对应OSI层 |
|---|---|---|
| 路由选择部分 | 负责运行路由选择协议(OSPF、BGP、RIP),生成和维护路由表 | 控制层面 (软件实现) |
| 分组转发部分 | 负责接收、存储、查表、转发分组 | 数据层面 (硬件实现) |
(1)控制层面
由路由选择处理机组成
运行路由选择协议(RIP、OSPF、BGP等)
根据协议计算生成路由表
定期更新和维护路由表项
管理和控制整个路由器的工作
(2)数据层面
由分组处理、转发表、交换结构组成
主要任务是高速地将输入端口的分组转发到正确的输出端口
与路由器的吞吐率和性能密切相关
实现上通常依赖 ASIC(专用集成电路)或高速交换总线
分组转发与路由选择
1. 转发(Forwarding)
转发指的是根据转发表将数据分组从输入端口转移到合适的输出端口的操作。
这是数据层面的动作,涉及单个分组。
转发操作发生在分组级(packet-level),不关心全网结构,仅执行查表匹配与转出。
2. 路由选择(Routing)
路由选择是指路由器依据路由协议计算得到从源网络到目标网络的最优路径。
这是控制层面的过程,关注全局网络拓扑与路径变化。
其输出结果是路由表,供转发层面使用。
区别总结:
路由选择:计算路径,构造路由表(控制层)
分组转发:查表执行,实际转发分组(数据层)
路由器的工作过程
图4-54、图4-55、图4-56展示了路由器中输入端口与输出端口的处理逻辑:
(1) 输入端口处理
输入端口收到来自线路的分组后,会经历以下步骤:
-
物理层处理:接收信号并恢复比特流
-
数据链路层处理:提取数据帧
-
网络层处理:分析 IP 数据报头中的目的地址
-
查找转发表(Forwarding Table)
-
选择合适输出端口并交给交换结构
在图4-55中,输入端口包含一个分组排队队列
当交换结构繁忙时,新的分组需在输入队列中等待,从而产生延迟(即输入排队延迟)

(2) 输出端口处理
输出端口从交换结构接收分组后,执行相反方向的步骤:
-
存入输出队列
-
进行数据链路层与物理层封装
-
经物理接口发往外部网络链路
在图4-56中,如果交换速率大于链路传输速率,输出端口可能也会发生排队或分组丢失。
交换结构
1. 定义
交换结构是路由器的核心组件,负责将分组从输入端口转移到正确的输出端口。
它决定了路由器的内部转发速率和并行能力。
2. 三种典型的交换结构
图4-57列出了三种常见的交换方法:

(1) 通过存储器(Memory Switching)
如图4-57(a):
最早期的路由器使用计算机的CPU和内存完成分组交换。
输入端口把分组传送到内存
CPU查表决定输出端口
再把分组从内存写到输出端口
特点:
实现简单
所有分组必须经过CPU处理
性能受制于内存读写速度
适合低速路由器
若存储器带宽为 M 个分组/秒,则整体交换速率为 M/2
(2) 通过总线(Bus Switching)
如图4-57(b):
多个输入端口共享同一条总线。
分组通过总线广播给所有输出端口,只有目标端口会接收。
特点:
成本低,结构简单
但总线是共享资源,一次只能传送一个分组
多个输入端竞争总线时,分组必须排队等待
转发速度受总线带宽限制
(3) 通过互连网络(Interconnection Network)
如图4-57(c):
采用交叉开关结构,每个输入端与每个输出端都通过独立的链路连接。
特点:
理论上可实现输入端与输出端的并行交换
可同时传输多个分组
当不同输入端的分组要转到同一输出端时,仍需排队等待
是当前高端路由器(如 Cisco 12000 系列)的主流方式,互连速率可达 60 Gbit/s 以上。
队列与性能问题
在路由器的输入端和输出端,排队现象普遍存在。
当分组到达速度超过交换速率或输出链路速率时,就会出现:
输入队列延迟
输出队列延迟
缓冲区溢出导致分组丢失
这正是现代高速路由器设计中的重要研究方向:如何在高速条件下减少排队延迟并提高转发速率。
