3. 会话保持的核心概念与协议栈位置
在卫星网络里谈“链路切换”,真正困难的部分往往不是链路本身,而是链路上承载的会话。卫星相对地面终端高速运动,低轨星座中一颗卫星过顶时间通常只有几分钟到十几分钟,星间链路也会因几何关系变化而重路由。如果每次链路变化都让上层业务重新开始,用户体验将无法接受。因此必须先厘清一组容易混淆的概念:会话、连接、流、标识符,以及它们各自位于协议栈的什么位置。
会话、连接、流:三个不同层次的对象
会话(Session)是面向应用和用户的逻辑交互上下文,例如一次视频通话、一次文件传输、一次网页登录状态。会话的生命周期由应用语义决定,可能跨越多次连接重建,甚至跨越终端更换接入卫星。会话关心的是“这次交互是否还在继续”,而不是“数据此刻走哪条链路”。
连接(Connection)是传输层或会话层为一次通信建立的、具有明确状态和端点的通道,典型如 TCP 连接。连接有明确的建立、维护、释放过程,其状态(序列号、窗口、拥塞控制参数、重传队列)绑定在具体端点上。链路切换若导致端点地址变化,连接就可能中断。
流(Flow)是更细粒度的、具有相同五元组或相同业务特征的数据单元集合,常用于 QoS 分类、流量工程和转发决策。一条连接内可能包含多个流,一个流也可能被映射到不同的底层路径。
三者的关系可以概括为:会话是目的,连接是手段,流是转发粒度。会话保持的目标,是让上层会话在底层连接和流路径发生变化时仍然连续可用。
标识符:会话保持的锚点
要让会话在链路切换后仍能被识别和恢复,必须有稳定的标识符体系。常见标识符包括:
- 端点标识符:IP 地址、端口号,传统上用于定位通信端点,但在卫星网络中会随接入卫星变化。
- 会话标识符:如 SIP Call-ID、HTTP Session ID、TLS Session ID,用于在应用层或会话层唯一标识一次会话。
- 主机标识符:如 HIP 中的 Host Identity、LISP 中的 EID,用于把“身份”与“位置”分离。
- 流标识符:如五元组、Flow Label,用于转发和 QoS 处理。
标识符设计的核心矛盾是:越靠近网络层的标识符越容易被链路切换影响,越靠近应用层的标识符越稳定但越难被网络设备识别。会话保持机制通常需要在两者之间建立映射,例如用稳定的会话 ID 绑定可变的 IP 地址。
端到端原则与协议栈位置
端到端原则指出,网络核心应尽量保持简单,把可靠性、顺序性、会话状态等复杂功能放在端系统实现。这一原则对会话保持有直接指导意义:链路切换的透明性最好由端系统或边缘网关负责,而不是要求每一颗卫星都维护每个会话的状态。
从协议栈看,会话保持可以分布在多个层次:
| 层次 | 典型机制 | 对链路切换的敏感度 |
|---|---|---|
| 应用层 | Session ID、断点续传、重连令牌 | 低,可跨连接恢复 |
| 会话层/表示层 | SIP、RTP 会话、TLS 会话恢复 | 中,依赖会话上下文 |
| 传输层 | TCP 迁移、MPTCP、QUIC Connection ID | 高,连接状态绑定端点 |
| 网络层 | Mobile IP、LISP、SRv6 端点迁移 | 高,地址变化直接影响路由 |
| 链路层 | 波束切换、星间链路重路由 | 最高,直接改变物理路径 |
实际系统中,会话保持往往是多层协同的结果。例如 QUIC 用 Connection ID 在 IP 地址变化后继续识别连接,TLS 会话恢复减少握手开销,应用层再用业务令牌保证用户状态不丢失。
会话保持与链路切换的耦合关系
会话保持与链路切换不是两个独立问题,而是同一事件在不同层次上的表现。一次卫星切换会同时触发:链路层波束重指、网络层地址或路由变化、传输层连接状态受影响、应用层可能感知到卡顿或重连。耦合关系可以沿“事件—影响—应对”链条理解。
以低轨卫星为例,假设终端通过卫星 A 接入,正在与地面服务器进行 TCP 视频流传输。当卫星 A 即将离开可见范围,系统需要把终端切换到卫星 B。此时若采用传统 TCP,终端 IP 变化会导致原连接四元组失效,TCP 连接中断,视频出现明显卡顿。若采用 QUIC,连接由 Connection ID 标识,终端 IP 变化后仍可继续使用原连接,只需重新建立到新路径的可用性。若应用层还有会话令牌,则用户登录状态、播放进度等也能继续。
反过来,会话保持机制也会影响链路切换策略。如果系统知道某条链路上承载着高优先级会话,切换决策就应尽量选择能维持该会话连续性的目标卫星和路径,而不是单纯选择信号最强的波束。这就把“切换”从链路层问题提升为跨层联合优化问题。
一个可操作的观察示例
假设某终端在卫星网络中运行一个长连接业务,切换前后可以观察以下指标:
| 观察点 | 切换前 | 切换后(理想) | 切换后(异常) |
|---|---|---|---|
| 终端 IP | 10.20.1.5 | 10.20.2.8 | 10.20.2.8 |
| 连接标识 | CID=0x3A7F | CID=0x3A7F(不变) | CID 重建,业务重连 |
| 会话令牌 | sess=abc123 | sess=abc123(保持) | sess 失效,需重新登录 |
| 中断时长 | — | < 200 ms | > 2 s |
| 业务表现 | 正常 | 轻微抖动后恢复 | 卡顿、重连、状态丢失 |
这个示例说明,判断会话保持是否生效,应同时检查标识符是否延续、中断时长是否可接受、业务状态是否连续。三者缺一不可。
设计会话保持机制时的取舍
在实际工程中,会话保持机制的选择需要权衡以下因素:
- 状态维护位置:状态放在端系统最符合端到端原则,但端系统可能资源受限;放在边缘网关可以减轻终端负担,但网关成为单点。
- 标识符稳定性:越稳定的标识符越有利于会话保持,但可能增加映射复杂度和安全风险。
- 切换时延预算:实时业务要求切换中断在百毫秒级,非实时业务可以容忍秒级中断,这决定了是否需要预切换、双连接等机制。
- 协议栈协同:单层机制往往不够,需要传输层、网络层、应用层协同,例如 QUIC + Mobile IP + 应用层令牌。
理解会话、连接、流和标识符的区别,明确它们在协议栈中的位置,并把握端到端原则的指导意义,是后续设计具体会话保持方案的基础。链路切换不可避免,但会话可以保持——关键在于把正确的状态放在正确的位置,用正确的标识符锚定它。