187 lines
4.6 KiB
Markdown
187 lines
4.6 KiB
Markdown
# 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 对象必须包含且仅包含以下成员:
|
||
- `slurmVersion`
|
||
- `validationOutputFilters`(必须包含 `prefixFilters`、`bgpsecFilters`)
|
||
- `locallyAddedAssertions`(必须包含 `prefixAssertions`、`bgpsecAssertions`)
|
||
|
||
空策略示例:
|
||
|
||
```json
|
||
{
|
||
"slurmVersion": 1,
|
||
"validationOutputFilters": {
|
||
"prefixFilters": [],
|
||
"bgpsecFilters": []
|
||
},
|
||
"locallyAddedAssertions": {
|
||
"prefixAssertions": [],
|
||
"bgpsecAssertions": []
|
||
}
|
||
}
|
||
```
|
||
|
||
### 10.2.2 SLURM v2(draft-04)
|
||
|
||
`slurmVersion` 必须为 `2`,在 v1 基础上扩展 ASPA 两类成员:
|
||
- `validationOutputFilters.aspaFilters`
|
||
- `locallyAddedAssertions.aspaAssertions`
|
||
|
||
空策略示例:
|
||
|
||
```json
|
||
{
|
||
"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 处理顺序
|
||
|
||
在同一次计算中:
|
||
1. 先执行 `validationOutputFilters`(移除匹配验证结果)
|
||
2. 再追加 `locallyAddedAssertions`
|
||
|
||
### 10.5.3 多文件
|
||
|
||
实现可以支持多个 SLURM 文件并行使用(取并集),但在启用前应检查断言重叠冲突;若存在冲突,整组文件应被拒绝。
|
||
|
||
## 10.6 最小可用示例(SLURM v2)
|
||
|
||
```json
|
||
{
|
||
"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
|