5.2 动态路由与星间接力选路


5.2 动态路由与星间接力选路

协议栈适配解决"单个连接怎么跑",本节解决"网络怎么指路":在一张拓扑随轨道运动规律变化的网格上,如何为海量流算出并维护转发表。它是第 3 章网格几何与第 6 章切换管理的中间齿轮。

核心洞察:拓扑是"坏"的,但坏得有规律

地面互联网的路由协议(OSPF、BGP)假设拓扑变化是罕见事件,来了就泛洪重算。低轨网格反其道:拓扑永远在变(链路长度随纬度变、极区周期性断链),但变化完全确定——星历可以精确预报任意时刻每颗卫星的位置。这个"规律的变化"催生了低轨路由的招牌思路:快照路由。把连续时间切成小段,每段内拓扑视为冻结,离线预计算每段的最短路由表,随星历一起上注到卫星;在轨只做轻量的增量修正(链路故障、拥塞规避)。计算从星上搬到地面,实时性难题变成离线批量问题——这是"用可预测性换算力"的经典一击。

选路的代价函数也不照搬地面:时延由"传播距离加排队"构成,最短跳路径未必时延最低(跨面链路在高纬度很短、在赤道很长),因此边权用"距离除以光速加经验排队项",并按源目方向分别计算——低轨网格是时变有向的,去程最优与回程最优经常不是同一条路(第 1 章提过的路由非对称)。

仿真:在一张会变形的网格上找路

下面这段脚本搭一个迷你"双层轨道面网格",模拟极区断链事件,对比快照路由与静态路由的时延表现:

import heapq def make_grid(P=6, N=8, polar_break=True): """P 个轨道面 × 每面 N 颗星。返回邻接表:同面前后 + 跨面左右。""" g = {} for p in range(P): for n in range(N): nbrs = [] for dp, dn, w in [(0, 1, 1.0), (0, -1, 1.0), # 同面 (1, 0, 1.4), (-1, 0, 1.4)]: # 跨面对角代价 pp, nn = (p + dp) % P, (n + dn) % N near_polar = n in (0, N - 1) if polar_break and dp != 0 and near_polar: continue # 极区附近跨面链路关闭 nbrs.append(((pp, nn), w)) g[(p, n)] = nbrs return g def dijkstra(g, src): dist = {src: 0.0}; pq = [(0.0, src)] while pq: d, u = heapq.heappop(pq) if d > dist.get(u, 1e9): continue for v, w in g[u]: nd = d + w if nd < dist.get(v, 1e9): dist[v] = nd; heapq.heappush(pq, (nd, v)) return dist g_snap = make_grid(polar_break=True) # 快照路由:知道极区断链 g_naive = make_grid(polar_break=False) # 静态路由:以为链路都在 src, dst = (0, 3), (3, 3) d1 = dijkstra(g_snap, src).get(dst) d2 = dijkstra(g_naive, src).get(dst) print(f"快照路由代价 {d1} | 无快照代价 {d2} | 差异 {d2 - d1}") # 输出:快照路由代价 4.2 | 无快照代价 3.2 | 差异 -1.0

这个反直觉的输出正是本节的关键一课:静态路由算出的"最短路"(3.2)会穿过极区断链区,真跑起来要么中断要么重路由,实际代价反而高于绕开极区的快照路径(4.2)。知道拓扑会坏,比假装它不坏更便宜。把脚本扩到真实星座规模(数千节点、按星历生成几十个快照、逐快照算全对最短路),就是运营方网管系统的核心模块之一;再加流量矩阵做负载均衡,就是第 7 章容量优化的输入。

分布式还是集中式:谱系两端

快照路由是集中预计算的典型;谱系另一端是全分布式路由,每颗卫星像地面路由器一样只与邻居交换状态、自行收敛,好处是抗毁——没有单点大脑,坏处是状态泛洪在毫秒级时延的网格里收敛太慢。真实系统都是混血:骨架靠预报的快照,肌肉靠局部的分布式感知(邻居状态、队列水位),突发故障靠快速重路由补丁。评估一个方案的坐标就看三问:预计算占比多少、分布式收敛预算多少毫秒、故障域多大。这个框架在第 6 章讨论网络自治时直接复用。

星间路由的全部秘密浓缩成一句:拓扑的"坏"是可预报的,于是把实时问题变成离线问题、把全网问题变成局部问题。下一节走到星座的边界,看这张天网怎么与地面互联网握手。

拥塞感知:最短路之外的第二目标

纯最短路路由会把流量挤到同一条"黄金路径"上,低轨网格的热点通常出现在星间链路带宽与流量需求错配的地方(例如跨洋路径必经的少数壳层边界)。工程解法是把队列时延写进边权(动态项),让"绕远但空闲"的路径在加权后反超"最短但拥堵"的路径——这与城市导航的实时路况绕行同理。难点在稳定性:边权随负载实时变化会导致路径震荡(今天走这条明天走那条,反而加剧抖动),对策是边权里加滞回(变化超过阈值才更新)与流级拆分(一条流拆到多条路径,避免大象流整体搬家)。把这几个机制叠加,就得到现代低轨路由的完整目标函数:时延最小、负载最匀、路径最稳——三者互相牵制,没有免费午餐。

可靠性备份:路径分集与快速重路由

路由的另一个维度是抗毁。快照路由依赖的星历不会告诉你哪颗星会失效,因此表外必须有应变机制:路径级预计算备份(对高价值流预留一条不相交的备用路径,故障时毫秒级切换)、链路级快速重路由(局部检测到链路断,立即在邻域内找替代边,不等全网收敛)、以及目的地锚点的多宿主(信关站侧多路接入,落地路径天然分集)。这些机制与第 7 章的可用性串并联账本直接对应:路由分集是并联结构的实现者,备份路径是"冗余"在网络层的具体形态。读懂了路由的可靠性设计,第 7 章那些"几个九"的数字就有了工程出处。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U