4.6 KiB
4.6 KiB
10. SLURM(Simplified Local Internet Number Resource Management with the RPKI)
10.1 目标与范围
SLURM 用于让 RP(Relying Party)在本地对上游 RPKI 验证结果做“过滤”和“补充断言”,而不修改上游发布对象。
本文档基于:
- RFC 8416(SLURM v1,ROA/BGPsec)
- draft-ietf-sidrops-aspa-slurm-04(SLURM v2,新增 ASPA)
10.2 版本与顶层结构
10.2.1 SLURM v1(RFC 8416)
slurmVersion 必须为 1,且顶层 JSON 对象必须包含且仅包含以下成员:
slurmVersionvalidationOutputFilters(必须包含prefixFilters、bgpsecFilters)locallyAddedAssertions(必须包含prefixAssertions、bgpsecAssertions)
空策略示例:
{
"slurmVersion": 1,
"validationOutputFilters": {
"prefixFilters": [],
"bgpsecFilters": []
},
"locallyAddedAssertions": {
"prefixAssertions": [],
"bgpsecAssertions": []
}
}
10.2.2 SLURM v2(draft-04)
slurmVersion 必须为 2,在 v1 基础上扩展 ASPA 两类成员:
validationOutputFilters.aspaFilterslocallyAddedAssertions.aspaAssertions
空策略示例:
{
"slurmVersion": 2,
"validationOutputFilters": {
"prefixFilters": [],
"bgpsecFilters": [],
"aspaFilters": []
},
"locallyAddedAssertions": {
"prefixAssertions": [],
"bgpsecAssertions": [],
"aspaAssertions": []
}
}
10.3 字段规范(RFC 8416)
10.3.1 prefixFilters
数组元素每项:
- 必须至少包含一个:
prefix或asn - 可选:
comment
匹配规则:
- 若配置了
prefix:匹配“被该前缀覆盖(encompassed)”的 VRP 前缀 - 若配置了
asn:匹配该 ASN - 同时配置时:两者都要匹配
10.3.2 bgpsecFilters
数组元素每项:
- 必须至少包含一个:
asn或SKI - 可选:
comment
匹配规则:
- 按
asn/SKI单独或联合匹配 Router Key(BGPsec)
10.3.3 prefixAssertions
数组元素每项:
- 必须:
prefix、asn - 可选:
maxPrefixLength、comment
约束:
- 若给出
maxPrefixLength,应满足prefix 长度 <= maxPrefixLength <= 地址位宽(IPv4=32, IPv6=128)
10.3.4 bgpsecAssertions
数组元素每项:
- 必须:
asn、SKI、routerPublicKey - 可选:
comment
10.4 ASPA 扩展(draft-ietf-sidrops-aspa-slurm-04)
10.4.1 aspaFilters
数组元素每项:
- 必须:
customerAsn - 可选:
comment
匹配规则:
- 当 VAP(Validated ASPA Payload)的
customerAsn等于过滤器customerAsn时命中并移除。
10.4.2 aspaAssertions
数组元素每项:
- 必须:
customerAsn - 必须:
providerAsns(ASN 数组) - 可选:
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 处理顺序
在同一次计算中:
- 先执行
validationOutputFilters(移除匹配验证结果) - 再追加
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 参考文献
- RFC 8416: https://www.rfc-editor.org/rfc/rfc8416.html
- draft-ietf-sidrops-aspa-slurm-04: https://www.ietf.org/archive/id/draft-ietf-sidrops-aspa-slurm-04.html