AI摘要
本文介绍了如何使用图论来表达传输网络资源关系,包括网络天生是图、多层映射和算法丰富等优势。文章详细阐述了基本建模、多层图与特殊图形、典型业务场景对应的图算法、最小可行数据模型、查询/编排示例、约束建模、故障与变更的“时态图”实践、实施落地建议以及从0到1的落地步骤。通过这些内容,读者可以了解如何将图论应用于传输网络资源关系,并实现具体的建模和算法应用。
好的,咱们把“用图论表达传输网络资源关系”这件事讲清楚、讲落地。下面内容既讲概念,也给出可直接落库建模与算法应用的思路。
1. 为什么用“图”
- 网络天生是图:节点(站点、设备、端口…)+ 边(链路、跳线、光纤对…),天然适配图结构。
- 多层映射:物理层(管道/光缆/纤芯/熔接)→ 光层(波长/OTN 时隙)→ 二层(VLAN/QinQ/LAG)→ MPLS(LSP/TE Tunnel/VRF)→ 三层(IP 链路/邻接/BGP 会话)。图可以用“跨层映射边”把它们绑在一起。
- 算法丰富:最短路、带约束最短路(CSPF)、k 条无交路径、最大流/最小割、图着色(波长/标签分配)、连通度/SRLG 评估、故障传播/根因定位等。
2. 基本建模(Property Graph / 属性图)
2.1 节点(Vertex)常见类型
- 位置类:
Site
(站点/机房)、Room
、Rack
- 物理类:
Device
(设备)、Board
(板卡)、Port
(端口)、ODF
(配线架)、PatchPanel
、Cable
(光缆)、Fiber
(纤芯)、Splice
(熔接点)、Duct
(管道)、ConduitHole
(管孔)、PoleRoute
(杆路) - 逻辑类:
EthernetLink
、LAG
、VLAN
/QinQ
、MPLS_LSP
/TE_Tunnel
、PW
、VRF
、IP_Interface
、BGP_Session
、Subnet
- 业务/服务类:
Service
(E-Line/E-LAN/L3VPN/专线)
2.2 边(Edge)及语义
- 连接:
CONNECTS_TO
(端口↔端口、纤芯↔纤芯、设备↔设备) - 承载/映射:
REALIZED_BY
(逻辑资源由下层资源承载),CARRIES
(链路承载业务流/标签) - 从属/包含:
LOCATED_IN
(设备→机柜→机房)、HOSTS
(设备→端口/板卡)、CONTAINS
(光缆→纤芯) - 运维关系:
PROTECTS
(保护关系1+1/1:1)、DEPENDS_ON
(依赖链,用于故障传播) - 施工关系:
PATCHED_TO
(跳纤/配线)、SPLICED_WITH
(熔接) - 资源组:
MEMBER_OF
(SRLG/冗余组/集群)
2.3 关键属性(建议统一单位/枚举)
- 边:
capacity
(带宽/波特率)、metric
(开销/时延/抖动/丢包)、cost
(租费/使用费)、srlg_id
(共享风险链路组)、admin_status/oper_status
、avail_bw
、fiber_type
、attenuation
、length_km
、latency_ms
- 节点:
vendor/model/slot/port_type
、geo
(经纬度)、site_code
、ownership
(自有/租用)、state
(in-service/maintenance/reserved) - 时间有效性:所有节点/边建议带
valid_from/valid_to
或版本号,支持“时态图”。
3. 多层图与特殊图形
- 多层/多分片图(Layered Graph):L0(管道/光缆)→ L1(纤芯/波长/OTN)→ L2(VLAN/LAG)→ L2.5(MPLS LSP/TE)→ L3(IP 邻接)。用
REALIZED_BY
把上层对象映射到下层路径(不一定一条边,可能是多跳子路径)。 - 多重图(Multigraph):站点间可有多条并行链路(不同承载/不同运营商)。
- 双分图(Bipartite):端口↔跳线/ODF/面板端口,做端口匹配/工单生成很直观。
- 线图(Line Graph):把“边”变“点”,用于做光路占用/碰撞检测。
- 超图/区间图:光谱/频隙/时隙分配可近似用区间图着色。
4. 典型业务场景 → 对应图算法
专线/TE 选路(含约束)
- 输入:A→Z,速率=10G,时延≤5ms,需SRLG 互斥 + 链路不相交备路。
算法:
- 过滤不满足
avail_bw/latency/admin_status
的边; - 用 CSPF 找主路(比如 Dijkstra 上加多维约束);
- 用 Suurballe/Disjoint Path 找与主路链路/节点/ SRLG 不相交的备路;
- 若需多层落地:上层 LSP 的每一跳以
REALIZED_BY
映射到下层(纤芯/波长)连续可用段;波长/标签分配可用图着色或“最小可用号段”策略。
- 过滤不满足
容量规划与瓶颈定位
- 全网多业务视为多货流(Multi-Commodity Flow),做近似求解或滚动仿真;
- 最小割≈最小扩容代价的瓶颈切面;边介数/负载中心性辅助识别关键链路。
故障影响圈 & 根因定位
- 以
DEPENDS_ON/REALIZED_BY
构建有向依赖图; - 边/点故障后,对下游拓扑做可达性/拓扑排序传播,叠加概率(Bayesian/评分)做根因排序;
- SRLG 触发:同组资源一起置障,快速得出受影响的 LSP/Service 集。
- 以
工单与配线指引
- 选路结果在 L0/L1 展开为具体端口—ODF—跳纤—熔接的序列(path decomposition),生成施工清单。
合规/健壮性校验
- k-连通度检查(站点/设备/链路),冗余组完整性校验,策略约束(不得跨某地区/不得用某运营商资源)= 边黑名单过滤。
5. 最小可行数据模型(示例字段)
Site(site_id, name, geo, owner, level, admin_status)
Device(dev_id, site_id, vendor, model, role, admin_status)
Port(port_id, dev_id, type, speed, admin_status, used_by)
Cable(cable_id, from_site, to_site, fiber_count, length_km, owner, srlg_id)
Fiber(fiber_id, cable_id, index, attenuation, admin_status)
Link(link_id, a_port, z_port, capacity, metric, srlg_id, latency_ms, admin_status, avail_bw)
LSP(lsp_id, src_dev, dst_dev, class, bw, primary_path, protect_path, policy_tags)
Service(svc_id, type, a_uni, z_uni, bw, latency_sla, uses_lsp)
- 关系表可落成边表:
Edge(src_id, src_type, dst_id, dst_type, rel_type, attrs_json, valid_from, valid_to)
6. 查询/编排示例(Cypher 伪代码)
// ① 过滤可用链路子图(带宽/时延/状态)
MATCH (a:Port)-[e:CONNECTS_TO]->(b:Port)
WHERE e.avail_bw >= 10 AND e.admin_status='up' AND e.latency_ms <= 1.0
WITH collect(e) AS eligible_edges
// ② 在可用子图中求 A→Z 的 k 条不相交路径(伪表达)
CALL kDisjointPaths('Port', 'CONNECTS_TO',
{src: 'A:GE0/0/1', dst: 'Z:GE0/0/1', k: 2, disjoint:'edge+SRLG'}) YIELD paths
// ③ 为 LSP 选择标签/波长(简化:优先最小可用号)
UNWIND paths[0] AS hop
MATCH (hop)-[r:REALIZED_BY]->(l1:Wavelength)
WHERE l1.is_free = true
WITH min(l1.channel) AS chosen_wl
CREATE (:LSP {lsp_id:'LSP-0001', bw:10, primary_path:paths[0], wavelength:chosen_wl});
7. 约束建模(把“专业规则”变成可计算)
- SRLG:
srlg_id
放在光缆段/管道/桥梁等共享风险资源上,路径计算时做“SRLG 不相交”约束。 - SLA/策略:将“不得越省/不得走第三方/必须环路保护”等写成边/节点属性或标签,计算前做策略过滤。
- 资源占用:所有占用写入
reservation
(带时间窗口),支持时态可用性与回收。 - 拓扑完整性:端口类型/速率匹配、单纤/双纤对称、A/Z 方向延迟对齐、ODF 端口余量等,落为检查器。
8. 故障与变更的“时态图”实践
- 任何新增/下线/断开都写成事件,对节点/边打版本或
valid_from/valid_to
; - 报警接入(SNMP/Telemetry)映射到图节点/边,触发依赖图传播;
- 变更工单执行前,用影子图(what-if)做影响分析;执行后再合并到主图。
9. 实施落地建议
- 存储:小规模可用关系型+边表;中大型建议图数据库(Neo4j/Cosmos Gremlin/JanusGraph)或在计算层用 NetworkX/GraphX。
- 命名与ID:建立全域唯一
resource_id
+ 规范化编码(Site/Device/Port/Cable/Fiber)。 - 分区与索引:按地域+层级分区,边上普建索引(
srlg_id
,admin_status
,avail_bw
);预计算站点-站点候选路径缓存。 - 接口:南向对接 NMS/EMS/配线台账/资产台账;北向开放 REST/GraphQL/Cypher/Gremlin 查询;
- 可视化:分层显示、路径展开到具体配线/熔接;工单联动(一步生成端子-端子操作序列)。
10. 从 0 到 1 的落地步骤(MVP)
- 定义节点/边类型与最小字段(见 §5)。
- 先导入 L0 物理(站点/设备/端口/光缆/纤芯/ODF/熔接/跳纤)。
- 构建 L1/L2/L2.5/L3,用
REALIZED_BY
连接上下层。 - 实现 CSPF+k 不相交 选路,加入 SRLG 与 SLA 过滤。
- 增加 占用与回收 的一致性规则(并发锁/事务)。
- 接入告警,做 根因定位/影响圈。
- 把“路径→工单”自动化,闭环到运维。