rpki/specs/10_slurm.md
2026-04-01 16:24:01 +08:00

4.6 KiB
Raw Blame History

10. SLURMSimplified Local Internet Number Resource Management with the RPKI

10.1 目标与范围

SLURM 用于让 RPRelying Party在本地对上游 RPKI 验证结果做“过滤”和“补充断言”,而不修改上游发布对象。

本文档基于:

  • RFC 8416SLURM v1ROA/BGPsec
  • draft-ietf-sidrops-aspa-slurm-04SLURM v2新增 ASPA

10.2 版本与顶层结构

10.2.1 SLURM v1RFC 8416

slurmVersion 必须为 1,且顶层 JSON 对象必须包含且仅包含以下成员:

  • slurmVersion
  • validationOutputFilters(必须包含 prefixFiltersbgpsecFilters
  • locallyAddedAssertions(必须包含 prefixAssertionsbgpsecAssertions

空策略示例:

{
  "slurmVersion": 1,
  "validationOutputFilters": {
    "prefixFilters": [],
    "bgpsecFilters": []
  },
  "locallyAddedAssertions": {
    "prefixAssertions": [],
    "bgpsecAssertions": []
  }
}

10.2.2 SLURM v2draft-04

slurmVersion 必须为 2,在 v1 基础上扩展 ASPA 两类成员:

  • validationOutputFilters.aspaFilters
  • locallyAddedAssertions.aspaAssertions

空策略示例:

{
  "slurmVersion": 2,
  "validationOutputFilters": {
    "prefixFilters": [],
    "bgpsecFilters": [],
    "aspaFilters": []
  },
  "locallyAddedAssertions": {
    "prefixAssertions": [],
    "bgpsecAssertions": [],
    "aspaAssertions": []
  }
}

10.3 字段规范RFC 8416

10.3.1 prefixFilters

数组元素每项:

  • 必须至少包含一个:prefixasn
  • 可选:comment

匹配规则:

  • 若配置了 prefix匹配“被该前缀覆盖encompassed”的 VRP 前缀
  • 若配置了 asn:匹配该 ASN
  • 同时配置时:两者都要匹配

10.3.2 bgpsecFilters

数组元素每项:

  • 必须至少包含一个:asnSKI
  • 可选:comment

匹配规则:

  • asn/SKI 单独或联合匹配 Router KeyBGPsec

10.3.3 prefixAssertions

数组元素每项:

  • 必须:prefixasn
  • 可选:maxPrefixLengthcomment

约束:

  • 若给出 maxPrefixLength,应满足 prefix 长度 <= maxPrefixLength <= 地址位宽(IPv4=32, IPv6=128)

10.3.4 bgpsecAssertions

数组元素每项:

  • 必须:asnSKIrouterPublicKey
  • 可选:comment

10.4 ASPA 扩展draft-ietf-sidrops-aspa-slurm-04

10.4.1 aspaFilters

数组元素每项:

  • 必须:customerAsn
  • 可选:comment

匹配规则:

  • 当 VAPValidated ASPA PayloadcustomerAsn 等于过滤器 customerAsn 时命中并移除。

10.4.2 aspaAssertions

数组元素每项:

  • 必须:customerAsn
  • 必须:providerAsnsASN 数组)
  • 可选:comment

关键约束draft-04

  • customerAsn 不得出现在 providerAsns
  • providerAsns 必须按升序排列
  • providerAsns 里的 ASN 必须唯一(无重复)

语义补充draft-04

  • aspaAssertions 仅用于“新增断言”,不构成隐式过滤(不会自动替代 aspaFilters)。
  • 在 RTRv2 输出阶段,新增的 ASPA 断言应加入 ASPA PDU 集合,并做去重。

10.5 应用语义RFC 8416 Section 4

10.5.1 原子性

SLURM 应用必须是原子的:

  • 要么完全不生效(等同未使用 SLURM
  • 要么完整按当前 SLURM 配置生效

10.5.2 处理顺序

在同一次计算中:

  1. 先执行 validationOutputFilters(移除匹配验证结果)
  2. 再追加 locallyAddedAssertions

10.5.3 多文件

实现可以支持多个 SLURM 文件并行使用(取并集),但在启用前应检查断言重叠冲突;若存在冲突,整组文件应被拒绝。

10.6 最小可用示例SLURM v2

{
  "slurmVersion": 2,
  "validationOutputFilters": {
    "prefixFilters": [
      {
        "prefix": "203.0.113.0/24",
        "comment": "Filter a broken VRP from upstream"
      }
    ],
    "bgpsecFilters": [],
    "aspaFilters": [
      {
        "customerAsn": 64496,
        "comment": "Filter one customer ASPA"
      }
    ]
  },
  "locallyAddedAssertions": {
    "prefixAssertions": [
      {
        "asn": 64496,
        "prefix": "203.0.113.0/24",
        "maxPrefixLength": 24,
        "comment": "Local business exception"
      }
    ],
    "bgpsecAssertions": [],
    "aspaAssertions": [
      {
        "customerAsn": 64496,
        "providerAsns": [64497, 64498],
        "comment": "Local ASPA assertion"
      }
    ]
  }
}

10.7 参考文献