波长分配问题:RWA 的定义与约束

RWA,全称是 Routing and Wavelength Assignment。说白了,就是给光信号找一条路,再给它分一个颜色(波长)。

我刚开始接触这个领域时,觉得这不就是个路径规划加资源分配嘛,能有多复杂?后来在现网里栽过跟头才明白——RWA 是光网络的大脑,搞不好,整个网络就乱套了。

RWA 问题的核心定义

RWA 要解决两件事:

  • 路由(Routing):从源节点到宿节点,找一条物理路径。
  • 波长分配(Wavelength Assignment):在这条路径的每一段光纤上,分配同一个波长。

这两个步骤是绑在一起的。你不能先定死路由再随便挑波长,那样很容易撞车。我习惯的做法是——把路由和波长放在一个框架里同时考虑,虽然计算量大了点,但结果靠谱得多。

一句话总结:RWA = 找路 + 选颜色,两个动作必须协同。

两大硬约束:波长连续性与冲突避免

做 RWA 绕不开两个约束条件。嗯,这里要重点讲,因为我在项目中见过太多人在这上面翻车。

1. 波长连续性约束

什么意思?一条光通路从起点到终点,经过的所有光纤段上,必须使用同一个波长。

举个例子:从北京到上海,中间经过济南、南京两个中继站。你在北京到济南这段用了 λ1,那么济南到南京、南京到上海也必须用 λ1。不能中途换波长。

为什么会有这个约束?因为早期光网络没有波长转换器。信号进来是什么波长,出去还是什么波长。虽然现在有 OEO 转换了,但成本高、时延大,实际部署中能不用就不用。

我的经验:在规划阶段,尽量假设没有波长转换器。这样设计出来的方案更鲁棒。如果后期确实需要,再在关键节点加 OEO 也不迟。

2. 冲突避免约束

这个好理解——同一根光纤上,同一时刻,同一个波长不能被两条光通路占用。

你想想看,如果两条业务都在 λ1 上跑,到了同一个光放大器那里,信号就打架了。轻则误码率飙升,重则直接断业务。

冲突避免有两种场景:

  • 链路冲突:两条光通路共享同一段光纤,不能使用相同波长。
  • 节点冲突:两条光通路在同一个节点交叉,如果波长相同,也会产生干扰。

避坑指南:我曾经在某个骨干网项目中,只检查了链路冲突,忽略了节点冲突。结果业务割接后,某个 OXC 节点内部出现波长串扰,查了两天才定位到问题。从那以后,我要求团队必须做全路径的波长冲突检查。

图论建模:把 RWA 变成数学问题

光网络工程师的日常工作,其实就是在跟图打交道。把物理网络抽象成图,RWA 就变成了图论问题。

基本建模方法

我通常这样建模:

  • 节点:代表 OXC、ROADM 或业务接入点。
  • 边:代表光纤链路,每条边附带一个可用波长集合。
  • 权重:可以是距离、时延、跳数或代价。

这样一来,找路由就是找最短路径,波长分配就是给路径上的每条边分配一个公共颜色。

波长分层图模型

这是我最喜欢用的模型。思路很简单:把每个波长当成一层,每一层都是一个完整的网络拓扑。

假设网络有 80 个波长,那就复制 80 份拓扑图。每层只允许使用对应的波长。找路的时候,在每一层里独立跑最短路径算法。如果某一层能找到路径,那就同时解决了路由和波长分配。

优点:路由和波长分配一步到位,天然满足波长连续性约束。

缺点:内存开销大,80 个波长就要维护 80 张图。

辅助图模型

如果觉得分层图太费资源,可以用辅助图。把所有可能的路径预计算出来,每条路径作为一个节点。如果两条路径共享光纤链路,就在它们之间连一条边。然后在这个辅助图上做波长分配。

这种方法适合网络拓扑相对固定的场景。我在某个城域网项目中用过,效果不错,计算速度比分层图快了一个数量级。

RWA 图论建模知识结构 RWA 问题 路由 (Routing) 波长分配 (WA) 约束条件 最短路径 K 最短路径 首次命中 最少使用 波长连续性 冲突避免 分层图模型 辅助图模型 图论建模将物理网络转化为数学问题,是 RWA 算法设计的基础 分层图适合小规模网络,辅助图适合拓扑固定的场景

RWA 问题的分类

根据业务到达方式,RWA 可以分为两类。我分别说说它们的区别和适用场景。

类型 特点 适用场景 我常用的算法
静态 RWA 所有业务提前已知,一次性规划 网络扩容、年度规划 ILP(整数线性规划)、启发式算法
动态 RWA 业务随机到达,实时分配 日常业务开通、故障恢复 首次命中 + 最短路径

静态 RWA 追求全局最优,但计算时间长。动态 RWA 要求快速响应,往往只能做到局部最优。我在实际项目中,通常把静态 RWA 的结果作为基线,动态 RWA 在基线基础上做微调。

一个小技巧:做动态 RWA 时,别每次都重新算全局。维护一个可用波长表,业务来时只查表,速度能快 10 倍以上。

RWA 的求解思路

RWA 是 NP-hard 问题,别指望能找到完美解。我一般分三步走:

  1. 路由预计算:用 K 最短路径算法,给每个节点对生成 3-5 条候选路径。
  2. 波长排序:把可用波长按优先级排序,比如按使用频率从低到高。
  3. 冲突检测:在候选路径上依次尝试分配波长,遇到冲突就换下一个。

这个方法不保证最优,但能在秒级给出可用解。对于大多数现网场景,够用了。

注意:K 值不是越大越好。K=3 通常就能覆盖 90% 以上的场景。K 太大反而会引入大量低质量路径,拖慢计算速度。

小结

RWA 是光网络规划的核心问题。波长连续性和冲突避免是两条硬杠杠,谁也绕不开。图论建模给了我们一套数学工具,把物理问题变成可计算的模型。

我个人觉得,理解 RWA 的关键不在于记住多少算法,而在于建立一种直觉——看到一张网络拓扑,就能大致判断出哪些路径容易分配波长,哪些波长容易产生冲突。这种直觉,是在一次次排障和优化中慢慢养成的。